Index: libltdl/config/ltmain.m4sh =================================================================== RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v retrieving revision 1.49 diff -u -3 -p -u -r1.49 ltmain.m4sh --- libltdl/config/ltmain.m4sh 8 Jun 2006 16:54:44 -0000 1.49 +++ libltdl/config/ltmain.m4sh 2 Jul 2006 13:39:41 -0000 @@ -3048,12 +3048,6 @@ func_mode_link () test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - oldlibs= # calculate the name of the file, without its directory func_basename "$output" @@ -5532,6 +5526,32 @@ EOF && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([[dlopen]])' not used. Assuming no dlopen support." + if test "$export_dynamic" = yes && + { test -n "$export_dynamic_symbols_cmds" || + test -n "$export_dynamic_flag_spec"; }; then + if test -n "$export_dynamic_symbols_cmds"; then + func_echo "generating symbol list for \`$output'" + export_symbols="$output.exp" + func_show_eval "$RM $export_symbols" + cmds=$export_dynamic_symbols_cmd + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + else + func_warning "Unable to export symbols for -export-dynamic - command line too long" + fi + done + IFS="$save_ifs" + fi + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + case $host in *-*-rhapsody* | *-*-darwin1.[[012]]) # On Rhapsody replace the C library is the System framework @@ -5727,6 +5747,12 @@ EOF func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi + if test "$export_dynamic" = yes && + test -n "$export_dynamic_symbols_cmds" && + test -f "$export_symbols"; then + func_show_eval "$RM $export_symbols" + fi + exit $exit_status fi Index: libltdl/m4/libtool.m4 =================================================================== RCS file: /cvsroot/libtool/libtool/libltdl/m4/libtool.m4,v retrieving revision 1.75 diff -u -3 -p -u -r1.75 libtool.m4 --- libltdl/m4/libtool.m4 24 Jun 2006 04:58:58 -0000 1.75 +++ libltdl/m4/libtool.m4 2 Jul 2006 13:39:43 -0000 @@ -3944,8 +3944,10 @@ m4_if([$1], [CXX], [ # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_dynamic_symbols_cmds, $1)='$NM -Bpg $objs $old_deplibs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_dynamic_symbols_cmds, $1)='$NM -BCpg $objs $old_deplibs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) @@ -3965,6 +3967,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_symbols_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no @@ -4285,13 +4288,6 @@ _LT_EOF exp_sym_flag='-Bexport' no_entry_flag="" else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal @@ -4310,6 +4306,15 @@ _LT_EOF exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_dynamic_symbols_cmds, $1)='$NM -Bpg $objs $old_deplibs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_dynamic_symbols_cmds, $1)='$NM -BCpg $objs $old_deplibs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library @@ -4952,6 +4957,8 @@ _LT_TAGDECL([allow_libtool_libs_with_sta [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([].[export_dynamic_symbols_cmds], [1], + [Commands to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], @@ -5143,6 +5150,7 @@ _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_symbols_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no @@ -6402,6 +6410,7 @@ _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_symbols_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no @@ -6543,6 +6552,7 @@ _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_symbols_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no