Skip to content

Commit e99a156

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 389315c commit e99a156

File tree

5 files changed

+19
-8
lines changed

5 files changed

+19
-8
lines changed

cargo_config.in

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,17 @@ git-fetch-with-cli = true
44
[target.@TARGET_CPU@-pc-windows-gnu]
55
linker = "@CMAKE_INSTALL_PREFIX@/bin/@TARGET_ARCH@-gcc"
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@", "-C", "control-flow-guard=yes", "-Z", "threads=@CPU_COUNT@"]
813

914
[profile.release]
1015
panic = "abort"
1116
strip = true
17+
opt-level = 3
18+
19+
[build]
20+
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 control-flow-guard=yes -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/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)