Skip to content

Commit 35ce19d

Browse files
sideshowbarkertrflynn89
authored andcommitted
LibJS: Ensure asmintgen works even when CARGO_TARGET_DIR is set
Problem: Build fails when CARGO_TARGET_DIR is set. Cause: The asmintgen custom command ran a bare “cargo build --release”, which wrote the binary to any CARGO_TARGET_DIR set. But the build looked for it under a hardcoded AsmIntGen/target path — and didn’t find it. Fix: Build asmintgen with build_rust_binary() from rust_crate.cmake — the same helper we already build all other crates with. That passes an explicit --target-dir, which causes CARGO_TARGET_DIR to be ignored. Fixes #10216
1 parent 058f3e0 commit 35ce19d

1 file changed

Lines changed: 5 additions & 32 deletions

File tree

Libraries/LibJS/CMakeLists.txt

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,6 @@ if (DEFINED ASMINT_ARCH)
336336
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_ProgramDatabase "")
337337
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_EditAndContinue "")
338338
endif()
339-
set(ASMINTGEN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/AsmIntGen")
340-
set(ASMINTGEN_BIN "${ASMINTGEN_DIR}/target/release/asmintgen${CMAKE_EXECUTABLE_SUFFIX}")
341339
set(ASMINT_DSL "${CMAKE_CURRENT_SOURCE_DIR}/Bytecode/AsmInterpreter/asmint.asm")
342340
set(ASMINT_GENERATED_S "${CMAKE_CURRENT_BINARY_DIR}/Bytecode/AsmInterpreter/asmint_${ASMINT_ARCH}.S")
343341
set(ASM_OFFSETS_FILE "${CMAKE_CURRENT_BINARY_DIR}/Bytecode/AsmInterpreter/asm_offsets.conf")
@@ -365,36 +363,11 @@ if (DEFINED ASMINT_ARCH)
365363
COMMENT "Generating asm struct offsets"
366364
)
367365

368-
file(GLOB ASMINTGEN_RUST_SOURCES CONFIGURE_DEPENDS "${ASMINTGEN_DIR}/src/*.rs")
369-
file(GLOB ASMINTGEN_BYTECODE_DEF_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/BytecodeDef/src/*.rs")
370-
set(ASMINTGEN_SOURCES
371-
"${ASMINTGEN_DIR}/Cargo.toml"
372-
"${ASMINTGEN_DIR}/Cargo.lock"
373-
"${CMAKE_CURRENT_SOURCE_DIR}/BytecodeDef/Cargo.toml"
374-
${ASMINTGEN_RUST_SOURCES}
375-
${ASMINTGEN_BYTECODE_DEF_SOURCES}
376-
)
377-
# NB: Clear linker-related env vars so cargo uses the default host
378-
# linker. The CI may set CC/CXX or CARGO_TARGET_*_LINKER to a
379-
# compiler that isn't available in all build configurations (e.g.
380-
# clang-21 in GNU builds). asmintgen is a pure Rust host tool.
381-
add_custom_command(
382-
OUTPUT "${ASMINTGEN_BIN}"
383-
COMMAND ${CMAKE_COMMAND}
384-
-DLOG=${CMAKE_CURRENT_BINARY_DIR}/cargo-asmintgen.log
385-
-P "${LADYBIRD_SOURCE_DIR}/Meta/CMake/run_quiet.cmake"
386-
--
387-
${CMAKE_COMMAND} -E env
388-
--unset=CC
389-
--unset=CXX
390-
--unset=CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER
391-
--unset=CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER
392-
CARGO_TERM_PROGRESS_WHEN=never TERM=dumb
393-
cargo build --release
394-
WORKING_DIRECTORY "${ASMINTGEN_DIR}"
395-
JOB_POOL cargo
396-
DEPENDS ${ASMINTGEN_SOURCES}
397-
COMMENT "Building asmintgen"
366+
build_rust_binary(
367+
MANIFEST_PATH AsmIntGen/Cargo.toml
368+
CRATE_NAME asmintgen
369+
BINARY_NAME asmintgen
370+
OUTPUT_PATH_VAR ASMINTGEN_BIN
398371
)
399372

400373
set(BYTECODE_DEF "${CMAKE_CURRENT_SOURCE_DIR}/Bytecode/Bytecode.def")

0 commit comments

Comments
 (0)