Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cargo: Use the right LLVM tools and arguments for MSVC cross-compilat…
…ion (#160) `xbuild` uses the headers from `xwin` to support cross-compiling, but doesn't fully replicate the other setup steps that it proposes to provide a valid and working cross-compilation setup to MSVC. We need to make the following changes: - `clang-cl` must be used (a `clang` driver with `cl.exe` interface), as all native projects will call `CC`/`CXX` with flags that are only compatible with `cl.exe`; - `-I` does not seem to set up the system headers correctly, for this `-imsvc` should be used; - Remove `-Clink-arg=-fuse-ld=lld-link` because we have already selected a linker for Rust with the `LINKER` env var (see warning below). We might instead want to set it in `C(XX)FLAGS` so that when a native crate uses `CC`/`CXX` to link libraries, it can use `lld-link` instead of (probably, like `cargo`/`rustc` when `LINKER` is unsed) using `link.exe` by default; - Unset forced static CRT and `stdlib=libc++` selection, as these don't appear to ever be needed, and cause some builds to fail (when crates are changing these config options themselves?): = note: rust-lld: warning: ignoring unknown argument '-fuse-ld=lld-link' rust-lld: error: /failifmismatch: mismatch detected for 'RuntimeLibrary': >>> libbasis_universal_sys-4f5abd4a27e6aa13.rlib(basisu_resample_filters.o) has value MT_StaticRelease >>> libintel_tex_2-6d9bd3438efd06d9.rlib(ispc_texcomp_astc.o) has value MD_DynamicRelease
- Loading branch information