summaryrefslogtreecommitdiff
path: root/packages/gdbint
diff options
context:
space:
mode:
authorpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-12-12 16:48:37 +0000
committerpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-12-12 16:48:37 +0000
commit5c10b08baf74a215b80e3a6c9b15e3eb8340a36c (patch)
tree91640f2f9806bffbf6834a060b7c48fd75b747ae /packages/gdbint
parent5897252c7a75f5a3cc58cc4b21701845743de383 (diff)
downloadfpc-5c10b08baf74a215b80e3a6c9b15e3eb8340a36c.tar.gz
Try to improve script
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@19832 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/gdbint')
-rwxr-xr-xpackages/gdbint/gen-gdblib-inc.sh88
1 files changed, 75 insertions, 13 deletions
diff --git a/packages/gdbint/gen-gdblib-inc.sh b/packages/gdbint/gen-gdblib-inc.sh
index 243f4ab536..6391e3a516 100755
--- a/packages/gdbint/gen-gdblib-inc.sh
+++ b/packages/gdbint/gen-gdblib-inc.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
-
-if [ "$1" == "--help" ]; then
+usage ()
+{
echo "Script used to easily create collection of libraries needed"
echo "to generate a Free Pascal IDE with debugger support."
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 "should be copied."
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\""
+}
+
+
+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
if [ "${1#implicitlibs=}" != "$1" ]; then
implicitlibs=${1#implicitlibs=}
echo "Also adding implicit libs \"$implicitlibs\""
+ shift
+fi
+
+if [ "$1" != "" ]; then
+ echo "Unrecognized option \"$1\""
+ usage
fi
+
if [ "${PATHEXT}" != "" ]; then
EXEEXT=.exe
if [ "${DJDIR}" != "" ]; then
@@ -31,6 +52,11 @@ else
libdir=/lib
fi
+if [ "$OSTYPE" == "msys" ]; then
+ echo "MSYS system detected"
+ in_msys=1
+fi
+
echo "Deleting gdb${EXEEXT} to force recompile"
rm -f 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
gcclibs=`$gcccompiler -print-search-dirs | sed -n "s#.*libraries: =\(.*\)#\1#p" `
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\""
fi
fi
@@ -102,7 +150,7 @@ BEGIN {
print " exit"
print "fi"
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++) {
if ( list[i] ~ /lib[^ ]*\.a/ ) {
+ print "# Looking for static libs"
staticlib = gensub (/([^ ]*)(lib[^ ]*\.a)/,"\\1\\2 ","g",list[i]);
- print "cp " staticlib " ${destdir}";
+ print "cp -p " staticlib " ${destdir}";
}
if ( list[i] ~ /lib[^ ]*\.so/ ) {
dynamiclib = gensub (/([^ ]*)(lib[^ ]*\.so)/,"\\1\\2 ","g",list[i]);
print "echo " dynamiclib " found";
}
if ( list[i] ~ /-l/ ) {
+ print "#Looking for shared libs"
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 " echo System lib found: ${systemlib}";
- print " cp ${systemlib} ${destdir}";
+ print " cp -p ${systemlib} ${destdir}";
print "else";
print " echo Library " systemlib " not found, shared library assumed";
print "fi";
@@ -134,10 +184,10 @@ END {
for (i=1;i<=nb; i++) {
systemlib = "lib" list[i] ".a";
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 " echo System lib found: ${systemlib}";
- print " cp ${systemlib} ${destdir}";
+ print " cp -p ${systemlib} ${destdir}";
print "else";
print " echo Library " systemlib " not found, shared library assumed";
print "fi";
@@ -150,7 +200,7 @@ chmod u+x ./copy-libs.sh
echo Creating ./gdblib.inc file
# Generate gdblib.inc file
cat comp-cmd.log |gawk -v gdbcvs=${gdbcvs} -v implibs="${implicitlibs}" \
- -v gdbversion=${gdbversion} '
+ -v gdbversion=${gdbversion} -v forcestatic=${forcestatic} '
BEGIN {
use_mingw=0;
print "{ libgdb.inc file generated by awk script }"
@@ -182,15 +232,27 @@ BEGIN {
print librarypath;
}
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 {
nb = split (implibs,list);
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 "{$undef NotImplemented}"