summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Haubenwallner <haubi@gentoo.org>2019-10-24 14:48:05 +0200
committerMichael Haubenwallner <haubi@gentoo.org>2020-03-12 08:35:47 +0100
commit175453de57aa3d64a2c179c024a28a0b71b73567 (patch)
tree3b9b57190adcbbe4a5f27982a59bb3696114ab23
parentadd lt-2.4.6 winnt patches for use with parity-2 (diff)
downloadelt-patches-175453de57aa3d64a2c179c024a28a0b71b73567.tar.gz
elt-patches-175453de57aa3d64a2c179c024a28a0b71b73567.tar.bz2
elt-patches-175453de57aa3d64a2c179c024a28a0b71b73567.zip
add lt-2.4.6.42-b88ce winnt patches for use with parity-2
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 <haubi@gentoo.org>
-rw-r--r--patches/winnt-conf/2.4.6.42-global-syms129
-rw-r--r--patches/winnt-conf/2.4.6.42-shlibs15
-rw-r--r--patches/winnt-conf/2.4.6.42-shlibs-c20
-rw-r--r--patches/winnt-conf/2.4.6.42-shlibs-cxx33
-rw-r--r--patches/winnt-conf/2.4.6.42-strip30
5 files changed, 227 insertions, 0 deletions
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"