Skip to content

Commit d03ff51

Browse files
committed
Simplify cmake test invocation
We can build the test while building the lib, just in one pass.
1 parent 1cf9482 commit d03ff51

File tree

36 files changed

+83
-181
lines changed

36 files changed

+83
-181
lines changed

CMakeLists.txt

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,6 @@ option(EXECUTORCH_BUILD_EXTENSION_TENSOR "Build the Tensor extension" OFF)
200200

201201
option(EXECUTORCH_BUILD_EXTENSION_TRAINING "Build the training extension" OFF)
202202

203-
option(EXECUTORCH_BUILD_GTESTS "Build googletest based test binaries" OFF)
204-
205203
option(EXECUTORCH_BUILD_MPS "Build the MPS backend" OFF)
206204

207205
option(EXECUTORCH_BUILD_NEURON "Build the backends/mediatek directory" OFF)
@@ -216,6 +214,8 @@ option(EXECUTORCH_BUILD_KERNELS_QUANTIZED "Build the quantized kernels" OFF)
216214

217215
option(EXECUTORCH_BUILD_DEVTOOLS "Build the ExecuTorch Developer Tools")
218216

217+
option(EXECUTORCH_BUILD_TESTS "Build CMake-based unit tests" ON)
218+
219219
option(EXECUTORCH_NNLIB_OPT "Build Cadence backend Hifi nnlib kernel" OFF)
220220

221221
option(EXECUTORCH_CADENCE_CPU_RUNNER "Build Cadence backend CPU runner" OFF)
@@ -330,6 +330,10 @@ if(EXECUTORCH_BUILD_PTHREADPOOL)
330330
)
331331
endif()
332332

333+
if(EXECUTORCH_BUILD_TESTS)
334+
include(CTest)
335+
endif()
336+
333337
if(NOT PYTHON_EXECUTABLE)
334338
resolve_python_executable()
335339
endif()
@@ -625,7 +629,7 @@ cmake_dependent_option(
625629
)
626630

627631
# Add googletest if any test targets should be built
628-
if(EXECUTORCH_BUILD_GTESTS)
632+
if(BUILD_TESTING)
629633
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/googletest)
630634
endif()
631635

@@ -829,5 +833,26 @@ if(EXECUTORCH_BUILD_VULKAN)
829833
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/vulkan)
830834
endif()
831835

836+
if(BUILD_TESTING)
837+
# This contains the list of tests which are always built
838+
add_subdirectory(extension/evalue_util/test)
839+
add_subdirectory(extension/kernel_util/test)
840+
add_subdirectory(extension/memory_allocator/test)
841+
add_subdirectory(extension/parallel/test)
842+
add_subdirectory(extension/pytree/test)
843+
add_subdirectory(kernels/portable/test)
844+
add_subdirectory(kernels/portable/cpu/util/test)
845+
add_subdirectory(kernels/prim_ops/test)
846+
add_subdirectory(kernels/test)
847+
add_subdirectory(runtime/core/exec_aten/testing_util/test)
848+
add_subdirectory(runtime/core/exec_aten/util/test)
849+
add_subdirectory(runtime/core/portable_type/test)
850+
add_subdirectory(runtime/core/test)
851+
add_subdirectory(runtime/executor/test)
852+
add_subdirectory(runtime/kernel/test)
853+
add_subdirectory(runtime/platform/test)
854+
add_subdirectory(test/utils)
855+
endif()
856+
832857
# Print all summary
833858
executorch_print_configuration_summary()

backends/xnnpack/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,7 @@ install(
140140
INCLUDES
141141
DESTINATION ${_common_include_directories}
142142
)
143+
144+
if(BUILD_TESTING)
145+
add_subdirectory(test)
146+
endif()

backends/xnnpack/test/CMakeLists.txt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,13 @@
1212
#
1313

1414
cmake_minimum_required(VERSION 3.19)
15-
project(backends_xnnpack_test)
16-
17-
# Use C++17 for test.
18-
set(CMAKE_CXX_STANDARD 17)
1915

2016
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2117

2218
include(${EXECUTORCH_ROOT}/build/Test.cmake)
2319

