s3:configure: not simply check for "ld" but for the linker used by $CC
authorBjörn Jacke <bj@sernet.de>
Wed, 5 May 2010 18:17:39 +0000 (20:17 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 11 May 2010 12:45:07 +0000 (14:45 +0200)
this hopefully fixes Solaris' gcc build which uses the system ld by default.
All in all we should clean up most of the compiler and linker flags depending
on the actual compilers and linkers we use. Only some tweaks are OS-specific.
A cleanup in this area should be done along with the move to a new build
system (whensoever that will be ...).
(cherry picked from commit 1969b4acc3fd7c124e288d0495b9b4665d4b42db)

Fix bug #7385 (Can't compile. Undefined symbol 'main').

source3/configure.in
source3/m4/aclocal.m4

index 3111d5aaae60f4842d313dbfb03b6f4db8c3b1d3..9672c93411736c89f44ee03f52f1eba6f08902fa 100644 (file)
@@ -208,15 +208,14 @@ AC_SAMBA_PERL([true], [merged_build_possible=no])
 
 AC_CHECK_TOOL(AR, ar)
 
-dnl Check if we use GNU ld
-LD=ld
+dnl Check if we (actually our C compiler!) use GNU ld
 AC_PROG_LD_GNU
 
 dnl Certain versions of GNU ld the default is not to have the
 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
 dnl warnings when building modules.
 if test "$ac_cv_prog_gnu_ld" = "yes"; then
-       ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
+       ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>/dev/null | head -1`
        AC_MSG_CHECKING(GNU ld release date)
        changequote(,)dnl
        ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
@@ -1510,16 +1509,17 @@ DSO_EXPORTS=""
                        ;;
                *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
                        BLDSHARED="true"
-                       LDSHFLAGS="-G"
-                       SONAMEFLAG="-h "
                        if test "${GCC}" = "yes"; then
                                PICFLAG="-fPIC"
                                SONAMEFLAG="-Wl,-soname="
                                if test "${ac_cv_prog_gnu_ld}" = "yes"; then
                                        DYNEXP="-Wl,-E"
                                fi
+                               # TODO: need to add $CFLAGS here for explicit 64-bit builds?
+                               LDSHFLAGS="-shared"
                        else
                                PICFLAG="-KPIC"
+                               SONAMEFLAG="-h "
                                ## ${CFLAGS} added for building 64-bit shared
                                ## libs using Sun's Compiler
                                LDSHFLAGS="-G \${CFLAGS}"
index bdad6fa6e50309317b1c5d55a06ce07b2aed2e51..77224874f3474e52d93fe004e0d531282e0d8229 100644 (file)
@@ -363,9 +363,9 @@ EOF
 
 dnl Copied from libtool.m4
 AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
+[AC_CACHE_CHECK([if the linker used by compiler is GNU ld], ac_cv_prog_gnu_ld,
 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+if $CC -Wl,-v /dev/null 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
   ac_cv_prog_gnu_ld=yes
 else
   ac_cv_prog_gnu_ld=no