Skip to content

Commit 64746a3

Browse files
committed
Allow prebuilt-NASM w/ Cmake toolchain
1 parent 78258d2 commit 64746a3

File tree

5 files changed

+95
-34
lines changed

5 files changed

+95
-34
lines changed

.github/workflows/cross.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,39 @@ jobs:
9494
unset AWS_LC_SYS_EXTERNAL_BINDGEN
9595
cross test -p aws-lc-sys --release "${CROSS_TEST_EXTRA_FLAG}" --features ssl --target ${{ matrix.target[0] }}
9696
97+
aws-lc-rs-cross-prebuilt-nasm:
98+
if: github.repository_owner == 'aws'
99+
name: cross prebuilt-NASM - ${{ matrix.target[0] }}
100+
runs-on: ubuntu-latest
101+
env:
102+
AWS_LC_SYS_PREBUILT_NASM: 1
103+
strategy:
104+
fail-fast: false
105+
matrix:
106+
target:
107+
- [ x86_64-pc-windows-gnu, 0, 1 ]
108+
steps:
109+
- uses: actions/checkout@v3
110+
with:
111+
submodules: "recursive"
112+
- uses: dtolnay/rust-toolchain@master
113+
with:
114+
toolchain: "stable"
115+
- name: Install cross
116+
run: cargo install cross --git https://github.com/cross-rs/cross
117+
- uses: dtolnay/rust-toolchain@master
118+
id: toolchain
119+
with:
120+
toolchain: "stable"
121+
target: ${{ matrix.target[0] }}
122+
- name: Set Rust toolchain override
123+
run: rustup override set ${{ steps.toolchain.outputs.name }}
124+
- if: ${{ !startsWith(matrix.target[0], 'x86_64') }}
125+
run: |
126+
echo 'AWS_LC_RS_DISABLE_SLOW_TESTS=1' >> "$GITHUB_ENV"
127+
- name: Cross-compilation (test release)
128+
run: CROSS_CONFIG=$(pwd)/Cross.toml.passthrough-only cross test -p aws-lc-rs --no-run --features unstable --target ${{ matrix.target[0] }}
129+
97130
aws-lc-rs-cross-0_2_5-test:
98131
if: github.repository_owner == 'aws'
99132
name: cross tests ${{ matrix.target }}

