tests, cmake: add a few fixes to enable running the cmake test suite with emscripten

This commit is contained in:
Antoine Viallon 2026-01-15 13:21:45 +01:00
parent fc46f5ccc5
commit 35d10cbab6
No known key found for this signature in database
GPG Key ID: 186FC35EDEB25716
2 changed files with 22 additions and 6 deletions

View File

@ -50,6 +50,8 @@ if (EMSCRIPTEN)
option(LLAMA_BUILD_HTML "llama: build HTML file" ON)
if (LLAMA_BUILD_HTML)
set(CMAKE_EXECUTABLE_SUFFIX ".html")
else()
set(CMAKE_EXECUTABLE_SUFFIX ".cjs")
endif()
else()
if (MINGW)

View File

@ -14,6 +14,12 @@ function(llama_build source)
install(TARGETS ${TEST_TARGET} RUNTIME)
endfunction()
if (EMSCRIPTEN)
set(LLAMA_TEST_LAUNCHER ${CMAKE_CROSSCOMPILING_EMULATOR})
else()
set(LLAMA_TEST_LAUNCHER)
endif()
function(llama_test target)
include(CMakeParseArguments)
set(options)
@ -38,7 +44,7 @@ function(llama_test target)
add_test(
NAME ${TEST_NAME}
WORKING_DIRECTORY ${LLAMA_TEST_WORKING_DIRECTORY}
COMMAND $<TARGET_FILE:${TEST_TARGET}>
COMMAND ${LLAMA_TEST_LAUNCHER} $<TARGET_FILE:${TEST_TARGET}>
${LLAMA_TEST_ARGS})
set_property(TEST ${TEST_NAME} PROPERTY LABELS ${LLAMA_TEST_LABEL})
@ -63,10 +69,16 @@ function(llama_test_cmd target)
set(TEST_NAME ${target})
endif()
if (TARGET ${target})
set(cmd $<TARGET_FILE:${target}>)
else()
set(cmd ${target})
endif()
add_test(
NAME ${TEST_NAME}
WORKING_DIRECTORY ${LLAMA_TEST_WORKING_DIRECTORY}
COMMAND ${target}
COMMAND ${LLAMA_TEST_LAUNCHER} ${cmd}
${LLAMA_TEST_ARGS})
set_property(TEST ${TEST_NAME} PROPERTY LABELS ${LLAMA_TEST_LABEL})
@ -106,7 +118,7 @@ function(llama_build_and_test source)
add_test(
NAME ${TEST_TARGET}
WORKING_DIRECTORY ${LLAMA_TEST_WORKING_DIRECTORY}
COMMAND $<TARGET_FILE:${TEST_TARGET}>
COMMAND ${LLAMA_TEST_LAUNCHER} $<TARGET_FILE:${TEST_TARGET}>
${LLAMA_TEST_ARGS})
set_property(TEST ${TEST_TARGET} PROPERTY LABELS ${LLAMA_TEST_LABEL})
@ -248,9 +260,11 @@ if (NOT GGML_BACKEND_DL)
endif()
# libmtmd
set(LLAMA_TEST_NAME test-mtmd-c-api)
llama_build_and_test(test-mtmd-c-api.c)
target_link_libraries(${LLAMA_TEST_NAME} PRIVATE mtmd)
if (NOT EMSCRIPTEN) # fails to build under emscripten because mtmd.h is not found
set(LLAMA_TEST_NAME test-mtmd-c-api)
llama_build_and_test(test-mtmd-c-api.c)
target_link_libraries(${LLAMA_TEST_NAME} PRIVATE mtmd)
endif()
# dummy executable - not installed
get_filename_component(TEST_TARGET test-c.c NAME_WE)