diff options
author | Michael Haubenwallner <haubi@gentoo.org> | 2019-10-24 14:48:05 +0200 |
---|---|---|
committer | Michael Haubenwallner <haubi@gentoo.org> | 2020-03-12 08:35:47 +0100 |
commit | 175453de57aa3d64a2c179c024a28a0b71b73567 (patch) | |
tree | 3b9b57190adcbbe4a5f27982a59bb3696114ab23 | |
parent | add lt-2.4.6 winnt patches for use with parity-2 (diff) | |
download | elt-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-syms | 129 | ||||
-rw-r--r-- | patches/winnt-conf/2.4.6.42-shlibs | 15 | ||||
-rw-r--r-- | patches/winnt-conf/2.4.6.42-shlibs-c | 20 | ||||
-rw-r--r-- | patches/winnt-conf/2.4.6.42-shlibs-cxx | 33 | ||||
-rw-r--r-- | patches/winnt-conf/2.4.6.42-strip | 30 |
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" |