From 88c1d0892b833eb6f5818fa3e37e5f3b2247f167 Mon Sep 17 00:00:00 2001 From: aoliva Date: Thu, 22 Mar 2001 06:48:32 +0000 Subject: * ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh, ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.198. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40731 138bc75d-0d04-0410-961f-82ee72b054a4 --- ltcf-c.sh | 235 +++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 148 insertions(+), 87 deletions(-) (limited to 'ltcf-c.sh') diff --git a/ltcf-c.sh b/ltcf-c.sh index 8e1cf87c9eb..3d99a49cc19 100644 --- a/ltcf-c.sh +++ b/ltcf-c.sh @@ -38,7 +38,7 @@ lt_simple_compile_test_code="int some_variable = 0;" lt_simple_link_test_code='main(){return(0);}' ## Linker Characteristics -case "$host_os" in +case $host_os in cygwin* | mingw*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using @@ -56,7 +56,7 @@ if test "$with_gnu_ld" = yes; then wlarc='${wl}' # See if GNU ld supports shared libraries. - case "$host_os" in + case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken ld_shlibs=no @@ -117,7 +117,7 @@ EOF # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ - case "$host_os" in + case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 @@ -148,17 +148,23 @@ EOF $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! - archive_expsym_cmds='echo EXPORTS > $output_objdir/$soname-def~ - _lt_hint=1; - cat $export_symbols | while read symbol; do - set dummy \$symbol; - case \$# in - 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; - *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; - esac; - _lt_hint=`expr 1 + \$_lt_hint`; - done~ + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ @@ -167,6 +173,18 @@ EOF $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; + darwin*|rhapsody*) + allow_undefined_flag='-undefined warning' + archive_cmds='$CC $(if test "$module" = "yes"; then echo -bundle; else + echo -dynamiclib; fi) -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + ## What we need is to hardcode the path to the library, not the search path + #hardcode_direct=yes + #hardcode_libdir_flag_spec='-install_name $libdir/$lib' + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load' + ;; + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' @@ -207,9 +225,8 @@ EOF *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${allow_undefined_flag} ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${allow_undefined_flag} ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - no_undefined_flag='${wl}--no-undefined' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -237,7 +254,7 @@ EOF fi else # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in + case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes @@ -253,43 +270,89 @@ else ;; aix4* | aix5*) - hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_direct=yes hardcode_libdir_separator=':' + link_all_deplibs=yes + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. if test "$with_gcc" = yes; then - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= + shared_flag='${wl}-bM:SRE' fi - shared_flag='-shared' + fi + + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" else - shared_flag='${wl}-bM:SRE' - hardcode_direct=yes + # Test if we are trying to use run time linking, or normal AIX style linking. + # If -brtl is somewhere in LDFLAGS, we need to do run time linking. + aix_use_runtimelinking=no + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then + aix_use_runtimelinking=yes + break + fi + done + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' fi - allow_undefined_flag=' ${wl}-berok' - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec=' ' - build_libtool_need_lc=yes - - # We don't want to build shared libraries on unknown CPU types. - case $host_cpu in - powerpc | rs6000) ;; - *) ld_shlibs=no ;; - esac + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other run time loading flags (-brtl), -berok will + # link without error, but may produce a broken library. + allow_undefined_flag=' ${wl}-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + build_libtool_need_lc=yes + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi ;; amigaos*) @@ -315,7 +378,7 @@ else old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w $srcfile`' + fix_srcfile_path='`cygpath -w "$srcfile"`' ;; freebsd1*) @@ -350,7 +413,7 @@ else ;; hpux9* | hpux10* | hpux11*) - case "$host_os" in + case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac @@ -379,8 +442,16 @@ else else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi - hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; @@ -418,8 +489,10 @@ else else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='-rpath $libdir' hardcode_libdir_separator=: ;; @@ -432,18 +505,14 @@ else solaris*) no_undefined_flag=' -z text' - if test "$with_gcc" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no - case "$host_os" in + case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; @@ -542,22 +611,18 @@ else ac_cv_prog_cc_wl='-Wl,' ac_cv_prog_cc_static='-static' - case "$host_os" in + case $host_os in beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; aix*) - # Below there is a dirty hack to force normal static linking with -ldl - # The problem is because libdl dynamically linked with both libc and - # libC (AIX C++ library), which obviously doesn't included in libraries - # list by gcc. This cause undefined symbols with -static flags. - # This hack allows C programs to be linked with "-static -ldl", but - # we not sure about C++ programs. - ac_cv_prog_cc_static="$ac_cv_prog_cc_static ${ac_cv_prog_cc_wl}-lC" - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - ac_cv_prog_cc_pic= + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi ;; cygwin* | mingw* | os2*) # This hack is so that the source file can tell whether it is being @@ -581,10 +646,10 @@ else esac else # PORTME Check for PIC flags for the system compiler. - case "$host_os" in - aix3* | aix4* | aix5*) + case $host_os in + aix*) # All AIX code is PIC. - ac_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + ac_cv_prog_cc_static="$ac_cv_prog_cc_static ${ac_cv_prog_cc_wl}-lC" ;; hpux9* | hpux10* | hpux11*) @@ -606,6 +671,11 @@ else ac_cv_prog_cc_pic='-DDLL_EXPORT' ;; + newsos6) + ac_cv_prog_cc_pic='-KPIC' + ac_cv_prog_cc_static='-Bstatic' + ;; + osf3* | osf4* | osf5*) # All OSF/1 code is PIC. ac_cv_prog_cc_wl='-Wl,' @@ -653,21 +723,12 @@ else ;; esac fi - case "$host_os" in - # Platforms which do not suport PIC and -DPIC is meaningless - # on them: - *djgpp*) - ac_cv_prog_cc_pic= - ;; - *) - ac_cv_prog_cc_pic="$ac_cv_prog_cc_pic -DPIC" - ;; - esac + 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 + case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; @@ -687,7 +748,7 @@ if test "$enable_shared" = yes && test "$with_gcc" = yes; then cat conftest.err 1>&5 soname=conftest lib=conftest - libobjs=conftest.o + libobjs=conftest.$ac_objext deplibs= wl=$ac_cv_prog_cc_wl compiler_flags=-v -- cgit v1.2.1