Skip to content

Commit 396acb3

Browse files
author
Andarwinux
committed
rustup: switch to nightly channel
1. unlock -Z option support. 2. download rust-src, for build rust stdlib from source. 3. enable parallel-rustc, for faster compile. 4. libdovi,rav1e: enable build-std, use gnullvm target for clang. This will unlock aarch64 support. build-std is for unlocking gnullvm target, but gnu target can also use this to get latest std and some linker opt from gcc/clang wrapper for free.
1 parent 874ab66 commit 396acb3

6 files changed

Lines changed: 24 additions & 12 deletions

File tree

cargo_config.in

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,20 @@
22
git-fetch-with-cli = true
33

44
[target.@TARGET_CPU@-pc-windows-gnu]
5-
linker = "@CMAKE_INSTALL_PREFIX@/bin/@TARGET_ARCH@-gcc"
5+
linker = "@CMAKE_INSTALL_PREFIX@/bin/@TARGET_ARCH@-g++"
66
ar = "@CMAKE_INSTALL_PREFIX@/bin/@TARGET_ARCH@-ar"
7-
rustflags = ["-C", "target-cpu=@GCC_ARCH@"]
7+
rustflags = ["-C", "target-cpu=@GCC_ARCH@", "-Z", "threads=@CPU_COUNT@"]
8+
9+
[target.@TARGET_CPU@-pc-windows-gnullvm]
10+
linker = "@CMAKE_INSTALL_PREFIX@/bin/@TARGET_ARCH@-clang++"
11+
ar = "@CMAKE_INSTALL_PREFIX@/bin/@TARGET_ARCH@-ar"
12+
rustflags = ["-C", "target-cpu=@GCC_ARCH@", "-Z", "threads=@CPU_COUNT@"]
813

914
[profile.release]
1015
panic = "abort"
1116
strip = true
17+
opt-level = 3
18+
codegen-units = 1
19+
20+
[build]
21+
rustflags = ["-Z", "threads=@CPU_COUNT@"]

