Commit f9ca398
committed
fix(pack,prepare): the neutral link form only where it says the same thing
e2e 257 caught a regression the previous commit introduced, and the reason is
worth keeping: a leg's link line is not always just a library reference.
A PE/MinGW shared leg links with `-L… -Wl,-Bdynamic -lmathkit`, and
`-Wl,-Bdynamic` only works IMMEDIATELY BEFORE the `-l` it enables — mcpp gives PE
executables `-static`, which otherwise leaves ld in static-only mode where it
refuses an import library and says `have you installed the static version of the
mathkit library?`, naming neither the DLL nor `-static`.
The first attempt cleared the leg's ldflags wholesale and lost the flag. The
second kept it but rendered the library reference through the neutral channel,
which puts it in a different slot on the command line — so the flag and its
argument were separated and the same failure came back. Both are the same
mistake: treating a hand-tuned link line as if it were a two-field record.
So the neutral form is emitted only for legs where it is EQUIVALENT, and the
PE/MinGW shared leg keeps the spelling that works. It costs nothing — a PE/GNU
leg is not an MSVC-ABI leg, and cl.exe, the reason the neutral form exists, never
reads it. On the consuming side only the library references are replaced, never
the whole list.1 parent a0d9874 commit f9ca398
4 files changed
Lines changed: 57 additions & 16 deletions
File tree
- docs
- zh
- src
- build
- pack
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
329 | 329 | | |
330 | 330 | | |
331 | 331 | | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
337 | 345 | | |
338 | 346 | | |
339 | 347 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
295 | 295 | | |
296 | 296 | | |
297 | 297 | | |
298 | | - | |
| 298 | + | |
299 | 299 | | |
300 | 300 | | |
301 | 301 | | |
302 | 302 | | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
303 | 309 | | |
304 | 310 | | |
305 | 311 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
235 | 246 | | |
236 | | - | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
237 | 251 | | |
238 | 252 | | |
239 | 253 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
243 | 243 | | |
244 | 244 | | |
245 | 245 | | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
259 | 272 | | |
260 | 273 | | |
261 | 274 | | |
| |||
0 commit comments