check --whole-archive is supported before using it
authorTony Cook <tony@develop-help.com>
Fri, 8 Apr 2011 14:05:24 +0000 (00:05 +1000)
committerTony Cook <tony@develop-help.com>
Wed, 13 Apr 2011 06:16:57 +0000 (16:16 +1000)
netbsd for pre 4.6 gcc requires --whole-archive to build shared
libraries, but this is rejected and not required in 4.6.0.

Simply changing the option to -Wl,--whole-archive works on gcc 4.6.0
but fails for the system cc on NetBSD 5.1/x64.

hints/netbsd.sh

index d812f60..c64be44 100644 (file)
@@ -35,7 +35,15 @@ case "$osvers" in
                d_dlopen=$define
                d_dlerror=$define
                cccdlflags="-DPIC -fPIC $cccdlflags"
-               lddlflags="--whole-archive -shared $lddlflags"
+               lddlflags="-shared $lddlflags"
+               # gcc 4.6 doesn't support --whole-archive, but check for it
+               # if the user chooses a new compiler later, this is pointless
+               echo 'int f(void) { return 0; }' >try.c
+               if ${cc:-cc} $cccdlflags -c try.c -otry.o 2>&1 &&
+                   ${cc:-cc} --whole-archive $lddlflags try.o -otry.so 2>&1 ; then
+                   lddlflags="--whole-archive $lddlflags"
+               fi
+               rm try.c try.o try.so 2>/dev/null
                rpathflag="-Wl,-rpath,"
                case "$osvers" in
                1.[0-5]*)