r25978: build: use AC_LIBREPLACE_MDLD_* macros and use the result to build modules
authorStefan Metzmacher <metze@samba.org>
Thu, 15 Nov 2007 15:46:57 +0000 (16:46 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 21 Dec 2007 04:45:27 +0000 (05:45 +0100)
metze
(This used to be commit f86db3348b0ee243988526578cc09c2d5d9a70af)

source4/build/m4/check_ld.m4
source4/build/smb_build/makefile.pm

index c3b01551ab45da4e2d28c7469d452139d8f62ddd..eb1d9a7a1dcc81f73c49fb49c2bab85ebdbd9c74 100644 (file)
@@ -115,6 +115,8 @@ AC_LD_EXPORT_DYNAMIC
 AC_LD_SHLDFLAGS
 AC_LD_SHLIBEXT
 AC_LD_SONAMEFLAG
+AC_LIBREPLACE_MDLD
+AC_LIBREPLACE_MDLD_FLAGS
 
 #######################################################
 # test whether building a shared library actually works
@@ -125,6 +127,11 @@ if test $BLDSHARED = true; then
        AC_MSG_CHECKING([SHLD_FLAGS])
        AC_MSG_RESULT([$SHLD_FLAGS])
 
+       AC_MSG_CHECKING([MDLD])
+       AC_MSG_RESULT([$MDLD])
+       AC_MSG_CHECKING([MDLD_FLAGS])
+       AC_MSG_RESULT([$MDLD_FLAGS])
+
        AC_MSG_CHECKING([SHLIBEXT])
        AC_MSG_RESULT([$SHLIBEXT])
        AC_MSG_CHECKING([SONAMEFLAG])
@@ -137,12 +144,22 @@ if test $BLDSHARED = true; then
                       [ac_cv_shlib_works],[
                        ac_cv_shlib_works=no
                        # try building a trivial shared library
+                       # TODO: also test SONAMEFLAG
                        ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
                                ${SHLD} ${SHLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o && 
                                ac_cv_shlib_works=yes
                        rm -f shlib.${SHLIBEXT} shlib.o
        ])
-       if test $ac_cv_shlib_works = no; then
+       AC_CACHE_CHECK([whether building shared modules actually works], 
+                      [ac_cv_shmod_works],[
+                       ac_cv_shmod_works=no
+                       # try building a trivial shared library
+                       ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
+                               ${MDLD} ${MDLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o && 
+                               ac_cv_shmod_works=yes
+                       rm -f shlib.${SHLIBEXT} shlib.o
+       ])
+       if test $ac_cv_shlib_works = no -o $ac_cv_shmod_works = no; then
                BLDSHARED=false
        fi
 fi
@@ -150,6 +167,8 @@ fi
 if test $BLDSHARED != true; then
        SHLD="shared-libraries-disabled"
        SHLD_FLAGS="shared-libraries-disabled"
+       MDLD="shared-modules-disabled"
+       MDLD_FLAGS="shared-modules-disabled"
        SHLIBEXT="shared_libraries_disabled"
        SONAMEFLAG="shared-libraries-disabled"
        PICFLAG=""
@@ -158,6 +177,11 @@ if test $BLDSHARED != true; then
        AC_MSG_CHECKING([SHLD_FLAGS])
        AC_MSG_RESULT([$SHLD_FLAGS])
 
+       AC_MSG_CHECKING([MDLD])
+       AC_MSG_RESULT([$MDLD])
+       AC_MSG_CHECKING([MDLD_FLAGS])
+       AC_MSG_RESULT([$MDLD_FLAGS])
+
        AC_MSG_CHECKING([SHLIBEXT])
        AC_MSG_RESULT([$SHLIBEXT])
        AC_MSG_CHECKING([SONAMEFLAG])
index 1848ead4cd96090efb6fe576fdd4b4eb4008ede4..887565f8a420b98896a2fbf490bc1c0a3a1861b9 100644 (file)
@@ -204,7 +204,10 @@ STLD_FLAGS=$self->{config}->{STLD_FLAGS}
 
 SHLD=$self->{config}->{SHLD}
 SHLD_FLAGS=$self->{config}->{SHLD_FLAGS} -L\$(builddir)/bin/shared
-SHLD_UNDEF_FLAGS=$self->{config}->{SHLD_UNDEF_FLAGS}
+
+MDLD=$self->{config}->{MDLD}
+MDLD_FLAGS=$self->{config}->{MDLD_FLAGS} -L\$(builddir)/bin/shared
+
 SHLIBEXT=$self->{config}->{SHLIBEXT}
 
 XSLTPROC=$self->{config}->{XSLTPROC}
@@ -355,9 +358,9 @@ __EOD__
 $ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_FULL_OBJ_LIST) $init_obj
        \@echo Linking \$\@
        \@mkdir -p $ctx->{SHAREDDIR}
-       \@\$(SHLD) \$(SHLD_FLAGS) -o \$\@ \$(INSTALL_LINK_FLAGS) \\
+       \@\$(MDLD) \$(MDLD_FLAGS) -o \$\@ \$(INSTALL_LINK_FLAGS) \\
                \$($ctx->{TYPE}_$ctx->{NAME}\_FULL_OBJ_LIST) $init_obj \\
-               \$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) \$(SHLD_UNDEF_FLAGS)
+               \$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS)
 __EOD__
 );