mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 04:59:26 +02:00
Try to improve script
git-svn-id: trunk@19832 -
This commit is contained in:
parent
6140a41007
commit
37a7332b81
@ -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}"
|
||||
|
Loading…
Reference in New Issue
Block a user