cmake/packages_check.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ if(COMPILER_TOOLCHAIN STREQUAL "gcc")
99
set(mpv_add_debuglink COMMAND ${EXEC} ${TARGET_ARCH}-objcopy --only-keep-debug <BINARY_DIR>/mpv.exe <BINARY_DIR>/mpv.debug
1010
COMMAND ${EXEC} ${TARGET_ARCH}-strip -s <BINARY_DIR>/mpv.exe
1111
COMMAND ${EXEC} ${TARGET_ARCH}-objcopy --add-gnu-debuglink=<BINARY_DIR>/mpv.debug <BINARY_DIR>/mpv.exe)
12+
set(rust_target "gnu")
1213
elseif(COMPILER_TOOLCHAIN STREQUAL "clang")
1314
set(vapoursynth_pkgconfig_libs "-lVapourSynth -Wl,-delayload=VapourSynth.dll")
1415
set(vapoursynth_script_pkgconfig_libs "-lVSScript -Wl,-delayload=VSScript.dll")
@@ -18,9 +19,10 @@ elseif(COMPILER_TOOLCHAIN STREQUAL "clang")
1819
set(ffmpeg_hardcoded_tables "--enable-hardcoded-tables")
1920
set(mpv_lto_mode "-Db_lto_mode=thin")
2021
set(mpv_copy_debug COMMAND ${CMAKE_COMMAND} -E copy <BINARY_DIR>/mpv.pdb ${CMAKE_CURRENT_BINARY_DIR}/mpv-debug/mpv.pdb)
22+
set(rust_target "gnullvm")
2123
if(CLANG_PACKAGES_LTO)
2224
set(cargo_lto_rustflags "CARGO_PROFILE_RELEASE_LTO=thin
23-
RUSTFLAGS='-C linker-plugin-lto -C embed-bitcode -C lto=thin'")
25+
RUSTFLAGS='-C target-cpu=${GCC_ARCH} -C linker-plugin-lto -C embed-bitcode -C lto=thin -Z threads=${CPU_COUNT}'")
2426
set(ffmpeg_lto "--enable-lto=thin")
2527
set(x264_lto "--enable-lto")
2628
if(GCC_ARCH_HAS_AVX)

packages/libdovi.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ ExternalProject_Add(libdovi
1010
CONFIGURE_COMMAND ""
1111
BUILD_COMMAND ${EXEC}
1212
CARGO_BUILD_TARGET_DIR=<BINARY_DIR>
13-
CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
1413
${cargo_lto_rustflags}
1514
cargo cinstall
1615
--manifest-path <SOURCE_DIR>/dolby_vision/Cargo.toml
1716
--prefix ${MINGW_INSTALL_PREFIX}
18-
--target ${TARGET_CPU}-pc-windows-gnu
17+
--target ${TARGET_CPU}-pc-windows-${rust_target}
18+
-Z build-std=std,panic_abort,core,alloc
1919
--release
2020
--library-type staticlib
2121
INSTALL_COMMAND ""

packages/rav1e.cmake

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,16 @@ ExternalProject_Add(rav1e
77
CONFIGURE_COMMAND ""
88
BUILD_COMMAND ${EXEC}
99
CARGO_BUILD_TARGET_DIR=<BINARY_DIR>
10-
CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
1110
CARGO_PROFILE_RELEASE_DEBUG=false
1211
CARGO_PROFILE_RELEASE_INCREMENTAL=false
1312
CARGO_PROFILE_RELEASE_LTO=off
1413
${cargo_lto_rustflags}
1514
cargo cinstall
1615
--manifest-path <SOURCE_DIR>/Cargo.toml
1716
--prefix ${MINGW_INSTALL_PREFIX}
18-
--target ${TARGET_CPU}-pc-windows-gnu
17+
--target ${TARGET_CPU}-pc-windows-${rust_target}
18+
-Z build-std=std,panic_abort,core,alloc
1919
--release
20-
--crt-static
2120
--library-type staticlib
2221
INSTALL_COMMAND ""
2322
LOG_DOWNLOAD 1 LOG_UPDATE 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1

toolchain/llvm/llvm-compiler.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/bin/sh
22
PROG=@CMAKE_INSTALL_PREFIX@/bin/@clang_compiler@
3-
TARGET=@TARGET_ARCH@
4-
FLAGS="$FLAGS -target $TARGET -march=@GCC_ARCH@ -mtune=@M_TUNE@"
3+
TARGET=@TARGET_CPU@
4+
FLAGS="$FLAGS -target $TARGET-pc-windows-gnu -march=@GCC_ARCH@ -mtune=@M_TUNE@"
55
FLAGS="$FLAGS @driver_mode@ --sysroot @MINGW_INSTALL_PREFIX@"
66
FLAGS="$FLAGS -fuse-ld=lld --ld-path=@TARGET_ARCH@-ld"
77
FLAGS="$FLAGS @cfi@ @opt@"
8-
FLAGS="$FLAGS -gcodeview"
8+
FLAGS="$FLAGS -gcodeview -pthread"
99
FLAGS="$FLAGS -Wno-unused-command-line-argument"
1010

1111
if [ "$LTO" != "0" ] && [ "@CLANG_PACKAGES_LTO@" = "ON" ]; then

toolchain/rustup.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ ExternalProject_Add(rustup
44
SOURCE_DIR rustup-prefix/src
55
CONFIGURE_COMMAND ${EXEC} CONF=1
66
curl -sSf https://sh.rustup.rs |
7-
sh -s -- -y --default-toolchain stable --target x86_64-pc-windows-gnu,i686-pc-windows-gnu --no-modify-path --profile minimal
7+
sh -s -- -y --default-toolchain nightly --no-modify-path --profile minimal
88
BUILD_COMMAND ${EXEC} rustup update
9+
COMMAND ${EXEC} rustup component add rust-src
910
INSTALL_COMMAND ${EXEC} cargo install cargo-c --profile=release-strip --features=vendored-openssl
1011
LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
1112
)

0 commit comments

Comments
 (0)