From: Howard Chu Date: Wed, 4 Oct 2000 02:53:19 +0000 (+0000) Subject: Reintegrate AIX and --only-static/--only-shared support from r1.8 X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~1812 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=134af7343f19a4d9ef500f9da3ddea4ba15322da;p=openldap Reintegrate AIX and --only-static/--only-shared support from r1.8 --- diff --git a/build/ltconfig b/build/ltconfig index 6f76f15da3..088583ada1 100755 --- a/build/ltconfig +++ b/build/ltconfig @@ -1079,8 +1079,11 @@ hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no +hardcode_default_flag= hardcode_shlibpath_var=unsupported runpath_var= +link_export= +link_export_all= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* @@ -1266,6 +1269,7 @@ else aix3*) allow_undefined_flag=unsupported always_export_symbols=yes + link_export=' -bE:$export_symbols' archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. @@ -1278,7 +1282,7 @@ else ;; aix4*) - hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_flag_spec='${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' hardcode_libdir_separator=':' if test "$with_gcc" = yes; then collect2name=`${CC} -print-prog-name=collect2` @@ -1301,14 +1305,15 @@ else else shared_flag='${wl}-bM:SRE' hardcode_direct=yes + hardcode_minus_L=yes + hardcode_default_flag='${wl}-b nolibpath' fi allow_undefined_flag=' ${wl}-berok' archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' - case "$host_os" in aix4.[01]|aix4.[01].*) - # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on - always_export_symbols=yes ;; - esac + link_export=' ${wl}-bE:$export_symbols' + link_export_all=' ${wl}-bexpall' + always_export_symbols=yes ;; amigaos*) @@ -1828,6 +1833,8 @@ aix3*) # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' + lt_cv_dlopen_self=yes + need_lib_prefix=no ;; aix4*) @@ -1840,6 +1847,8 @@ aix4*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' shlibpath_var=LIBPATH deplibs_check_method=pass_all + lt_cv_dlopen_self=yes + need_lib_prefix=no ;; amigaos*) @@ -3017,6 +3026,9 @@ hardcode_direct=$hardcode_direct # resulting binary. hardcode_minus_L=$hardcode_minus_L +# Flag to force default rpath, to bypass effect of -L +hardcode_default_flag='$hardcode_default_flag' + # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var @@ -3033,6 +3045,10 @@ fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols +# Set to use export list when linking programs. +link_export='$link_export' +link_export_all='$link_export_all' + # The commands to list exported symbols. export_symbols_cmds=$export_symbols_cmds diff --git a/build/ltmain.sh b/build/ltmain.sh index 21c58150b6..320e1ee11c 100755 --- a/build/ltmain.sh +++ b/build/ltmain.sh @@ -181,6 +181,16 @@ do --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; + --only-shared) + build_libtool_libs=yes + build_old_libs=no + ;; + + --only-static) + build_libtool_libs=no + build_old_libs=yes + ;; + --quiet | --silent) show=: ;; @@ -1077,7 +1087,7 @@ compiler." -l*) if test "$arg" = "-lc"; then case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | *-*-aix*) # These systems don't actually have c library (as such) continue ;; @@ -1628,6 +1638,9 @@ compiler." $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" + if test -n "$hardcode_default_flag"; then + eval linkopts=\"$linkopts$hardcode_default_flag\" + fi oldlibs= if test -z "$rpath"; then @@ -1802,7 +1815,7 @@ compiler." dependency_libs="$deplibs" case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | *-*-aix*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody*) @@ -2463,6 +2476,14 @@ EOF fi finalize_rpath="$rpath" + if test -z "$compile_rpath" -a -n "$hardcode_default_flag"; then + eval compile_rpath=\" $hardcode_default_flag\" + fi + + if test -z "$finalize_rpath" -a -n "$hardcode_default_flag"; then + eval finalize_rpath=\" $hardcode_default_flag\" + fi + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" @@ -2556,6 +2577,32 @@ extern \"C\" { fi fi + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes -a -n "$link_export_all"; then + eval link_export=\"$link_export_all\" + elif test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$output'" + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + libobjs="$objs" + eval cmds=\"$export_symbols_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | sed -e 's%^.*/%%'` @@ -2633,7 +2680,7 @@ static const void *lt_preloaded_setup() { # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; @@ -2672,10 +2719,15 @@ static const void *lt_preloaded_setup() { finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi + link_export_opt= + if test -n "$export_symbols" -o -n "$dlsyms"; then + eval link_export_opt=\"$link_export\" + fi + if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" + link_command="$compile_command$compile_rpath$link_export_opt" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" @@ -2761,7 +2813,9 @@ static const void *lt_preloaded_setup() { # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - + + link_command="$link_command$link_export_opt" + # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname