|
1 | | -corrosion_import_crate(MANIFEST_PATH ${CMAKE_CURRENT_SOURCE_DIR}/crates/rust-url/Cargo.toml NO_LINKER_OVERRIDE) |
| 1 | +set(RUST_STATICLIB_RS "${CMAKE_CURRENT_BINARY_DIR}/rust-staticlib.rs" CACHE INTERNAL "Path to the Rust staticlibs bundler source file" FORCE) |
| 2 | +set(RUST_STATICLIB_TOML "${CMAKE_CURRENT_BINARY_DIR}/Cargo.toml" CACHE INTERNAL "Path to the Rust staticlibs bundler Cargo.toml file" FORCE) |
| 3 | +configure_file("runtime/crates/staticlib-template/rust-staticlib.rs.in" "${RUST_STATICLIB_RS}" COPYONLY) |
| 4 | + |
| 5 | +# Add the debugmozjs feature for debug builds. |
| 6 | +if (CMAKE_BUILD_TYPE STREQUAL "Debug") |
| 7 | + set(DEBUGMOZJS_FEATURE "\"debugmozjs\"") |
| 8 | +endif() |
| 9 | +configure_file("runtime/crates/staticlib-template/Cargo.toml.in" "${RUST_STATICLIB_TOML}") |
2 | 10 |
|
3 | 11 | corrosion_import_crate( |
4 | 12 | MANIFEST_PATH ${CMAKE_CURRENT_SOURCE_DIR}/runtime/crates/Cargo.toml |
5 | | - NO_LINKER_OVERRIDE |
6 | | - CRATE_TYPES "staticlib" |
7 | | - IMPORTED_CRATES crates_list |
| 13 | + CRATES "generate-bindings" |
8 | 14 | ) |
9 | | - |
10 | | -#list(REMOVE_ITEM crates_list "generate-bindings") |
11 | | -foreach (crate IN LISTS crates_list) |
12 | | - if (crate STREQUAL "generate-bindings") |
13 | | - continue() |
14 | | - endif () |
15 | | - add_dependencies("cargo-prebuild_${crate}" cargo-build_generate-bindings) |
16 | | -endforeach () |
17 | | - |
18 | | -message(STATUS "Imported crates: ${crates_list}") |
19 | | - |
20 | | -add_library(rust-glue STATIC ${CMAKE_CURRENT_SOURCE_DIR}/runtime/crates/jsapi-rs/cpp/jsglue.cpp) |
21 | | -target_include_directories(rust-glue PRIVATE ${SM_INCLUDE_DIR}) |
22 | | -add_dependencies(cargo-prebuild_generate-bindings rust-glue) |
23 | | - |
24 | | -corrosion_set_env_vars(generate-bindings |
25 | | - LIBCLANG_PATH=/opt/homebrew/opt/llvm/lib |
| 15 | +corrosion_set_env_vars(generate_bindings |
26 | 16 | SYSROOT=${WASI_SDK_PREFIX}/share/wasi-sysroot |
27 | 17 | CXXFLAGS="${CMAKE_CXX_FLAGS}" |
28 | 18 | BIN_DIR=${CMAKE_CURRENT_BINARY_DIR} |
29 | 19 | SM_HEADERS=${SM_INCLUDE_DIR} |
30 | 20 | RUST_LOG=bindgen |
31 | 21 | ) |
32 | 22 |
|
33 | | -set_property(TARGET rust-url PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/crates/rust-url/) |
| 23 | +corrosion_import_crate( |
| 24 | + MANIFEST_PATH ${RUST_STATICLIB_TOML} |
| 25 | + CRATES "rust-staticlib" |
| 26 | + NO_LINKER_OVERRIDE |
| 27 | +) |
| 28 | + |
| 29 | +add_dependencies("cargo-prebuild_rust_staticlib" cargo-build_generate_bindings) |
| 30 | + |
| 31 | +add_library(rust-glue ${CMAKE_CURRENT_SOURCE_DIR}/runtime/crates/jsapi-rs/cpp/jsglue.cpp) |
| 32 | +target_include_directories(rust-glue PRIVATE ${SM_INCLUDE_DIR}) |
| 33 | +add_dependencies(rust_staticlib rust-glue) |
| 34 | + |
| 35 | +function(add_rust_lib name path) |
| 36 | + add_library(${name} INTERFACE) |
| 37 | + file(APPEND $CACHE{RUST_STATICLIB_TOML} "${name} = { path = \"${path}\" }\n") |
| 38 | + string(REPLACE "-" "_" name ${name}) |
| 39 | + file(APPEND $CACHE{RUST_STATICLIB_RS} "pub use ${name};\n") |
| 40 | +endfunction() |
| 41 | + |
| 42 | +add_rust_lib("rust-url" "${CMAKE_CURRENT_SOURCE_DIR}/crates/rust-url") |
| 43 | +set_property(TARGET rust-url PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/crates/rust-url") |
0 commit comments