From f484c6d5645d789e5b77ada387c698642d80434e Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Thu, 20 Jul 2000 02:29:16 +0000 Subject: [PATCH] * ltcf-c.sh, ltcf-cxx.sh: Check if -lc is necessary for building shared library. * ltcf-gcj.sh: Assume -lc is implicitly linked in. * ltconfig.in: Set build_libtool_need_lc to indicate it. * ltmain.in: Add -lc when building shared libary only if necessary. --- ChangeLog | 9 +++++++++ ltcf-c.sh | 45 ++++++++++++++++++++++++++++++++++++++++++++- ltcf-cxx.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ ltcf-gcj.sh | 3 +++ ltconfig.in | 3 +++ ltmain.in | 6 ++++-- 6 files changed, 109 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3aad8a60d..e890110e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2000-07-19 H.J. Lu , Alexandre Oliva + + * ltcf-c.sh, ltcf-cxx.sh: Check if -lc is necessary for building + shared library. + * ltcf-gcj.sh: Assume -lc is implicitly linked in. + * ltconfig.in: Set build_libtool_need_lc to indicate it. + * ltmain.in: Add -lc when building shared libary only if + necessary. + 2000-07-10 Mo DeJong * libtool.m4 (AC_PROG_NM): Fix macro so that it diff --git a/ltcf-c.sh b/ltcf-c.sh index 3277e9415..756b15120 100644 --- a/ltcf-c.sh +++ b/ltcf-c.sh @@ -643,4 +643,47 @@ else ac_cv_prog_cc_pic="$ac_cv_prog_cc_pic -DPIC" fi - +need_lc=yes +if test "$enable_shared" = yes && test "$with_gcc" = yes; then + case "$archive_cmds" in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo $ac_n "checking whether -lc is implicitly linked in... $ac_c" 1>&6 + if eval "test \"`echo '$''{'ac_cv_archive_cmds_needs_lc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + need_lc=$ac_cv_archive_cmds_needs_lc + else + $rm conftest* + echo "static int dummy;" > conftest.$ac_ext + if { (eval echo $progname:@LINENO@: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + soname=conftest + lib=conftest + libobjs=conftest.o + deplibs= + linkopts=-v + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + allow_undefined_flag= + if { (eval echo $progname:@LINENO@: \"$archive_cmds\") 1>&5; (eval $archive_cmds) 2>&1 | grep " -lc " 1>&5 ; }; then + need_lc=no + fi + else + cat conftest.err 1>&5 + fi + fi + $rm conftest* + echo "$ac_t$need_lc" 1>&6 + ;; + esac +fi +ac_cv_archive_cmds_needs_lc=$need_lc diff --git a/ltcf-cxx.sh b/ltcf-cxx.sh index ac3357981..c8e5b1fa8 100644 --- a/ltcf-cxx.sh +++ b/ltcf-cxx.sh @@ -873,3 +873,49 @@ else fi $rm -f confest.$objext + +need_lc=yes +if test "$enable_shared" = yes && test "$with_gcc" = yes; then + case "$archive_cmds" in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo $ac_n "checking whether -lc is implicitly linked in... $ac_c" 1>&6 + if eval "test \"`echo '$''{'ac_cv_cxx_archive_cmds_needs_lc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + need_lc=$ac_cv_cxx_archive_cmds_needs_lc + else + $rm conftest* + echo "static int dummy;" > conftest.$ac_ext + if { (eval echo $progname:@LINENO@: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + soname=conftest + lib=conftest + libobjs=conftest.o + deplibs= + linkopts=-v + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + allow_undefined_flag= + if { (eval echo $progname:@LINENO@: \"$archive_cmds\") 1>&5; (eval $archive_cmds) 2>&1 | grep " -lc " 1>&5 ; }; then + need_lc=no + fi + else + cat conftest.err 1>&5 + fi + fi + $rm conftest* + echo "$ac_t$need_lc" 1>&6 + ;; + esac +fi +ac_cv_cxx_archive_cmds_needs_lc=$need_lc diff --git a/ltcf-gcj.sh b/ltcf-gcj.sh index 44b1fb234..3340a6f43 100644 --- a/ltcf-gcj.sh +++ b/ltcf-gcj.sh @@ -568,3 +568,6 @@ fi ac_cv_prog_cc_pic='-fPIC' ;; esac + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +need_lc=no diff --git a/ltconfig.in b/ltconfig.in index a4126e407..f3e53fefd 100755 --- a/ltconfig.in +++ b/ltconfig.in @@ -2061,6 +2061,9 @@ SHELL=$LTSHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + # Whether or not to build static libraries. build_old_libs=$enable_static diff --git a/ltmain.in b/ltmain.in index 6ee909880..e9543d17a 100644 --- a/ltmain.in +++ b/ltmain.in @@ -2557,8 +2557,10 @@ EOF # these systems don't actually have a c library (as such)! ;; *) - # Add libc to deplibs on all other systems. - deplibs="$deplibs -lc" + # Add libc to deplibs on all other systems if necessary. + if test $build_libtool_need_lc = "yes"; then + deplibs="$deplibs -lc" + fi ;; esac fi -- 2.47.3