From: Michael Haubenwallner <ha...@gentoo.org>

If a package does not have libtool-2.4.6 or 2.4.6.42-b88c3 there is no
guarantee things will work, and the package should use eautoreconf.

Signed-off-by: Michael Haubenwallner <ha...@gentoo.org>
---
 patches/winnt-conf/2.4.6.42-global-syms | 129 ++++++++++++++++++++++++
 patches/winnt-conf/2.4.6.42-shlibs      |  15 +++
 patches/winnt-conf/2.4.6.42-shlibs-c    |  20 ++++
 patches/winnt-conf/2.4.6.42-shlibs-cxx  |  33 ++++++
 patches/winnt-conf/2.4.6.42-strip       |  30 ++++++
 5 files changed, 227 insertions(+)
 create mode 100644 patches/winnt-conf/2.4.6.42-global-syms
 create mode 100644 patches/winnt-conf/2.4.6.42-shlibs
 create mode 100644 patches/winnt-conf/2.4.6.42-shlibs-c
 create mode 100644 patches/winnt-conf/2.4.6.42-shlibs-cxx
 create mode 100644 patches/winnt-conf/2.4.6.42-strip

diff --git a/patches/winnt-conf/2.4.6.42-global-syms 
b/patches/winnt-conf/2.4.6.42-global-syms
new file mode 100644
index 0000000..704ee84
--- /dev/null
+++ b/patches/winnt-conf/2.4.6.42-global-syms
@@ -0,0 +1,129 @@
+--- configure
++++ configure
+@@ -7115,11 +7115,11 @@
+ # Define system-specific variables.
+ case $host_os in
+ aix*)
+   symcode='[BCDT]'
+   ;;
+-cygwin* | mingw* | pw32* | cegcc*)
++cygwin* | mingw* | pw32* | cegcc* | winnt*)
+   symcode='[ABCDGISTW]'
+   ;;
+ hpux*)
+   if test ia64 = "$host_cpu"; then
+     symcode='[ABCDEGRST]'
+@@ -7154,46 +7154,56 @@
+   symcode='[ABCDGIRSTW]' ;;
+ esac
+ 
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+   # Gets list of data symbols to import.
+-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
++  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* 
\([a-zA-Z_][0-9a-zA-Z_]*\)$/\1/p'"
+   # Adjust the below global symbol transforms to fixup imported variables.
+-  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char 
\1;/p'"
+-  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
++  lt_cdecl_hook=" -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern 
__declspec(dllimport) char \1;/p'"
++  lt_c_name_hook=" -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"\1\", (void 
*) 0},/p'"
+   lt_c_name_lib_hook="\
+-  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+-  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
++  -e 's/^I .* \(lib[a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"\1\", (void *) 0},/p'\
++  -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"lib\1\", (void *) 0},/p'"
+ else
+   # Disable hooks by default.
+   lt_cv_sys_global_symbol_to_import=
+   lt_cdecl_hook=
+   lt_c_name_hook=
+   lt_c_name_lib_hook=
++  case $host_os in
++  winnt*)
++    lt_cv_sys_global_symbol_to_import="sed -n -e 's/^D [^ ]* 
\([a-zA-Z_][0-9a-zA-Z_]*\)$/\1/p'"
++    lt_cdecl_hook=" -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern 
__declspec(dllimport) char \1;/p'"
++    lt_c_name_hook=" -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"\1\", 
(void *) 0},/p'"
++    lt_c_name_lib_hook="\
++    -e 's/^D [^ ]* \(lib[a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"\1\", (void *) 0},/p'\
++    -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"lib\1\", (void *) 0},/p'"
++    ;;
++  esac
+ fi
+ 
+ # Transform an extracted symbol line into a proper C declaration.
+ # Some systems (esp. on ia64) link data and code symbols differently,
+ # so use this general approach.
+ lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+ $lt_cdecl_hook\
+-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
++" -e 's/^T .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern int \1();/p'"\
++" -e 's/^$symcode$symcode* .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern char \1;/p'"
+ 
+ # Transform an extracted symbol line into symbol name and symbol address
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+ $lt_c_name_hook\
+ " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
++" -e 's/^$symcode$symcode* .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"\1\", (void *) 
\&\1},/p'"
+ 
+ # Transform an extracted symbol line into symbol name with lib prefix and
+ # symbol address.
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+ $lt_c_name_lib_hook\
+ " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+-" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
++" -e 's/^$symcode$symcode* .* \(lib[a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"\1\", (void 
*) \&\1},/p'"\
++" -e 's/^$symcode$symcode* .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/  {\"lib\1\", (void 
*) \&\1},/p'"
+ 
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+ case $build_os in
+ mingw*)
+@@ -7203,35 +7213,43 @@
+ 
+ # Try without a prefix underscore, then with it.
+ for ac_symprfx in "" "_"; do
+ 
+   # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+-  symxfrm="\\1 $ac_symprfx\\2 \\2"
++  # In Windows import libraries, symbols may be prefixed with __imp_, as well
++  # as __nm_ when using GNU ld.  The leading underscore (in 32bit) comes after
++  # the __imp_ and __nm_ prefix, so make sure to strip the underscore from the
++  # symbol name instead of the __imp_ or __nm_ prefix, leaving these prefixes
++  # intact in the symbol pipe output.
++  symxfrm="\\1 \\2$ac_symprfx\\3 \\2\\3"
+ 
+   # Write the raw and C identifiers.
+   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+     # Fake it for dumpbin and say T for any non-static function,
+     # D for any global variable and I for any imported variable.
+     # Also find C++ and __fastcall symbols from MSVC++ or ICC,
+-    # which start with @ or ?.
++    # which start with @ or ?.  And Cygwin gawk-4.1.4-3 and newer
++    # treats input as binary, have to drop carriage return first.
+     lt_cv_sys_global_symbol_pipe="$AWK '"\
++"     {sub(/\\r\$/,\"\")};"\
+ "     {last_section=section; section=\$ 3};"\
+ "     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+ "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+ "     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+ "     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+ "     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+ "     \$ 0!~/External *\|/{next};"\
+ "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+ "     {if(hide[section]) next};"\
+ "     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
++"     \$ 0~/ [0-9a-fA-F]*[1-9a-fA-F][0-9a-fA-F]* UNDEF /{f=\"C\"};"\
+ "     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+ "     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+ "     s[1]~prfx {split(s[1],t,\"@\"); print 
f,t[1],substr(t[1],length(prfx))}"\
+ "     ' prfx=^$ac_symprfx"
+   else
+-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[    
]\($symcode$symcode*\)[         ][      
]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[    
]\($symcode$symcode*\)[         ][      
]*\(__imp_\|__nm_\)\{0,1\}$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+   fi
+   lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ 
__gnu_lto/d'"
+ 
+   # Check to see that the pipe works correctly.
+   pipe_works=no
diff --git a/patches/winnt-conf/2.4.6.42-shlibs 
b/patches/winnt-conf/2.4.6.42-shlibs
new file mode 100644
index 0000000..840e867
--- /dev/null
+++ b/patches/winnt-conf/2.4.6.42-shlibs
@@ -0,0 +1,15 @@
+--- configure
++++ configure
+@@ -10228,11 +10262,11 @@
+   # preloaded symbol tables.
+   # Exclude shared library initialization/finalization symbols.
+   extract_expsyms_cmds=
+ 
+   case $host_os in
+-  cygwin* | mingw* | pw32* | cegcc*)
++  cygwin* | mingw* | pw32* | cegcc* | winnt*)
+     # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
+     # When not using gcc, we currently assume that we are using
+     # Microsoft Visual C++ or Intel C++ Compiler.
+     if test yes != "$GCC"; then
+       with_gnu_ld=no
diff --git a/patches/winnt-conf/2.4.6.42-shlibs-c 
b/patches/winnt-conf/2.4.6.42-shlibs-c
new file mode 100644
index 0000000..ad16aad
--- /dev/null
+++ b/patches/winnt-conf/2.4.6.42-shlibs-c
@@ -0,0 +1,20 @@
+--- configure
++++ configure
+@@ -10884,10 +10918,17 @@
+ 
+     bsdi[45]*)
+       export_dynamic_flag_spec=-rdynamic
+       ;;
+ 
++    winnt*)
++      exclude_expsyms='__NULL_IMPORT_DESCRIPTOR|__IMPORT_DESCRIPTOR_.*'
++      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags 
-o $output_objdir/$soname -Wl,--out-implib,$lib'
++      archive_cmds_need_lc=no
++      allow_undefined_flag=unsupported
++      ;;
++
+     cygwin* | mingw* | pw32* | cegcc*)
+       # When not using gcc, we currently assume that we are using
+       # Microsoft Visual C++ or Intel C++ Compiler.
+       # hardcode_libdir_flag_spec is actually meaningless, as there is
+       # no search path for DLLs.
diff --git a/patches/winnt-conf/2.4.6.42-shlibs-cxx 
b/patches/winnt-conf/2.4.6.42-shlibs-cxx
new file mode 100644
index 0000000..71db848
--- /dev/null
+++ b/patches/winnt-conf/2.4.6.42-shlibs-cxx
@@ -0,0 +1,33 @@
+--- configure
++++ configure
+@@ -15327,10 +15450,16 @@
+         ld_shlibs_CXX=no
+         ;;
+         esac
+         ;;
+ 
++      winnt*)
++      archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs 
$compiler_flags -o $output_objdir/$soname -Wl,--out-implib,$lib'
++      archive_cmds_need_lc_CXX=no
++      allow_undefined_flag_CXX=unsupported
++      ;;
++
+       cygwin* | mingw* | pw32* | cegcc*)
+       case $GXX,$cc_basename in
+       ,cl* | no,cl* | ,icl* | no,icl*)
+         # Native MSVC or ICC
+         # hardcode_libdir_flag_spec is actually meaningless, as there is
+@@ -16902,10 +17036,13 @@
+     fi
+     ;;
+   pw32*)
+     export_symbols_cmds_CXX=$ltdll_cmds
+     ;;
++  winnt*)
++    exclude_expsyms_CXX='__NULL_IMPORT_DESCRIPTOR|__IMPORT_DESCRIPTOR_.*'
++    ;;
+   cygwin* | mingw* | cegcc*)
+     case $cc_basename in
+     cl* | icl*)
+       exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+       ;;
diff --git a/patches/winnt-conf/2.4.6.42-strip 
b/patches/winnt-conf/2.4.6.42-strip
new file mode 100644
index 0000000..743a2fb
--- /dev/null
+++ b/patches/winnt-conf/2.4.6.42-strip
@@ -0,0 +1,30 @@
+--- configure
++++ configure
+@@ -13205,14 +13315,24 @@
+ if test -z "$STRIP"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ else
+   if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+-    old_striplib="$STRIP --strip-debug"
+-    striplib="$STRIP --strip-unneeded"
+-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++    case $host_os in
++    winnt*)
++      # Stripping is not save here, since POSIXish host utils may
++      # be detected, but we operate on native windows libraries.
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++      ;;
++    *)
++      old_striplib="$STRIP --strip-debug"
++      striplib="$STRIP --strip-unneeded"
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
++      ;;
++    esac
+   else
+     case $host_os in
+     darwin*)
+       # FIXME - insert some real tests, host_os isn't really good enough
+       striplib="$STRIP -x"
-- 
2.22.0


Reply via email to