summaryrefslogtreecommitdiff
path: root/packages/gdbint
diff options
context:
space:
mode:
authorpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-11-11 21:41:24 +0000
committerpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-11-11 21:41:24 +0000
commit15882e2f1ad9b8879c9d92ea35d4e8edc65f3ff3 (patch)
tree5e3067b30c7ac3983deaad4c31ff63c9fb0d35ee /packages/gdbint
parent72d794de73cdc35dcbf5af5ea4cf06fc71619c49 (diff)
downloadfpc-15882e2f1ad9b8879c9d92ea35d4e8edc65f3ff3.tar.gz
+ Script to generate libgdb directory
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@14149 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/gdbint')
-rwxr-xr-xpackages/gdbint/gen-gdblib-inc.sh111
1 files changed, 111 insertions, 0 deletions
diff --git a/packages/gdbint/gen-gdblib-inc.sh b/packages/gdbint/gen-gdblib-inc.sh
new file mode 100755
index 0000000000..69de77b001
--- /dev/null
+++ b/packages/gdbint/gen-gdblib-inc.sh
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+if [ "$1" != "" ]; then
+ destdir=$1
+fi
+if [ "$PATHEXT" != "" ]; then
+ EXEEXT=.exe
+else
+ EXEEXT=
+fi
+rm -f gdb${EXEEXT}
+make | tee make.log
+
+gdb_full_version=`sed -n "s:.*version.*\"\(.*\)\".*:\1:p" version.c`
+gdb_version1=`sed -n "s:.*version.*\"\([0-9]*\)\.\([0-9]*\).*:\1:p" version.c`
+gdb_version2=`sed -n "s:.*version.*\"\([0-9]*\)\.\([0-9]*\).*:\2:p" version.c`
+gdb_version=`sed -n "s:.*version.*\"\([0-9]*\)\.\([0-9]*\).*:\1.\2:p" version.c`
+
+echo found full version is ${gdb_full_version}
+echo found version is ${gdb_version}
+if [ ${gdb_version2} -lt 10 ]; then
+ gdbversion=${gdb_version1}0${gdb_version2}
+else
+ gdbversion=${gdb_version1}${gdb_version2}
+fi
+if [ "${destdir}" == "" ]; then
+ destdir=./libgdb
+fi
+
+if ! [ -d ${destdir} ]; then
+ mkdir ${destdir}
+fi
+
+cat make.log | gawk '
+BEGIN {
+doprint=0
+}
+
+/gcc / { doprint=1; }
+
+{
+if ( doprint == 1 ) {
+ print $0
+}
+}
+
+! /\\$/ { doprint=0; }
+' | tee comp-cmd.log
+# Try to locate all libraries
+echo Creating ./copy-libs.sh script
+cat comp-cmd.log |gawk -v destdir=${destdir} '
+BEGIN {
+ print "#!/bin/bash"
+ print "# copy-libs.sh generated by awk script"
+ print "cp gdblib.inc " destdir
+}
+
+{
+ nb = split ($0,list);
+
+ for (i=1; i<=nb; i++) {
+ if ( list[i] ~ /lib[^ ]*\.a/ ) {
+ libs = gensub (/([^ ]*)(lib[^ ]*\.a)/,"\\1\\2 ","g",list[i]);
+ print "cp " libs destdir;
+ }
+ if ( list[i] ~ /-l/ ) {
+ systemlib = gensub (/-l([^ ]*)/,"lib\\1.a ","g",list[i]);
+ print "systemlib=`find /lib -name " systemlib "`" ;
+ print "if [ \"${systemlib}\" != \"\" ]; then";
+ print "echo System lib found: ${systemlib}";
+ print "cp ${systemlib} " destdir;
+ print "else";
+ print "echo Library " systemlib " not found";
+ print "fi";
+ }
+ }
+}
+' | tee copy-libs.sh
+chmod u+x ./copy-libs.sh
+# For later
+
+echo Creating ./gdblib.inc file
+# Generate gdblib.inc file
+cat comp-cmd.log |gawk -v destdir=${destdir} -v gdbversion=${gdbversion} '
+BEGIN {
+ print "{ libgdb.inc file generated by awk script }"
+ print "{$define GDB_V" gdbversion " }"
+ print "{$ifdef COMPILING_GDBINT_UNIT }"
+}
+
+{
+ nb = split ($0,list);
+
+ for (i=1; i<=nb; i++) {
+ if ( list[i] ~ /lib[^ ]*\.a/ ) {
+ libs = gensub (/([^ ]*)(lib[^ ]*\.a)/,"{$LINKLIB \\2} { found in \\1 }","g",list[i]);
+ print libs;
+ }
+ if ( list[i] ~ /-l/ ) {
+ dlibs = gensub (/-l([^ ]*)/,"{$LINKLIB \\1} { with -l gcc option}","g",list[i]);
+ print dlibs;
+ }
+ }
+}
+END {
+ print "{$endif COMPILING_GDBINT_UNIT }"
+ print "{$undef NotImplemented}"
+}
+' | tee gdblib.inc
+
+