xtc/cmake/Variants.cmake
2026-11-06 19:05:14 +01:00

29 lines
1.3 KiB
CMake

# Each compiler/flag variant has its own cache and products.
foreach(variant debug release sanitize)
set(extra)
if(CMAKE_CXX_COMPILER)
list(APPEND extra "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
endif()
if(variant STREQUAL debug)
set(kind Debug)
else()
set(kind Release)
list(APPEND extra -DXTC_REPRODUCIBLE=ON)
endif()
if(variant STREQUAL sanitize)
set(kind Debug)
list(APPEND extra -DXTC_SANITIZE=ON -DXTC_BUILD_GUI=OFF -DCMAKE_C_COMPILER=clang)
set(target test-sanitize)
else()
set(target ${variant})
endif()
add_custom_target(${target}
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -S "${PROJECT_SOURCE_DIR}" -B "${CMAKE_CURRENT_BINARY_DIR}/${variant}"
-DCMAKE_BUILD_TYPE=${kind} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DXTC_WITH_JACK=${XTC_WITH_JACK} -DXTC_WITH_LADSPA=${XTC_WITH_LADSPA}
-DXTC_BUILD_GUI=${XTC_BUILD_GUI} ${extra}
COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR}/${variant}" --parallel 3
COMMAND ${CMAKE_CTEST_COMMAND} --test-dir "${CMAKE_CURRENT_BINARY_DIR}/${variant}" --output-on-failure
USES_TERMINAL VERBATIM)
endforeach()
add_custom_target(check-development DEPENDS check analyze test-sanitize)