libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cygwin/Mingw -- make -export-symbols work properly


From: Robert Boehne
Subject: Re: Cygwin/Mingw -- make -export-symbols work properly
Date: Mon, 30 Dec 2002 23:27:46 -0600

Approved and applied to HEAD.

Thanks!

Robert

Charles Wilson wrote:
> 
> [resend; previous email never appeared in the archives...]
> 
> There were some useful bits of code for -export-symbols on cygwin/mingw
> in the 1.4.x branch, that we excised from libtool after migrating
> libtool to use the auto-import functionality of ld.  However, some of
> those bits need to return, in modified form, so that "-export-symbols <a
> def file>" can continue to work.
> 
> Tested on cygwin, no test suite regressions, AND solves the problem (as
> tested by building glib-2.0.7).  This patch is against CVS HEAD (as of
> 2002-12-27).  Please apply.
> 
> --Chuck
> 
> 2002-12-27  Charles Wilson  <address@hidden>
> 
>         * libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): modify
>         $archive_expsym_cmds to restore support for using
>         .def files via the -export-symbols switch.
>         (AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]): in both the [CXX]
>         branch and the default branch, improve $export_symbols_cmds
>         so that DATA symbols are properly  labelled.  In the default
>         branch, duplicate the _CXX_CONFIG correction for
>         $archive_expsym_cmds.
> 
>   ------------------------------------------------------------------------
> Index: libtool.m4
> ===================================================================
> RCS file: /cvsroot/libtool/libtool/libtool.m4,v
> retrieving revision 1.281
> diff -u -r1.281 libtool.m4
> --- libtool.m4  18 Dec 2002 21:04:45 -0000      1.281
> +++ libtool.m4  26 Dec 2002 15:40:58 -0000
> @@ -2708,7 +2708,15 @@
> 
>      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
>        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects 
> $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname 
> ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
> -      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib 
> $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o 
> $output_objdir/$soname ${wl}-retain-symbols-file $wl$export_symbols 
> ${wl}--out-implib,$lib'
> +      # If the export-symbols file already is a .def file (1st line
> +      # is EXPORTS), use it as is; otherwise, prepend...
> +      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q 
> $export_symbols`" = xEXPORTS; then
> +       cp $export_symbols $output_objdir/$soname.def;
> +      else
> +       echo EXPORTS > $output_objdir/$soname.def;
> +       cat $export_symbols >> $output_objdir/$soname.def;
> +      fi~
> +      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects 
> $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname 
> ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
>      else
>        _LT_AC_TAGVAR(ld_shlibs, $1)=no
>      fi
> @@ -4656,6 +4664,9 @@
>    pw32*)
>      _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
>    ;;
> +  cygwin* | mingw*)
> +    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
> $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' 
> | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
> +  ;;
>    *)
>      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
> $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
>    ;;
> @@ -4764,10 +4775,19 @@
>        _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
>        _LT_AC_TAGVAR(always_export_symbols, $1)=no
>        _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
> +      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
> $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' 
> | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
> 
>        if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
>          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs 
> $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 
> ${wl}--out-implib,$lib'
> -       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs 
> $compiler_flags -o $output_objdir/$soname ${wl}-retain-symbols-file 
> $wl$export_symbols ${wl}--out-implib,$lib'
> +       # If the export-symbols file already is a .def file (1st line
> +       # is EXPORTS), use it as is; otherwise, prepend...
> +       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q 
> $export_symbols`" = xEXPORTS; then
> +         cp $export_symbols $output_objdir/$soname.def;
> +       else
> +         echo EXPORTS > $output_objdir/$soname.def;
> +         cat $export_symbols >> $output_objdir/$soname.def;
> +       fi~
> +       $CC -shared $output_objdir/$soname.def $libobjs $deplibs 
> $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  
> ${wl}--out-implib,$lib'
>        else
>         ld_shlibs=no
>        fi
> 
>   ------------------------------------------------------------------------
> _______________________________________________
> Libtool-patches mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/libtool-patches



reply via email to

[Prev in Thread] Current Thread [Next in Thread]