]> git.sur5r.net Git - openldap/commitdiff
Reintegrate AIX and --only-static/--only-shared support from r1.8
authorHoward Chu <hyc@openldap.org>
Wed, 4 Oct 2000 02:53:19 +0000 (02:53 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 4 Oct 2000 02:53:19 +0000 (02:53 +0000)
build/ltconfig
build/ltmain.sh

index 6f76f15da351c9665b85078b9d17e2024a5594de..088583ada1d4ed63b2ae6477b8009f292f6508a8 100755 (executable)
@@ -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
 
index 21c58150b67638cee9937c7dfb5b84771e431dd7..320e1ee11c3d517bb00d40dd7bba9461cacce32b 100755 (executable)
@@ -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*)\r
+         *-*-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