Skip to content

linker: Synchronize native library search in rustc and linker - #129366

Merged
bors merged 3 commits into
rust-lang:masterfrom
petrochenkov:libsearch
Aug 31, 2024
Merged

linker: Synchronize native library search in rustc and linker#129366
bors merged 3 commits into
rust-lang:masterfrom
petrochenkov:libsearch

Conversation

@petrochenkov

@petrochenkovpetrochenkov commented Aug 21, 2024

Copy link
Copy Markdown
Contributor

Also search for static libraries with alternative naming (libname.a) on MSVC when producing executables or dynamic libraries, and not just rlibs.

This unblocks #123436.

try-job: x86_64-msvc

@rustbot

Copy link
Copy Markdown
Collaborator

r? @TaKO8Ki

rustbot has assigned @TaKO8Ki.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Aug 21, 2024
@rust-log-analyzer

This comment has been minimized.

@petrochenkov

Copy link
Copy Markdown
ContributorAuthor

Refactoring ControlFlow into Option went wrong.
Updated.

@jieyouxujieyouxu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this LGTM in general. One question about if we want to want to add a test for the alternate naming scheme that's accepted by rustc but not the linker, but I don't feel too strongly about that, so feel free to r=me with or without the test.

Comment threadcompiler/rustc_codegen_ssa/src/back/linker.rs
Comment threadcompiler/rustc_metadata/src/native_libs.rs Outdated
Comment threadcompiler/rustc_codegen_ssa/src/back/link.rs
@jieyouxu

Copy link
Copy Markdown
Member

r? jieyouxu

@rustbotrustbot assigned jieyouxu and unassigned TaKO8KiAug 22, 2024
@rustbotrustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 22, 2024
@bors

This comment was marked as resolved.

@rustbotrustbot added the A-run-make Area: port run-make Makefiles to rmake.rs label Aug 27, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

This PR modifies tests/run-make/. If this PR is trying to port a Makefile
run-make test to use rmake.rs, please update the
run-make port tracking issue
so we can track our progress. You can either modify the tracking issue
directly, or you can comment on the tracking issue and link this PR.

cc @jieyouxu

@petrochenkov

Copy link
Copy Markdown
ContributorAuthor

@bors try

@bors

bors commented Aug 27, 2024

Copy link
Copy Markdown
Collaborator

⌛ Trying commit cbaa24d with merge 04ee94a...

bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 27, 2024
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
@bors

bors commented Aug 27, 2024

Copy link
Copy Markdown
Collaborator

☀️ Try build successful - checks-actions
Build commit: 04ee94a (04ee94af453c9ea3cc7151cb81c0e8003be522d1)

Previously `libname.a` naming was supported as a fallback when producing rlibs, but not when producing executables or dynamic libraries
@petrochenkov

Copy link
Copy Markdown
ContributorAuthor

@rustbot ready

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Aug 27, 2024

@jieyouxujieyouxu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, feel free to r=me after PR CI is green.

workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Aug 29, 2024
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Aug 29, 2024
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 29, 2024
…kingjubilee
Rollup of 9 pull requests
Successful merges:
- rust-lang#120221 (Don't make statement nonterminals match pattern nonterminals)
- rust-lang#127912 (std: make `thread::current` available in all `thread_local!` destructors)
- rust-lang#128166 (Improved `checked_isqrt` and `isqrt` methods)
- rust-lang#129123 (rustdoc-json: Add test for `Self` type)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129675 (allow BufReader::peek to be called on unsized types)
r? `@ghost`
`@rustbot` modify labels: rollup
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Aug 29, 2024
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 29, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#120221 (Don't make statement nonterminals match pattern nonterminals)
- rust-lang#129123 (rustdoc-json: Add test for `Self` type)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129675 (allow BufReader::peek to be called on unsized types)
- rust-lang#129731 (Allow running `./x.py test compiler`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 29, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#120221 (Don't make statement nonterminals match pattern nonterminals)
- rust-lang#129123 (rustdoc-json: Add test for `Self` type)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129675 (allow BufReader::peek to be called on unsized types)
- rust-lang#129731 (Allow running `./x.py test compiler`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 29, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#120221 (Don't make statement nonterminals match pattern nonterminals)
- rust-lang#129123 (rustdoc-json: Add test for `Self` type)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129675 (allow BufReader::peek to be called on unsized types)
- rust-lang#129731 (Allow running `./x.py test compiler`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 29, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#120221 (Don't make statement nonterminals match pattern nonterminals)
- rust-lang#129123 (rustdoc-json: Add test for `Self` type)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129675 (allow BufReader::peek to be called on unsized types)
- rust-lang#129731 (Allow running `./x.py test compiler`)
r? `@ghost`
`@rustbot` modify labels: rollup
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Aug 30, 2024
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 30, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#126183 (Separate core search logic with search ui)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129403 (Ban non-array SIMD)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129731 (Allow running `./x.py test compiler`)
- rust-lang#129754 (wasi: Fix sleeping for `Duration::MAX`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 30, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#126183 (Separate core search logic with search ui)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129403 (Ban non-array SIMD)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129731 (Allow running `./x.py test compiler`)
- rust-lang#129754 (wasi: Fix sleeping for `Duration::MAX`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 30, 2024
…kingjubilee
Rollup of 8 pull requests
Successful merges:
- rust-lang#126183 (Separate core search logic with search ui)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129403 (Ban non-array SIMD)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129731 (Allow running `./x.py test compiler`)
- rust-lang#129754 (wasi: Fix sleeping for `Duration::MAX`)
r? `@ghost`
`@rustbot` modify labels: rollup
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Aug 31, 2024
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
This was referenced Aug 31, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 31, 2024
…iaskrgr
Rollup of 15 pull requests
Successful merges:
- rust-lang#120221 (Don't make statement nonterminals match pattern nonterminals)
- rust-lang#126183 (Separate core search logic with search ui)
- rust-lang#129123 (rustdoc-json: Add test for `Self` type)
- rust-lang#129366 (linker: Synchronize native library search in rustc and linker)
- rust-lang#129527 (Don't use `TyKind` in a lint)
- rust-lang#129534 (Deny `wasm_c_abi` lint to nudge the last 25%)
- rust-lang#129640 (Re-enable android tests/benches in alloc/core)
- rust-lang#129642 (Bump backtrace to 0.3.74~ish)
- rust-lang#129675 (allow BufReader::peek to be called on unsized types)
- rust-lang#129723 (Simplify some extern providers)
- rust-lang#129724 (Remove `Option<!>` return types.)
- rust-lang#129725 (Stop using `ty::GenericPredicates` for non-predicates_of queries)
- rust-lang#129731 (Allow running `./x.py test compiler`)
- rust-lang#129751 (interpret/visitor: make memory order iteration slightly more efficient)
- rust-lang#129754 (wasi: Fix sleeping for `Duration::MAX`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit 9f3ce40 into rust-lang:masterAug 31, 2024
@rustbotrustbot added this to the 1.82.0 milestone Aug 31, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Aug 31, 2024
Rollup merge of rust-lang#129366 - petrochenkov:libsearch, r=jieyouxu
linker: Synchronize native library search in rustc and linker
Also search for static libraries with alternative naming (`libname.a`) on MSVC when producing executables or dynamic libraries, and not just rlibs.
This unblocks rust-lang#123436.
try-job: x86_64-msvc
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 15, 2024
…-mingw-import-libraries, r=petrochenkov
linker: Allow MSVC to use import libraries following the Meson/MinGW convention
Hi all,
This PR implements support for `MsvcLinker` to use import libraries following Meson and the MinGW toolchain's naming convention. Meson [follows the `libfoo.dll.a` naming convention](https://mesonbuild.com/FAQ.html#why-does-building-my-project-with-msvc-output-static-libraries-called-libfooa) to disambiguate between static and import libraries.
This support already existed for static libraries (see rust-lang#100101), but not for dynamic libraries. The latter case was added by duplicating the logic in `native_libs::find_native_static_library`, but a separate case was added in `link_dylib_by_name` for the Windows CRT libraries which must be handled by the linker itself.
See for prerequisites rust-lang#129366, rust-lang#126094, and rust-lang#128370.
All feedback is appreciated!
Fixesrust-lang#122455
cc `@sdroege` `@nirbheek`
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 16, 2024
…-mingw-import-libraries, r=petrochenkov
linker: Allow MSVC to use import libraries following the Meson/MinGW convention
Hi all,
This PR implements support for `MsvcLinker` to use import libraries following Meson and the MinGW toolchain's naming convention. Meson [follows the `libfoo.dll.a` naming convention](https://mesonbuild.com/FAQ.html#why-does-building-my-project-with-msvc-output-static-libraries-called-libfooa) to disambiguate between static and import libraries.
This support already existed for static libraries (see rust-lang#100101), but not for dynamic libraries. The latter case was added by duplicating the logic in `native_libs::find_native_static_library`, but a separate case was added in `link_dylib_by_name` for the Windows CRT libraries which must be handled by the linker itself.
See for prerequisites rust-lang#129366, rust-lang#126094, and rust-lang#128370.
All feedback is appreciated!
Fixesrust-lang#122455
cc `@sdroege` `@nirbheek`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 16, 2024
…nd-mingw-import-libraries, r=petrochenkov
linker: Allow MSVC to use import libraries following the Meson/MinGW convention
Hi all,
This PR implements support for `MsvcLinker` to use import libraries following Meson and the MinGW toolchain's naming convention. Meson [follows the `libfoo.dll.a` naming convention](https://mesonbuild.com/FAQ.html#why-does-building-my-project-with-msvc-output-static-libraries-called-libfooa) to disambiguate between static and import libraries.
This support already existed for static libraries (see rust-lang#100101), but not for dynamic libraries. The latter case was added by duplicating the logic in `native_libs::find_native_static_library`, but a separate case was added in `link_dylib_by_name` for the Windows CRT libraries which must be handled by the linker itself.
See for prerequisites rust-lang#129366, rust-lang#126094, and rust-lang#128370.
All feedback is appreciated!
Fixesrust-lang#122455
cc `@sdroege` `@nirbheek`
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 16, 2024
Rollup merge of rust-lang#123436 - amyspark:allow-msvc-to-use-meson-and-mingw-import-libraries, r=petrochenkov
linker: Allow MSVC to use import libraries following the Meson/MinGW convention
Hi all,
This PR implements support for `MsvcLinker` to use import libraries following Meson and the MinGW toolchain's naming convention. Meson [follows the `libfoo.dll.a` naming convention](https://mesonbuild.com/FAQ.html#why-does-building-my-project-with-msvc-output-static-libraries-called-libfooa) to disambiguate between static and import libraries.
This support already existed for static libraries (see rust-lang#100101), but not for dynamic libraries. The latter case was added by duplicating the logic in `native_libs::find_native_static_library`, but a separate case was added in `link_dylib_by_name` for the Windows CRT libraries which must be handled by the linker itself.
See for prerequisites rust-lang#129366, rust-lang#126094, and rust-lang#128370.
All feedback is appreciated!
Fixesrust-lang#122455
cc `@sdroege` `@nirbheek`
@petrochenkov
petrochenkov deleted the libsearch branch February 22, 2025 18:28
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-run-makeArea: port run-make Makefiles to rmake.rsS-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@petrochenkov@rustbot@rust-log-analyzer@jieyouxu@bors@TaKO8Ki