Skip to content

Commit 51e28c7

Browse files
authored
Refactor CMake-based testing of examples (bytecodealliance#9940)
* Replace hard tabs in file with ` ` * Move building of example executables to build-time instead of configure-time * Move examples to being built as part of the "all" target * Use a CMake shorthand for adding tests on executables generated Closes bytecodealliance#9932 Closes bytecodealliance#9933
1 parent 5030709 commit 51e28c7

File tree

1 file changed

+33
-31
lines changed

1 file changed

+33
-31
lines changed

examples/CMakeLists.txt

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,52 @@ set(CMAKE_CXX_STANDARD 11)
66
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../crates/c-api ${CMAKE_CURRENT_BINARY_DIR}/wasmtime)
77

88
function(CREATE_TARGET TARGET TARGET_PATH)
9-
add_executable(wasmtime-${TARGET} ${TARGET_PATH})
9+
add_executable(wasmtime-${TARGET} ${TARGET_PATH})
1010

11-
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
12-
target_compile_options(wasmtime-${TARGET} PRIVATE -Wall -Wextra -Wno-deprecated-declarations)
13-
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
14-
target_compile_options(wasmtime-${TARGET} PRIVATE /W3)
15-
endif()
11+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
12+
target_compile_options(wasmtime-${TARGET} PRIVATE -Wall -Wextra -Wno-deprecated-declarations)
13+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
14+
target_compile_options(wasmtime-${TARGET} PRIVATE /W3)
15+
endif()
1616

17-
target_compile_definitions(wasmtime-${TARGET} PRIVATE WASMTIME_TEST_ONLY)
17+
target_compile_definitions(wasmtime-${TARGET} PRIVATE WASMTIME_TEST_ONLY)
1818

19-
set_target_properties(wasmtime-${TARGET} PROPERTIES
20-
OUTPUT_NAME wasmtime-${TARGET}
21-
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/$<0:>
22-
CXX_VISIBILITY_PRESET hidden
23-
POSITION_INDEPENDENT_CODE ON)
19+
set_target_properties(wasmtime-${TARGET} PROPERTIES
20+
OUTPUT_NAME wasmtime-${TARGET}
21+
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/$<0:>
22+
CXX_VISIBILITY_PRESET hidden
23+
POSITION_INDEPENDENT_CODE ON)
2424

25-
target_include_directories(wasmtime-${TARGET} PUBLIC wasmtime)
26-
target_link_libraries(wasmtime-${TARGET} PUBLIC wasmtime)
27-
if(APPLE)
28-
target_link_libraries(wasmtime-${TARGET} PRIVATE "-framework CoreFoundation")
29-
endif()
30-
add_test(NAME ${TARGET}-c COMMAND $<TARGET_FILE:wasmtime-${TARGET}> WORKING_DIRECTORY ../..)
25+
target_include_directories(wasmtime-${TARGET} PUBLIC wasmtime)
26+
target_link_libraries(wasmtime-${TARGET} PUBLIC wasmtime)
27+
if(APPLE)
28+
target_link_libraries(wasmtime-${TARGET} PRIVATE "-framework CoreFoundation")
29+
endif()
30+
add_test(NAME ${TARGET}-c COMMAND wasmtime-${TARGET} WORKING_DIRECTORY ../..)
3131
endfunction()
3232

3333
function(CREATE_RUST_TEST EXAMPLE)
34-
if(ARGC GREATER 1)
35-
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} --features ${ARGV1} WORKING_DIRECTORY ../..)
36-
else()
37-
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} WORKING_DIRECTORY ../..)
38-
endif()
34+
if(ARGC GREATER 1)
35+
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} --features ${ARGV1} WORKING_DIRECTORY ../..)
36+
else()
37+
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} WORKING_DIRECTORY ../..)
38+
endif()
3939
endfunction()
4040
function(CREATE_RUST_WASM EXAMPLE TARGET)
41-
execute_process(COMMAND cargo build -p example-${EXAMPLE}-wasm --target ${TARGET})
41+
add_custom_target(${EXAMPLE}-wasm-${TARGET} ALL COMMAND cargo build -p example-${EXAMPLE}-wasm --target ${TARGET})
4242
endfunction()
4343

4444
# Enable testing
4545
enable_testing()
4646

47-
# Add all examples
47+
# Wasm files required by tests
48+
create_rust_wasm(fib-debug wasm32-unknown-unknown)
49+
create_rust_wasm(tokio wasm32-wasip1)
50+
create_rust_wasm(wasi wasm32-wasip1)
51+
create_rust_wasm(wasi wasm32-wasip2)
52+
create_rust_wasm(component wasm32-unknown-unknown)
53+
54+
# C/C++ examples/tests
4855
create_target(anyref anyref.c)
4956
create_target(async async.cpp)
5057
create_target(externref externref.c)
@@ -61,13 +68,8 @@ create_target(serialize serialize.c)
6168
create_target(threads threads.c)
6269
create_target(wasip1 wasip1/main.c)
6370

64-
# Add rust tests
71+
# Rust examples/tests
6572
create_rust_test(anyref)
66-
create_rust_wasm(fib-debug wasm32-unknown-unknown)
67-
create_rust_wasm(tokio wasm32-wasip1)
68-
create_rust_wasm(wasi wasm32-wasip1)
69-
create_rust_wasm(wasi wasm32-wasip2)
70-
create_rust_wasm(component wasm32-unknown-unknown)
7173
create_rust_test(epochs)
7274
create_rust_test(externref)
7375
create_rust_test(fib-debug)

0 commit comments

Comments
 (0)