summaryrefslogtreecommitdiff
path: root/libcr/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'libcr/CMakeLists.txt')
-rw-r--r--libcr/CMakeLists.txt37
1 files changed, 34 insertions, 3 deletions
diff --git a/libcr/CMakeLists.txt b/libcr/CMakeLists.txt
index ae7c8fe..2e66020 100644
--- a/libcr/CMakeLists.txt
+++ b/libcr/CMakeLists.txt
@@ -1,13 +1,44 @@
-# libcr/CMakeLists.txt - TODO
+# libcr/CMakeLists.txt - Simple embeddable coroutine implementation
#
-# Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
+# Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later
add_library(libcr INTERFACE)
-target_include_directories(libcr SYSTEM INTERFACE ${CMAKE_CURRENT_LIST_DIR}/include)
+target_include_directories(libcr PUBLIC INTERFACE ${CMAKE_CURRENT_LIST_DIR}/include)
target_sources(libcr INTERFACE
coroutine.c
)
+target_link_libraries(libcr INTERFACE
+ libmisc
+)
target_compile_options(libcr INTERFACE
-fno-split-stack
)
+
+set(cfg_matrix
+ "CONFIG_COROUTINE_MEASURE_STACK;[0;1]"
+ "CONFIG_COROUTINE_PROTECT_STACK;[0;1]"
+ "CONFIG_COROUTINE_DEBUG;[0;1]"
+ "CONFIG_COROUTINE_VALGRIND;[0;1]"
+ "CONFIG_COROUTINE_GDB;[0;1]"
+)
+function(add_libcr_matrix_test n defs)
+ add_executable("test_matrix${n}" "tests/test_matrix.c")
+ target_link_libraries("test_matrix${n}" "libcr")
+ target_include_directories("test_matrix${n}" PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_matrix)
+ target_compile_definitions("test_matrix${n}" PUBLIC "${defs}")
+ if ("CONFIG_COROUTINE_VALGRIND=1" IN_LIST defs)
+ add_test(
+ NAME "libcr/test_matrix${n}"
+ COMMAND "${CMAKE_SOURCE_DIR}/build-aux/valgrind" "./test_matrix${n}"
+ )
+ else()
+ add_test(
+ NAME "libcr/test_matrix${n}"
+ COMMAND "./test_matrix${n}"
+ )
+ endif()
+endfunction()
+if (ENABLE_TESTS)
+ apply_matrix(add_libcr_matrix_test "${cfg_matrix}")
+endif()