Skip to content

Commit 4173529

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

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
@@ -185,8 +185,6 @@ option(EXECUTORCH_BUILD_EXTENSION_TENSOR "Build the Tensor extension" OFF)
185185

186186
option(EXECUTORCH_BUILD_EXTENSION_TRAINING "Build the training extension" OFF)
187187

188-
option(EXECUTORCH_BUILD_GTESTS "Build googletest based test binaries" OFF)
189-
190188
option(EXECUTORCH_BUILD_MPS "Build the MPS backend" OFF)
191189

192190
option(EXECUTORCH_BUILD_NEURON "Build the backends/mediatek directory" OFF)
@@ -201,6 +199,8 @@ option(EXECUTORCH_BUILD_KERNELS_QUANTIZED "Build the quantized kernels" OFF)
201199

202200
option(EXECUTORCH_BUILD_DEVTOOLS "Build the ExecuTorch Developer Tools")
203201

202+
option(EXECUTORCH_BUILD_TESTS "Build CMake-based unit tests" ON)
203+
204204
option(EXECUTORCH_NNLIB_OPT "Build Cadence backend Hifi nnlib kernel" OFF)
205205

206206
option(EXECUTORCH_CADENCE_CPU_RUNNER "Build Cadence backend CPU runner" OFF)
@@ -315,6 +315,10 @@ if(EXECUTORCH_BUILD_PTHREADPOOL)
315315
)
316316
endif()
317317

318+
if(EXECUTORCH_BUILD_TESTS)
319+
include(CTest)
320+
endif()
321+
318322
if(NOT PYTHON_EXECUTABLE)
319323
resolve_python_executable()
320324
endif()
@@ -610,7 +614,7 @@ cmake_dependent_option(
610614
)
611615

612616
# Add googletest if any test targets should be built
613-
if(EXECUTORCH_BUILD_GTESTS)
617+
if(BUILD_TESTING)
614618
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/googletest)
615619
endif()
616620

@@ -854,5 +858,26 @@ if(EXECUTORCH_BUILD_VULKAN)
854858
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/vulkan)
855859
endif()
856860

861+
if(BUILD_TESTING)
862+
# This contains the list of tests which are always built
863+
add_subdirectory(extension/evalue_util/test)
864+
add_subdirectory(extension/kernel_util/test)
865+
add_subdirectory(extension/memory_allocator/test)
866+
add_subdirectory(extension/parallel/test)
867+
add_subdirectory(extension/pytree/test)
868+
add_subdirectory(kernels/portable/test)
869+
add_subdirectory(kernels/portable/cpu/util/test)
870+
add_subdirectory(kernels/prim_ops/test)
871+
add_subdirectory(kernels/test)
872+
add_subdirectory(runtime/core/exec_aten/testing_util/test)
873+
add_subdirectory(runtime/core/exec_aten/util/test)
874+
add_subdirectory(runtime/core/portable_type/test)
875+
add_subdirectory(runtime/core/test)
876+
add_subdirectory(runtime/executor/test)
877+
add_subdirectory(runtime/kernel/test)
878+
add_subdirectory(runtime/platform/test)
879+
add_subdirectory(test/utils)
880+
endif()
881+
857882
# Print all summary
858883
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
@@ -155,3 +155,7 @@ install(
155155
DESTINATION lib
156156
PUBLIC_HEADER DESTINATION include/executorch/kernels/quantized/
157157
)
158+
159+
if(BUILD_TESTING)
160+
add_subdirectory(test)
161+
endif()

0 commit comments

Comments
 (0)