Make the macOS deployment target and SDK version explicit
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
## Problem
`llvm/src/backend.rs` currently passes hard-coded `-platform_version macos 11.0 11.0` arguments to `ld64.lld`. This can produce incorrect load commands when the selected SDK or deployment policy differs and gives users no supported override.
## Scope
- Define precedence for an explicit Wave option, `MACOSX_DEPLOYMENT_TARGET`, and the compiler default.
- Derive or accept the SDK version separately from the minimum deployment target.
- Validate version strings before invoking the linker.
- Render both values in dry-run and target-spec output.
- Add linker-argument tests for x86_64 and AArch64 Darwin.
- Keep the default compatible with the current minimum unless the project deliberately changes it.
## Completion criteria
- [ ] No platform version is silently duplicated as both minimum and SDK version.
- [ ] Invalid values fail with a usage diagnostic.
- [ ] Explicit sysroot/SDK selection is reflected in linker arguments.
- [ ] Existing macOS CI builds and runtime tests pass.
- [ ] Cross-link behavior is documented.
Contributor guide
Research direction
Start by reading llvm/src/backend.rs and tracing how Darwin linker arguments, dry-run output, and target-spec output are assembled. Identify the existing x86_64 and AArch64 Darwin linker-argument tests or their test entry points, then define the precedence and validation behavior. Done means separate deployment and SDK values are rendered, invalid values produce usage diagnostics, and the documented cross-link behavior and existing macOS checks pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- compilers, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100