Skip to content

Commit

Permalink
Refactor CMake-based testing of examples
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
alexcrichton committed Jan 7, 2025
1 parent 115da98 commit b1bc1a9
Showing 1 changed file with 32 additions and 30 deletions.
62 changes: 32 additions & 30 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,45 +6,51 @@ set(CMAKE_CXX_STANDARD 11)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../crates/c-api ${CMAKE_CURRENT_BINARY_DIR}/wasmtime)

function(CREATE_TARGET TARGET TARGET_PATH)
add_executable(wasmtime-${TARGET} ${TARGET_PATH})
add_executable(wasmtime-${TARGET} ${TARGET_PATH})

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(wasmtime-${TARGET} PRIVATE -Wall -Wextra -Wno-deprecated-declarations)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_compile_options(wasmtime-${TARGET} PRIVATE /W3)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(wasmtime-${TARGET} PRIVATE -Wall -Wextra -Wno-deprecated-declarations)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_compile_options(wasmtime-${TARGET} PRIVATE /W3)
endif()

target_compile_definitions(wasmtime-${TARGET} PRIVATE WASMTIME_TEST_ONLY)
target_compile_definitions(wasmtime-${TARGET} PRIVATE WASMTIME_TEST_ONLY)

set_target_properties(wasmtime-${TARGET} PROPERTIES
OUTPUT_NAME wasmtime-${TARGET}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/$<0:>
CXX_VISIBILITY_PRESET hidden
POSITION_INDEPENDENT_CODE ON)
set_target_properties(wasmtime-${TARGET} PROPERTIES
OUTPUT_NAME wasmtime-${TARGET}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/$<0:>
CXX_VISIBILITY_PRESET hidden
POSITION_INDEPENDENT_CODE ON)

target_include_directories(wasmtime-${TARGET} PUBLIC wasmtime)
target_link_libraries(wasmtime-${TARGET} PUBLIC wasmtime)
if(APPLE)
target_link_libraries(wasmtime-${TARGET} PRIVATE "-framework CoreFoundation")
endif()
add_test(NAME ${TARGET}-c COMMAND $<TARGET_FILE:wasmtime-${TARGET}> WORKING_DIRECTORY ../..)
target_include_directories(wasmtime-${TARGET} PUBLIC wasmtime)
target_link_libraries(wasmtime-${TARGET} PUBLIC wasmtime)
if(APPLE)
target_link_libraries(wasmtime-${TARGET} PRIVATE "-framework CoreFoundation")
endif()
add_test(NAME ${TARGET}-c COMMAND wasmtime-${TARGET} WORKING_DIRECTORY ../..)
endfunction()

function(CREATE_RUST_TEST EXAMPLE)
if(ARGC GREATER 1)
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} --features ${ARGV1} WORKING_DIRECTORY ../..)
else()
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} WORKING_DIRECTORY ../..)
endif()
if(ARGC GREATER 1)
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} --features ${ARGV1} WORKING_DIRECTORY ../..)
else()
add_test(NAME ${EXAMPLE}-rust COMMAND cargo run --example ${EXAMPLE} WORKING_DIRECTORY ../..)
endif()
endfunction()
function(CREATE_RUST_WASM EXAMPLE TARGET)
execute_process(COMMAND cargo build -p example-${EXAMPLE}-wasm --target ${TARGET})
add_custom_target(${EXAMPLE}-wasm ALL COMMAND cargo build -p example-${EXAMPLE}-wasm --target ${TARGET})
endfunction()

# Enable testing
enable_testing()

# Add all examples
# Wasm files required by tests
create_rust_wasm(fib-debug wasm32-unknown-unknown)
create_rust_wasm(tokio wasm32-wasip1)
create_rust_wasm(wasi wasm32-wasip1)
create_rust_wasm(component wasm32-unknown-unknown)

# C/C++ examples/tests
create_target(anyref anyref.c)
create_target(async async.cpp)
create_target(externref externref.c)
Expand All @@ -61,12 +67,8 @@ create_target(serialize serialize.c)
create_target(threads threads.c)
create_target(wasi wasi/main.c)

# Add rust tests
# Rust examples/tests
create_rust_test(anyref)
create_rust_wasm(fib-debug wasm32-unknown-unknown)
create_rust_wasm(tokio wasm32-wasip1)
create_rust_wasm(wasi wasm32-wasip1)
create_rust_wasm(component wasm32-unknown-unknown)
create_rust_test(epochs)
create_rust_test(externref)
create_rust_test(fib-debug)
Expand Down

0 comments on commit b1bc1a9

Please sign in to comment.