24-
set(_test_srcs # We can't put runtime/test_runtime_utils.cpp because we don't
25-
# build aten
20+
set(_test_srcs
2621
runtime/test_xnnexecutor.cpp
27-
${EXECUTORCH_ROOT}/extension/threadpool/threadpool.cpp
28-
${EXECUTORCH_ROOT}/extension/threadpool/threadpool_guard.cpp
2922
${EXECUTORCH_ROOT}/extension/threadpool/test/threadpool_test.cpp
3023
)
3124

build/Test.cmake

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,6 @@
1717
# It should also be cmake-lint clean.
1818
#
1919

20-
include(${EXECUTORCH_ROOT}/build/Utils.cmake)
21-
22-
# Find prebuilt executorch library
23-
find_package(executorch CONFIG REQUIRED)
24-
25-
enable_testing()
26-
find_package(GTest CONFIG REQUIRED)
27-
28-
target_link_options_shared_lib(cpuinfo)
29-
target_link_options_shared_lib(extension_data_loader)
30-
target_link_options_shared_lib(portable_kernels)
31-
target_link_options_shared_lib(portable_ops_lib)
32-
target_link_options_shared_lib(pthreadpool)
33-
target_link_options_shared_lib(quantized_ops_lib)
34-
35-
# Add code coverage flags to supported compilers
36-
if(EXECUTORCH_USE_CPP_CODE_COVERAGE)
37-
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
38-
string(APPEND CMAKE_C_FLAGS " --coverage -fprofile-abs-path")
39-
string(APPEND CMAKE_CXX_FLAGS " --coverage -fprofile-abs-path")
40-
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
41-
string(APPEND CMAKE_C_FLAGS " -fprofile-instr-generate -fcoverage-mapping")
42-
string(APPEND CMAKE_CXX_FLAGS
43-
" -fprofile-instr-generate -fcoverage-mapping"
44-
)
45-
else()
46-
message(ERROR
47-
"Code coverage for compiler ${CMAKE_CXX_COMPILER_ID} is unsupported"
48-
)
49-
endif()
50-
endif()
51-
5220
# A helper function to generate a gtest cxx executable target @param
5321
# target_name: name for the executable @param SOURCES <list_of_sources>: test
5422
# sources to be compiled. Sometimes util sources are used as well @param EXTRA
@@ -67,24 +35,14 @@ function(et_cxx_test target_name)
6735
set(multi_arg_names SOURCES EXTRA_LIBS)
6836
cmake_parse_arguments(ET_CXX_TEST "" "" "${multi_arg_names}" ${ARGN})
6937

70-
# Let files say "include <executorch/path/to/header.h>".
71-
target_include_directories(executorch INTERFACE ${EXECUTORCH_ROOT}/..)
72-
73-
set(ET_TEST_UTIL_SOURCES
74-
${EXECUTORCH_ROOT}/runtime/core/exec_aten/testing_util/tensor_util.cpp
75-
)
76-
77-
add_executable(${target_name} ${ET_CXX_TEST_SOURCES} ${ET_TEST_UTIL_SOURCES})
38+
add_executable(${target_name} ${ET_CXX_TEST_SOURCES} ${EXECUTORCH_ROOT}/runtime/core/exec_aten/testing_util/tensor_util.cpp)
7839
# Includes gtest, gmock, executorch by default
7940
target_link_libraries(
8041
${target_name} GTest::gtest GTest::gtest_main GTest::gmock executorch
8142
${ET_CXX_TEST_EXTRA_LIBS}
8243
)
8344

84-
# add_test adds a test target to be used by ctest. We use `ExecuTorchTest` as
85-
# the ctest target name for the test executable Usage: cd
86-
# cmake-out/path/to/test/; ctest Note: currently we directly invoke the test
87-
# target, without using ctest
88-
add_test(ExecuTorchTest ${target_name})
45+
# add_test adds a test target to be used by ctest
46+
add_test(NAME ${target_name} COMMAND ${target_name})
8947

9048
endfunction()

devtools/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,3 +218,7 @@ install(
218218
INCLUDES
219219
DESTINATION ${_common_include_directories}
220220
)
221+
222+
if(BUILD_TESTING)
223+
add_subdirectory(etdump/tests)
224+
endif()

devtools/etdump/tests/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212
#
1313

1414
cmake_minimum_required(VERSION 3.19)
15-
project(sdk_etdump_tests)
16-
17-
# Use C++17 for test.
18-
set(CMAKE_CXX_STANDARD 17)
1915

2016
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2117

@@ -30,7 +26,7 @@ et_cxx_test(
3026
EXTRA_LIBS
3127
bundled_program
3228
etdump
33-
flatccrt_d
29+
flatccrt
3430
)
3531
target_include_directories(
3632
sdk_etdump_tests PRIVATE ${CMAKE_INSTALL_PREFIX}/sdk/include

examples/models/llama/tokenizer/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212
#
1313

1414
cmake_minimum_required(VERSION 3.19)
15-
project(tokenizer_test)
16-
17-
# Use C++17 for test.
18-
set(CMAKE_CXX_STANDARD 17)
1915

2016
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../..)
2117

extension/data_loader/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,7 @@ install(
2929
INCLUDES
3030
DESTINATION ${_common_include_directories}
3131
)
32+
33+
if(BUILD_TESTING)
34+
add_subdirectory(test)
35+
endif()

extension/data_loader/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_data_loader_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/evalue_util/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_evalue_util_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/kernel_util/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_kernel_util_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/memory_allocator/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_memory_allocator_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/module/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,7 @@ install(
5151
INCLUDES
5252
DESTINATION ${_common_include_directories}
5353
)
54+
55+
if(BUILD_TESTING)
56+
add_subdirectory(test)
57+
endif()

extension/module/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_module_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/pytree/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_pytree_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/runner_util/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,7 @@ install(
2929
INCLUDES
3030
DESTINATION ${_common_include_directories}
3131
)
32+
33+
if(BUILD_TESTING)
34+
add_subdirectory(test)
35+
endif()

extension/runner_util/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_runner_util_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

extension/tensor/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,7 @@ install(
2929
INCLUDES
3030
DESTINATION ${_common_include_directories}
3131
)
32+
33+
if(BUILD_TESTING)
34+
add_subdirectory(test)
35+
endif()

extension/tensor/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(extension_tensor_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2319

kernels/portable/cpu/util/test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
#
1515

1616
cmake_minimum_required(VERSION 3.19)
17-
project(kernels_portable_cpu_util_test)
18-
19-
# Use C++17 for test.
20-
set(CMAKE_CXX_STANDARD 17)
2117

2218
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../..)
2319

kernels/portable/test/CMakeLists.txt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,31 @@
1313
# This file builds portable-specific tests
1414

1515
cmake_minimum_required(VERSION 3.19)
16-
project(kernels_portable_test)
17-
18-
# Use C++17 for test.
19-
set(CMAKE_CXX_STANDARD 17)
2016

2117
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2218

23-
include(${EXECUTORCH_ROOT}/build/Test.cmake)
24-
2519
set(_kernels_portable_test_sources
2620
# So far we can't generate custom_ops.yaml in OSS so we can't build op
2721
# library with op_allclose. We disable the test for now.
2822
# "op_allclose_test.cpp"
2923
"op_div_test.cpp" "op_gelu_test.cpp" "op_mul_test.cpp"
3024
)
3125

32-
et_cxx_test(
33-
kernels_portable_test SOURCES ${_kernels_portable_test_sources} EXTRA_LIBS
34-
portable_kernels portable_ops_lib
26+
add_executable(
27+
kernels_portable_test
28+
${_kernels_portable_test_sources}
29+
${EXECUTORCH_ROOT}/runtime/core/exec_aten/testing_util/tensor_util.cpp
30+
)
31+
target_link_libraries(
32+
kernels_portable_test
33+
GTest::gtest
34+
GTest::gtest_main
35+
GTest::gmock
36+
executorch
37+
portable_kernels
38+
portable_ops_lib
3539
)
3640
target_include_directories(
3741
kernels_portable_test PRIVATE "${CMAKE_INSTALL_PREFIX}/include"
3842
)
43+
add_test(ExecuTorchTest kernels_portable_test)

kernels/prim_ops/test/CMakeLists.txt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,11 @@
1313
#
1414

1515
cmake_minimum_required(VERSION 3.19)
16-
project(prim_ops_test)
17-
18-
# Use C++17 for test.
19-
set(CMAKE_CXX_STANDARD 17)
2016

2117
set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
2218

2319
include(${EXECUTORCH_ROOT}/build/Test.cmake)
2420

25-
target_link_options_shared_lib(executorch)
26-
2721
set(_test_srcs prim_ops_test.cpp)
2822

2923
et_cxx_test(kernels_prim_ops_test SOURCES ${_test_srcs})

kernels/quantized/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,7 @@ install(
153153
DESTINATION lib
154154
PUBLIC_HEADER DESTINATION include/executorch/kernels/quantized/
155155
)
156+
157+
if(BUILD_TESTING)
158+
add_subdirectory(test)
159+
endif()

0 commit comments

Comments
 (0)