cmake_minimum_required(VERSION 3.25) project(aplwc VERSION 0.0.1 LANGUAGES C ) set(CMAKE_C_STANDARD 90) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) add_library(common INTERFACE) target_include_directories(common INTERFACE "src" ) target_compile_options(common INTERFACE $<$: -O0 -Wall -Wextra -Wpedantic -Werror -fsanitize=address,undefined -DAPLWC_BUILD_TYPE_DEBUG > $<$: -O0 --coverage -fcondition-coverage -DAPLWC_BUILD_TYPE_COVERAGE > $<$: -DAPLWC_BUILD_TYPE_RELEASE > ) target_link_options(common INTERFACE $<$: -fsanitize=address,undefined > $<$: --coverage -fcondition-coverage > ) add_library(aplwc src/libmain.c src/memory.c ) target_link_libraries(aplwc PRIVATE common) add_executable(aplwc-repl src/main.c ) target_link_libraries(aplwc-repl PRIVATE common aplwc) enable_testing() file(GLOB TEST_SOURCES CONFIGURE_DEPENDS "tests/*.c") foreach(source ${TEST_SOURCES}) get_filename_component(name "${source}" NAME_WE) set(test_bin "testbin-${name}") add_executable("${test_bin}" "${source}") target_link_libraries("${test_bin}" PRIVATE common aplwc) add_test(NAME "${name}" COMMAND "${test_bin}") endforeach() add_test(NAME "aplwc-repl" COMMAND "aplwc-repl")