2
0
Эх сурвалжийг харах

Try to improve script

git-svn-id: trunk@19832 -
pierre 13 жил өмнө
parent
commit
37a7332b81

+ 75 - 13
packages/gdbint/gen-gdblib-inc.sh

@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 #!/usr/bin/env bash
 
 
-
-if [ "$1" == "--help" ]; then
+usage ()
+{
   echo "Script used to easily create collection of libraries needed"
   echo "Script used to easily create collection of libraries needed"
   echo "to generate a Free Pascal IDE with debugger support."
   echo "to generate a Free Pascal IDE with debugger support."
   echo "Usage: Copy this script to the directory where you just compile"
   echo "Usage: Copy this script to the directory where you just compile"
@@ -11,14 +11,35 @@ if [ "$1" == "--help" ]; then
   echo "with a single parameter specifying to which directory the libraries"
   echo "with a single parameter specifying to which directory the libraries"
   echo "should be copied."
   echo "should be copied."
   echo "Possible parameters for this script:"
   echo "Possible parameters for this script:"
+  echo "--forcestatic, to convert all -lname into $LINKLIB libname.a"
   echo "implicitlibs=\"space separated list if system librairies used\""
   echo "implicitlibs=\"space separated list if system librairies used\""
+}
+
+
+if [ "$1" == "--help" ]; then
+  usage
+  exit
+fi
 
 
+if [ "$1" == "--forcestatic" ]; then
+  echo "Using only static libraries in gdblib.inc"
+  forcestatic=1
+  shift
+else
+  forcestatic=0
 fi
 fi
 
 
 if [ "${1#implicitlibs=}" != "$1" ]; then
 if [ "${1#implicitlibs=}" != "$1" ]; then
   implicitlibs=${1#implicitlibs=}
   implicitlibs=${1#implicitlibs=}
   echo "Also adding implicit libs \"$implicitlibs\""
   echo "Also adding implicit libs \"$implicitlibs\""
+  shift
+fi
+
+if [ "$1" != "" ]; then
+  echo "Unrecognized option \"$1\""
+  usage
 fi
 fi
+
 if [ "${PATHEXT}" != "" ]; then
 if [ "${PATHEXT}" != "" ]; then
   EXEEXT=.exe
   EXEEXT=.exe
   if [ "${DJDIR}" != "" ]; then
   if [ "${DJDIR}" != "" ]; then
@@ -31,6 +52,11 @@ else
   libdir=/lib
   libdir=/lib
 fi
 fi
 
 
+if [ "$OSTYPE" == "msys" ]; then
+  echo "MSYS system detected"
+  in_msys=1
+fi
+
 echo "Deleting gdb${EXEEXT} to force recompile"
 echo "Deleting gdb${EXEEXT} to force recompile"
 rm -f gdb${EXEEXT}
 rm -f gdb${EXEEXT}
 echo "Rebuilding gdb${EXEEXT}"
 echo "Rebuilding gdb${EXEEXT}"
@@ -77,7 +103,29 @@ gcccompiler=`sed -n "s:\([A-Za-z0-9_-]*gcc\) .*:\1:p" comp-cmd.log`
 if [ "$gcccompiler" != "" ]; then
 if [ "$gcccompiler" != "" ]; then
   gcclibs=`$gcccompiler -print-search-dirs | sed -n "s#.*libraries: =\(.*\)#\1#p" `
   gcclibs=`$gcccompiler -print-search-dirs | sed -n "s#.*libraries: =\(.*\)#\1#p" `
   if [ "$gcclibs" != "" ]; then
   if [ "$gcclibs" != "" ]; then
-    libdir=${gcclibs//:/ }
+    if [ $in_msys -eq 1 ]; then
+      # If we are on msys, gcc is mingw, so that it uses c:/dir
+      # while find is an msys utility that needs /c/dir path 
+      # we do this conversion below
+      for let in a b c d e f g h i j k l m n o p q r s t u v w x y z; do
+        gcclibs=${gcclibs//$let:/\/$let}
+      done
+      for let in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do
+        gcclibs=${gcclibs//$let:/\/$let}
+      done
+      libdir=${gcclibs//;/ }
+    else
+      # if ; is present in gcclibs,assume this is the separator instead of :
+      if [ "${gcclibs//;/ }" != "${gcclibs}" ]; then
+	if [ "${gcclibs// /_}" != "${gccclibs}" ]; then
+          # list also contains spaces, convert ' ' into '\ '
+          gcclibs=${gcclibs// /\\ }
+        fi
+        libdir=${gcclibs//;/ }
+      else
+        libdir=${gcclibs//:/ }
+      fi
+    fi
     echo "gcc libs are \"$libdir\""
     echo "gcc libs are \"$libdir\""
   fi
   fi
 fi
 fi
@@ -102,7 +150,7 @@ BEGIN {
   print "  exit"
   print "  exit"
   print "fi"
   print "fi"
   print "# Copy gdblib.inc file"
   print "# Copy gdblib.inc file"
-  print "cp gdblib.inc ${destdir}"
+  print "cp -p gdblib.inc ${destdir}"
 }
 }
 
 
 {
 {
@@ -110,19 +158,21 @@ BEGIN {
 
 
   for (i=1; i<=nb; i++) {
   for (i=1; i<=nb; i++) {
     if ( list[i] ~ /lib[^ ]*\.a/ ) {
     if ( list[i] ~ /lib[^ ]*\.a/ ) {
+      print "# Looking for static libs"
       staticlib = gensub (/([^ ]*)(lib[^ ]*\.a)/,"\\1\\2 ","g",list[i]);
       staticlib = gensub (/([^ ]*)(lib[^ ]*\.a)/,"\\1\\2 ","g",list[i]);
-      print "cp " staticlib " ${destdir}";
+      print "cp -p " staticlib " ${destdir}";
     }
     }
     if ( list[i] ~ /lib[^ ]*\.so/ ) {
     if ( list[i] ~ /lib[^ ]*\.so/ ) {
       dynamiclib = gensub (/([^ ]*)(lib[^ ]*\.so)/,"\\1\\2 ","g",list[i]);
       dynamiclib = gensub (/([^ ]*)(lib[^ ]*\.so)/,"\\1\\2 ","g",list[i]);
       print "echo " dynamiclib " found";
       print "echo " dynamiclib " found";
     }
     }
     if ( list[i] ~ /-l/ ) {
     if ( list[i] ~ /-l/ ) {
+      print "#Looking for shared libs"
       systemlib = gensub (/-l([^ ]*)/,"lib\\1.a ","g",list[i]);
       systemlib = gensub (/-l([^ ]*)/,"lib\\1.a ","g",list[i]);
-      print "systemlib=`find " libdir " -name " systemlib " 2> /dev/null `" ;
+      print "systemlib=`find " libdir " -name " systemlib " -print -quit 2> /dev/null `" ;
       print "if [ \"${systemlib}\" != \"\" ]; then";
       print "if [ \"${systemlib}\" != \"\" ]; then";
       print "  echo System lib found: ${systemlib}";
       print "  echo System lib found: ${systemlib}";
-      print "  cp ${systemlib} ${destdir}";
+      print "  cp -p ${systemlib} ${destdir}";
       print "else";
       print "else";
       print "  echo Library " systemlib " not found, shared library assumed";
       print "  echo Library " systemlib " not found, shared library assumed";
       print "fi";
       print "fi";
@@ -134,10 +184,10 @@ END {
   for (i=1;i<=nb; i++) {
   for (i=1;i<=nb; i++) {
     systemlib = "lib" list[i] ".a";
     systemlib = "lib" list[i] ".a";
     print "echo Adding system library " systemlib;
     print "echo Adding system library " systemlib;
-    print "systemlib=`find " libdir " -name " systemlib " 2> /dev/null `" ;
+    print "systemlib=`find " libdir " -name " systemlib " -print -quit 2> /dev/null `" ;
     print "if [ \"${systemlib}\" != \"\" ]; then";
     print "if [ \"${systemlib}\" != \"\" ]; then";
     print "  echo System lib found: ${systemlib}";
     print "  echo System lib found: ${systemlib}";
-    print "  cp ${systemlib} ${destdir}";
+    print "  cp -p ${systemlib} ${destdir}";
     print "else";
     print "else";
     print "  echo Library " systemlib " not found, shared library assumed";
     print "  echo Library " systemlib " not found, shared library assumed";
     print "fi";
     print "fi";
@@ -150,7 +200,7 @@ chmod u+x ./copy-libs.sh
 echo Creating ./gdblib.inc file
 echo Creating ./gdblib.inc file
 # Generate gdblib.inc file
 # Generate gdblib.inc file
 cat comp-cmd.log |gawk -v gdbcvs=${gdbcvs} -v implibs="${implicitlibs}" \
 cat comp-cmd.log |gawk -v gdbcvs=${gdbcvs} -v implibs="${implicitlibs}" \
-  -v gdbversion=${gdbversion} '
+  -v gdbversion=${gdbversion} -v forcestatic=${forcestatic} '
 BEGIN {
 BEGIN {
   use_mingw=0;
   use_mingw=0;
   print "{ libgdb.inc file generated by awk script }"
   print "{ libgdb.inc file generated by awk script }"
@@ -182,15 +232,27 @@ BEGIN {
     print librarypath;
     print librarypath;
   }
   }
   if ( list[i] ~ /-l/ ) {
   if ( list[i] ~ /-l/ ) {
-    systemlib = gensub (/-l([^ ]*)/,"{$LINKLIB \\1} { with -l gcc option}","g",list[i]);
-    print systemlib;
+    systemlib = gensub (/-l([^ ]*)/,"\\1","g",list[i]);
+    if (forcestatic == 1) {
+      systemlib="lib" systemlib ".a"
+    }
+    print "{$LINKLIB " systemlib "} { with -l gcc option}";
   }
   }
   }
   }
 }
 }
 END {
 END {
   nb = split (implibs,list);
   nb = split (implibs,list);
   for (i=1;i<=nb; i++) {
   for (i=1;i<=nb; i++) {
-    print "{$LINKLIB " list[i] "} { implicit library } "
+    if ( list[i] ~ /lib.*\.a/ ) {
+      lib=list[i];
+    } else {
+      if ( forcestatic == 1 ) {
+        lib="lib" list[i] ".a";
+      } else {
+        lib=list[i];
+      }
+    }
+    print "{$LINKLIB " lib "} { implicit library } "
   }
   }
   print "{$endif COMPILING_GDBINT_UNIT }"
   print "{$endif COMPILING_GDBINT_UNIT }"
   print "{$undef NotImplemented}"
   print "{$undef NotImplemented}"