11llama_add_compile_flags ()
22
3+ function (llama_build source )
4+ if (DEFINED LLAMA_TEST_NAME)
5+ set (TEST_TARGET ${LLAMA_TEST_NAME} )
6+ else ()
7+ get_filename_component (TEST_TARGET ${source} NAME_WE )
8+ endif ()
9+
10+ add_executable (${TEST_TARGET} ${source} )
11+ target_link_libraries (${TEST_TARGET} PRIVATE common )
12+ install (TARGETS ${TEST_TARGET} RUNTIME )
13+ endfunction ()
14+
315function (llama_test target )
416 include (CMakeParseArguments )
517 set (options)
@@ -36,7 +48,7 @@ endfunction()
3648# - LABEL: label for the test (defaults to main)
3749# - ARGS: arguments to pass to the test executable
3850# - WORKING_DIRECTORY
39- function (llama_target_and_test source )
51+ function (llama_build_and_test source )
4052 include (CMakeParseArguments )
4153 set (options)
4254 set (oneValueArgs NAME LABEL WORKING_DIRECTORY)
@@ -58,6 +70,7 @@ function(llama_target_and_test source)
5870 add_executable (${TEST_TARGET} ${source} get -model.cpp )
5971 install (TARGETS ${TEST_TARGET} RUNTIME )
6072 target_link_libraries (${TEST_TARGET} PRIVATE common )
73+
6174 add_test (
6275 NAME ${TEST_TARGET}
6376 WORKING_DIRECTORY ${LLAMA_TEST_WORKING_DIRECTORY}
@@ -68,9 +81,7 @@ function(llama_target_and_test source)
6881endfunction ()
6982
7083# build test-tokenizer-0 target once and add many tests
71- add_executable (test -tokenizer-0 test -tokenizer-0.cpp )
72- target_link_libraries (test -tokenizer-0 PRIVATE common )
73- install (TARGETS test-tokenizer-0 RUNTIME )
84+ llama_build (test -tokenizer-0.cpp )
7485
7586llama_test (test -tokenizer-0 NAME test -tokenizer-0-bert-bge ARGS ${CMAKE_CURRENT_SOURCE_DIR} /../models/ggml-vocab-bert-bge.gguf )
7687llama_test (test -tokenizer-0 NAME test -tokenizer-0-command-r ARGS ${CMAKE_CURRENT_SOURCE_DIR} /../models/ggml-vocab-command-r.gguf )
@@ -87,27 +98,27 @@ llama_test(test-tokenizer-0 NAME test-tokenizer-0-refact ARGS ${CMAKE
8798llama_test (test -tokenizer-0 NAME test -tokenizer-0-starcoder ARGS ${CMAKE_CURRENT_SOURCE_DIR} /../models/ggml-vocab-starcoder.gguf )
8899
89100if (LLAMA_LLGUIDANCE)
90- llama_target_and_test (test -grammar-llguidance.cpp ARGS ${CMAKE_CURRENT_SOURCE_DIR} /../models/ggml-vocab-llama-bpe.gguf )
101+ llama_build_and_test (test -grammar-llguidance.cpp ARGS ${CMAKE_CURRENT_SOURCE_DIR} /../models/ggml-vocab-llama-bpe.gguf )
91102endif ()
92103
93104if (NOT WIN32 )
94105 # these tests are disabled on Windows because they use internal functions not exported with LLAMA_API
95- llama_target_and_test (test -sampling.cpp )
96- llama_target_and_test (test -grammar-parser.cpp )
97- llama_target_and_test (test -grammar-integration.cpp )
98- llama_target_and_test (test -llama-grammar.cpp )
99- llama_target_and_test (test -chat.cpp )
106+ llama_build_and_test (test -sampling.cpp )
107+ llama_build_and_test (test -grammar-parser.cpp )
108+ llama_build_and_test (test -grammar-integration.cpp )
109+ llama_build_and_test (test -llama-grammar.cpp )
110+ llama_build_and_test (test -chat.cpp )
100111 # TODO: disabled on loongarch64 because the ggml-ci node lacks Python 3.8
101112 if (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64" )
102- llama_target_and_test (test -json-schema-to-grammar.cpp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /.. )
113+ llama_build_and_test (test -json-schema-to-grammar.cpp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /.. )
103114 target_include_directories (test -json-schema-to-grammar PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /../examples/server )
104115 endif ()
105116
117+ llama_build (test -quantize-stats.cpp )
118+ llama_build (test -gbnf-validator.cpp )
106119
107120 # build test-tokenizer-1-bpe target once and add many tests
108- add_executable (test -tokenizer-1-bpe test -tokenizer-1-bpe.cpp )
109- target_link_libraries (test -tokenizer-1-bpe PRIVATE common )
110- install (TARGETS test-tokenizer-1-bpe RUNTIME )
121+ llama_build (test -tokenizer-1-bpe.cpp )
111122
112123 # TODO: disabled due to slowness
113124 #llama_test(test-tokenizer-1-bpe NAME test-tokenizer-1-aquila ARGS ${CMAKE_CURRENT_SOURCE_DIR}/../models/ggml-vocab-aquila.gguf)
@@ -120,37 +131,35 @@ if (NOT WIN32)
120131 #llama_test(test-tokenizer-1-bpe NAME test-tokenizer-1-starcoder ARGS ${CMAKE_CURRENT_SOURCE_DIR}/../models/ggml-vocab-starcoder.gguf)
121132
122133 # build test-tokenizer-1-spm target once and add many tests
123- add_executable (test -tokenizer-1-spm test -tokenizer-1-spm.cpp )
124- target_link_libraries (test -tokenizer-1-spm PRIVATE common )
125- install (TARGETS test-tokenizer-1-spm RUNTIME )
134+ llama_build (test -tokenizer-1-spm.cpp )
126135
127136 llama_test (test -tokenizer-1-spm NAME test -tokenizer-1-llama-spm ARGS ${CMAKE_CURRENT_SOURCE_DIR} /../models/ggml-vocab-llama-spm.gguf )
128137 #llama_test(test-tokenizer-1-spm NAME test-tokenizer-1-baichuan ARGS ${CMAKE_CURRENT_SOURCE_DIR}/../models/ggml-vocab-baichuan.gguf)
129138
130- # llama_target_and_test (test-double-float.cpp) # SLOW
139+ # llama_build_and_test (test-double-float.cpp) # SLOW
131140endif ()
132141
133- llama_target_and_test (test -log.cpp )
134- llama_target_and_test (test -chat-template.cpp )
142+ llama_build_and_test (test -log.cpp )
143+ llama_build_and_test (test -chat-template.cpp )
135144
136145# this fails on windows (github hosted runner) due to curl DLL not found (exit code 0xc0000135)
137146if (NOT WIN32 )
138- llama_target_and_test (test -arg-parser.cpp )
147+ llama_build_and_test (test -arg-parser.cpp )
139148endif ()
140149
141- # llama_target_and_test (test-opt.cpp) # SLOW
142- llama_target_and_test (test -gguf.cpp )
143- llama_target_and_test (test -backend-ops.cpp )
150+ # llama_build_and_test (test-opt.cpp) # SLOW
151+ llama_build_and_test (test -gguf.cpp )
152+ llama_build_and_test (test -backend-ops.cpp )
144153
145- llama_target_and_test (test -model-load-cancel.cpp LABEL "model" )
146- llama_target_and_test (test -autorelease.cpp LABEL "model" )
154+ llama_build_and_test (test -model-load-cancel.cpp LABEL "model" )
155+ llama_build_and_test (test -autorelease.cpp LABEL "model" )
147156
148157if (NOT GGML_BACKEND_DL)
149158 # these tests use the backends directly and cannot be built with dynamic loading
150- llama_target_and_test (test -barrier.cpp )
151- llama_target_and_test (test -quantize-fns.cpp )
152- llama_target_and_test (test -quantize-perf.cpp )
153- llama_target_and_test (test -rope.cpp )
159+ llama_build_and_test (test -barrier.cpp )
160+ llama_build_and_test (test -quantize-fns.cpp )
161+ llama_build_and_test (test -quantize-perf.cpp )
162+ llama_build_and_test (test -rope.cpp )
154163endif ()
155164
156165
0 commit comments