Gentoo Archives: gentoo-dev

From: haubi@g.o
To: gentoo-dev@l.g.o
Cc: haubi@g.o
Subject: [gentoo-dev] [PATCH 2/4] add lt-2.4.6.42-b88ce winnt patches for use with parity-2
Date: Thu, 12 Mar 2020 08:07:28
Message-Id: 20200312080626.5163-3-haubi@gentoo.org
In Reply to: [gentoo-dev] [PATCH 0/4] elt-patches: support wrapped Win32 MSVC toolchain by haubi@gentoo.org
1 From: Michael Haubenwallner <haubi@g.o>
2
3 If a package does not have libtool-2.4.6 or 2.4.6.42-b88c3 there is no
4 guarantee things will work, and the package should use eautoreconf.
5
6 Signed-off-by: Michael Haubenwallner <haubi@g.o>
7 ---
8 patches/winnt-conf/2.4.6.42-global-syms | 129 ++++++++++++++++++++++++
9 patches/winnt-conf/2.4.6.42-shlibs | 15 +++
10 patches/winnt-conf/2.4.6.42-shlibs-c | 20 ++++
11 patches/winnt-conf/2.4.6.42-shlibs-cxx | 33 ++++++
12 patches/winnt-conf/2.4.6.42-strip | 30 ++++++
13 5 files changed, 227 insertions(+)
14 create mode 100644 patches/winnt-conf/2.4.6.42-global-syms
15 create mode 100644 patches/winnt-conf/2.4.6.42-shlibs
16 create mode 100644 patches/winnt-conf/2.4.6.42-shlibs-c
17 create mode 100644 patches/winnt-conf/2.4.6.42-shlibs-cxx
18 create mode 100644 patches/winnt-conf/2.4.6.42-strip
19
20 diff --git a/patches/winnt-conf/2.4.6.42-global-syms b/patches/winnt-conf/2.4.6.42-global-syms
21 new file mode 100644
22 index 0000000..704ee84
23 --- /dev/null
24 +++ b/patches/winnt-conf/2.4.6.42-global-syms
25 @@ -0,0 +1,129 @@
26 +--- configure
27 ++++ configure
28 +@@ -7115,11 +7115,11 @@
29 + # Define system-specific variables.
30 + case $host_os in
31 + aix*)
32 + symcode='[BCDT]'
33 + ;;
34 +-cygwin* | mingw* | pw32* | cegcc*)
35 ++cygwin* | mingw* | pw32* | cegcc* | winnt*)
36 + symcode='[ABCDGISTW]'
37 + ;;
38 + hpux*)
39 + if test ia64 = "$host_cpu"; then
40 + symcode='[ABCDEGRST]'
41 +@@ -7154,46 +7154,56 @@
42 + symcode='[ABCDGIRSTW]' ;;
43 + esac
44 +
45 + if test "$lt_cv_nm_interface" = "MS dumpbin"; then
46 + # Gets list of data symbols to import.
47 +- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
48 ++ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/\1/p'"
49 + # Adjust the below global symbol transforms to fixup imported variables.
50 +- lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
51 +- lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
52 ++ lt_cdecl_hook=" -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern __declspec(dllimport) char \1;/p'"
53 ++ lt_c_name_hook=" -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"\1\", (void *) 0},/p'"
54 + lt_c_name_lib_hook="\
55 +- -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
56 +- -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
57 ++ -e 's/^I .* \(lib[a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"\1\", (void *) 0},/p'\
58 ++ -e 's/^I .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"lib\1\", (void *) 0},/p'"
59 + else
60 + # Disable hooks by default.
61 + lt_cv_sys_global_symbol_to_import=
62 + lt_cdecl_hook=
63 + lt_c_name_hook=
64 + lt_c_name_lib_hook=
65 ++ case $host_os in
66 ++ winnt*)
67 ++ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/\1/p'"
68 ++ lt_cdecl_hook=" -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern __declspec(dllimport) char \1;/p'"
69 ++ lt_c_name_hook=" -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"\1\", (void *) 0},/p'"
70 ++ lt_c_name_lib_hook="\
71 ++ -e 's/^D [^ ]* \(lib[a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"\1\", (void *) 0},/p'\
72 ++ -e 's/^D [^ ]* \([a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"lib\1\", (void *) 0},/p'"
73 ++ ;;
74 ++ esac
75 + fi
76 +
77 + # Transform an extracted symbol line into a proper C declaration.
78 + # Some systems (esp. on ia64) link data and code symbols differently,
79 + # so use this general approach.
80 + lt_cv_sys_global_symbol_to_cdecl="sed -n"\
81 + $lt_cdecl_hook\
82 +-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
83 +-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
84 ++" -e 's/^T .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern int \1();/p'"\
85 ++" -e 's/^$symcode$symcode* .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/extern char \1;/p'"
86 +
87 + # Transform an extracted symbol line into symbol name and symbol address
88 + lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
89 + $lt_c_name_hook\
90 + " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
91 +-" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
92 ++" -e 's/^$symcode$symcode* .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"\1\", (void *) \&\1},/p'"
93 +
94 + # Transform an extracted symbol line into symbol name with lib prefix and
95 + # symbol address.
96 + lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
97 + $lt_c_name_lib_hook\
98 + " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
99 +-" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
100 +-" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
101 ++" -e 's/^$symcode$symcode* .* \(lib[a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"\1\", (void *) \&\1},/p'"\
102 ++" -e 's/^$symcode$symcode* .* \([a-zA-Z_][0-9a-zA-Z_]*\)$/ {\"lib\1\", (void *) \&\1},/p'"
103 +
104 + # Handle CRLF in mingw tool chain
105 + opt_cr=
106 + case $build_os in
107 + mingw*)
108 +@@ -7203,35 +7213,43 @@
109 +
110 + # Try without a prefix underscore, then with it.
111 + for ac_symprfx in "" "_"; do
112 +
113 + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
114 +- symxfrm="\\1 $ac_symprfx\\2 \\2"
115 ++ # In Windows import libraries, symbols may be prefixed with __imp_, as well
116 ++ # as __nm_ when using GNU ld. The leading underscore (in 32bit) comes after
117 ++ # the __imp_ and __nm_ prefix, so make sure to strip the underscore from the
118 ++ # symbol name instead of the __imp_ or __nm_ prefix, leaving these prefixes
119 ++ # intact in the symbol pipe output.
120 ++ symxfrm="\\1 \\2$ac_symprfx\\3 \\2\\3"
121 +
122 + # Write the raw and C identifiers.
123 + if test "$lt_cv_nm_interface" = "MS dumpbin"; then
124 + # Fake it for dumpbin and say T for any non-static function,
125 + # D for any global variable and I for any imported variable.
126 + # Also find C++ and __fastcall symbols from MSVC++ or ICC,
127 +- # which start with @ or ?.
128 ++ # which start with @ or ?. And Cygwin gawk-4.1.4-3 and newer
129 ++ # treats input as binary, have to drop carriage return first.
130 + lt_cv_sys_global_symbol_pipe="$AWK '"\
131 ++" {sub(/\\r\$/,\"\")};"\
132 + " {last_section=section; section=\$ 3};"\
133 + " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
134 + " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
135 + " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
136 + " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
137 + " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
138 + " \$ 0!~/External *\|/{next};"\
139 + " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
140 + " {if(hide[section]) next};"\
141 + " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
142 ++" \$ 0~/ [0-9a-fA-F]*[1-9a-fA-F][0-9a-fA-F]* UNDEF /{f=\"C\"};"\
143 + " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
144 + " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
145 + " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
146 + " ' prfx=^$ac_symprfx"
147 + else
148 +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
149 ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\(__imp_\|__nm_\)\{0,1\}$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
150 + fi
151 + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
152 +
153 + # Check to see that the pipe works correctly.
154 + pipe_works=no
155 diff --git a/patches/winnt-conf/2.4.6.42-shlibs b/patches/winnt-conf/2.4.6.42-shlibs
156 new file mode 100644
157 index 0000000..840e867
158 --- /dev/null
159 +++ b/patches/winnt-conf/2.4.6.42-shlibs
160 @@ -0,0 +1,15 @@
161 +--- configure
162 ++++ configure
163 +@@ -10228,11 +10262,11 @@
164 + # preloaded symbol tables.
165 + # Exclude shared library initialization/finalization symbols.
166 + extract_expsyms_cmds=
167 +
168 + case $host_os in
169 +- cygwin* | mingw* | pw32* | cegcc*)
170 ++ cygwin* | mingw* | pw32* | cegcc* | winnt*)
171 + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
172 + # When not using gcc, we currently assume that we are using
173 + # Microsoft Visual C++ or Intel C++ Compiler.
174 + if test yes != "$GCC"; then
175 + with_gnu_ld=no
176 diff --git a/patches/winnt-conf/2.4.6.42-shlibs-c b/patches/winnt-conf/2.4.6.42-shlibs-c
177 new file mode 100644
178 index 0000000..ad16aad
179 --- /dev/null
180 +++ b/patches/winnt-conf/2.4.6.42-shlibs-c
181 @@ -0,0 +1,20 @@
182 +--- configure
183 ++++ configure
184 +@@ -10884,10 +10918,17 @@
185 +
186 + bsdi[45]*)
187 + export_dynamic_flag_spec=-rdynamic
188 + ;;
189 +
190 ++ winnt*)
191 ++ exclude_expsyms='__NULL_IMPORT_DESCRIPTOR|__IMPORT_DESCRIPTOR_.*'
192 ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags -o $output_objdir/$soname -Wl,--out-implib,$lib'
193 ++ archive_cmds_need_lc=no
194 ++ allow_undefined_flag=unsupported
195 ++ ;;
196 ++
197 + cygwin* | mingw* | pw32* | cegcc*)
198 + # When not using gcc, we currently assume that we are using
199 + # Microsoft Visual C++ or Intel C++ Compiler.
200 + # hardcode_libdir_flag_spec is actually meaningless, as there is
201 + # no search path for DLLs.
202 diff --git a/patches/winnt-conf/2.4.6.42-shlibs-cxx b/patches/winnt-conf/2.4.6.42-shlibs-cxx
203 new file mode 100644
204 index 0000000..71db848
205 --- /dev/null
206 +++ b/patches/winnt-conf/2.4.6.42-shlibs-cxx
207 @@ -0,0 +1,33 @@
208 +--- configure
209 ++++ configure
210 +@@ -15327,10 +15450,16 @@
211 + ld_shlibs_CXX=no
212 + ;;
213 + esac
214 + ;;
215 +
216 ++ winnt*)
217 ++ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags -o $output_objdir/$soname -Wl,--out-implib,$lib'
218 ++ archive_cmds_need_lc_CXX=no
219 ++ allow_undefined_flag_CXX=unsupported
220 ++ ;;
221 ++
222 + cygwin* | mingw* | pw32* | cegcc*)
223 + case $GXX,$cc_basename in
224 + ,cl* | no,cl* | ,icl* | no,icl*)
225 + # Native MSVC or ICC
226 + # hardcode_libdir_flag_spec is actually meaningless, as there is
227 +@@ -16902,10 +17036,13 @@
228 + fi
229 + ;;
230 + pw32*)
231 + export_symbols_cmds_CXX=$ltdll_cmds
232 + ;;
233 ++ winnt*)
234 ++ exclude_expsyms_CXX='__NULL_IMPORT_DESCRIPTOR|__IMPORT_DESCRIPTOR_.*'
235 ++ ;;
236 + cygwin* | mingw* | cegcc*)
237 + case $cc_basename in
238 + cl* | icl*)
239 + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
240 + ;;
241 diff --git a/patches/winnt-conf/2.4.6.42-strip b/patches/winnt-conf/2.4.6.42-strip
242 new file mode 100644
243 index 0000000..743a2fb
244 --- /dev/null
245 +++ b/patches/winnt-conf/2.4.6.42-strip
246 @@ -0,0 +1,30 @@
247 +--- configure
248 ++++ configure
249 +@@ -13205,14 +13315,24 @@
250 + if test -z "$STRIP"; then
251 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
252 + $as_echo "no" >&6; }
253 + else
254 + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
255 +- old_striplib="$STRIP --strip-debug"
256 +- striplib="$STRIP --strip-unneeded"
257 +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
258 ++ case $host_os in
259 ++ winnt*)
260 ++ # Stripping is not save here, since POSIXish host utils may
261 ++ # be detected, but we operate on native windows libraries.
262 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
263 ++$as_echo "no" >&6; }
264 ++ ;;
265 ++ *)
266 ++ old_striplib="$STRIP --strip-debug"
267 ++ striplib="$STRIP --strip-unneeded"
268 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
269 + $as_echo "yes" >&6; }
270 ++ ;;
271 ++ esac
272 + else
273 + case $host_os in
274 + darwin*)
275 + # FIXME - insert some real tests, host_os isn't really good enough
276 + striplib="$STRIP -x"
277 --
278 2.22.0