Cross.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ passthrough = [
3434
"AWS_LC_SYS_CMAKE_BUILDER",
3535
"AWS_LC_SYS_EXTERNAL_BINDGEN",
3636
"AWS_LC_SYS_NO_PREFIX",
37+
"AWS_LC_SYS_PREBUILT_NASM",
3738
"AWS_LC_SYS_PREGENERATING_BINDINGS",
3839
"AWS_LC_SYS_STATIC",
3940
"BINDGEN_EXTRA_CLANG_ARGS",

Cross.toml.passthrough-only

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
[build.env]
3+
passthrough = [
4+
"AWS_LC_FIPS_SYS_EXTERNAL_BINDGEN",
5+
"AWS_LC_FIPS_SYS_NO_PREFIX",
6+
"AWS_LC_FIPS_SYS_PREGENERATING_BINDINGS",
7+
"AWS_LC_FIPS_SYS_STATIC",
8+
"AWS_LC_RS_DISABLE_SLOW_TESTS",
9+
"AWS_LC_SYS_CC_SRC_COLLECTOR",
10+
"AWS_LC_SYS_CFLAGS",
11+
"AWS_LC_SYS_CMAKE_BUILDER",
12+
"AWS_LC_SYS_EXTERNAL_BINDGEN",
13+
"AWS_LC_SYS_NO_PREFIX",
14+
"AWS_LC_SYS_PREBUILT_NASM",
15+
"AWS_LC_SYS_PREGENERATING_BINDINGS",
16+
"AWS_LC_SYS_STATIC",
17+
"BINDGEN_EXTRA_CLANG_ARGS",
18+
"GOPROXY",
19+
]

Cross.toml.x86_64-unknown-linux-gnu

Whitespace-only changes.

aws-lc-sys/builder/cmake_builder.rs

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ impl CmakeBuilder {
166166
// Allow environment to specify CMake toolchain.
167167
if let Some(toolchain) = optional_env_optional_crate_target("CMAKE_TOOLCHAIN_FILE") {
168168
set_env_for_target("CMAKE_TOOLCHAIN_FILE", toolchain);
169+
// Only setup if allowed by environment variable
170+
if use_prebuilt_nasm() && Some(true) == allow_prebuilt_nasm() {
171+
self.configure_prebuilt_nasm(&mut cmake_cfg);
172+
}
169173
return cmake_cfg;
170174
}
171175
// We only consider compiler CFLAGS when no cmake toolchain is set
@@ -244,7 +248,7 @@ impl CmakeBuilder {
244248
};
245249
emit_warning(
246250
&format!(
247-
"Neither script could be tested for execution, falling back to target-based selection: {}",
251+
"Neither script could be tested for execution, falling back to target-based selection: {}",
248252
fallback_script.file_name().unwrap().to_str().unwrap()));
249253
fallback_script
250254
}
@@ -304,42 +308,46 @@ impl CmakeBuilder {
304308
}
305309
}
306310
if use_prebuilt_nasm() {
307-
emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
308-
emit_warning("!!! Using pre-built NASM binaries !!!");
309-
emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
310-
311-
let script_path = self.select_prebuilt_nasm_script();
312-
let script_path = script_path.display().to_string();
313-
let script_path = script_path.replace('\\', "/");
314-
315-
cmake_cfg.define("CMAKE_ASM_NASM_COMPILER", script_path.as_str());
316-
// Without the following definition, the build fails with a message similar to the one
317-
// reported here: https://gitlab.kitware.com/cmake/cmake/-/issues/19453
318-
// The variables below were found in the associated fix:
319-
// https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4257/diffs
320-
cmake_cfg.define(
321-
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded",
322-
"",
323-
);
324-
cmake_cfg.define(
325-
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL",
326-
"",
327-
);
328-
cmake_cfg.define(
329-
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug",
330-
"",
331-
);
332-
cmake_cfg.define(
333-
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL",
334-
"",
335-
);
336-
cmake_cfg.define(
337-
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_ProgramDatabase",
338-
"",
339-
);
311+
self.configure_prebuilt_nasm(cmake_cfg);
340312
}
341313
}
342314

315+
fn configure_prebuilt_nasm(&self, cmake_cfg: &mut cmake::Config) {
316+
emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
317+
emit_warning("!!! Using pre-built NASM binaries !!!");
318+
emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
319+
320+
let script_path = self.select_prebuilt_nasm_script();
321+
let script_path = script_path.display().to_string();
322+
let script_path = script_path.replace('\\', "/");
323+
324+
cmake_cfg.define("CMAKE_ASM_NASM_COMPILER", script_path.as_str());
325+
// Without the following definition, the build fails with a message similar to the one
326+
// reported here: https://gitlab.kitware.com/cmake/cmake/-/issues/19453
327+
// The variables below were found in the associated fix:
328+
// https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4257/diffs
329+
cmake_cfg.define(
330+
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded",
331+
"",
332+
);
333+
cmake_cfg.define(
334+
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL",
335+
"",
336+
);
337+
cmake_cfg.define(
338+
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug",
339+
"",
340+
);
341+
cmake_cfg.define(
342+
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL",
343+
"",
344+
);
345+
cmake_cfg.define(
346+
"CMAKE_ASM_NASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_ProgramDatabase",
347+
"",
348+
);
349+
}
350+
343351
fn configure_open_harmony(cmake_cfg: &mut cmake::Config) {
344352
let mut cflags = vec!["-Wno-unused-command-line-argument"];
345353
let mut asmflags = vec![];

0 commit comments

Comments
 (0)