Added cmake-format Makefile target

This commit is contained in:
Bartek Kryza 2024-10-16 18:59:29 +02:00
parent 26c8e10532
commit e6c569318a
No known key found for this signature in database
GPG Key ID: 241B25F44E85B4D7
6 changed files with 195 additions and 136 deletions

9
.cmake-format Normal file
View File

@ -0,0 +1,9 @@
line_width: 80
tab_size: 4
enable_sort: False
dangle_parens: False
dangle_align: 'prefix'
command_case: 'canonical'
keyword_case: 'upper'
line_ending: 'auto'
literal_comment_pattern: '.*'

View File

@ -35,8 +35,8 @@ set(CLANG_UML_INSTALL_BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
set(UML_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src/uml)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
if(APPLE)
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm"
OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm" OR "${CMAKE_SYSTEM_PROCESSOR}"
STREQUAL "arm64")
set(HOMEBREW_PREFIX "/opt/homebrew")
else()
set(HOMEBREW_PREFIX "/usr/local")
@ -77,15 +77,17 @@ endif(CODE_COVERAGE)
option(ADDRESS_SANITIZER "" OFF)
if(ADDRESS_SANITIZER)
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} \
"${CMAKE_CXX_FLAGS} \
-fno-omit-frame-pointer \
-fsanitize=address \
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist")
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist"
)
set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} \
"${CMAKE_EXE_LINKER_FLAGS} \
-fno-omit-frame-pointer \
-fsanitize=address \
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist")
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist"
)
endif(ADDRESS_SANITIZER)
#
@ -94,31 +96,39 @@ endif(ADDRESS_SANITIZER)
include(LLVMSetup)
#
# Setup custom compile options depending on various compiler
# and environment quirks
# Setup custom compile options depending on various compiler and environment
# quirks
#
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "13.0")
# Workaround over Wdangling-reference false positives in libfmt
set(CUSTOM_COMPILE_OPTIONS ${CUSTOM_COMPILE_OPTIONS} -Wno-dangling-reference)
set(CUSTOM_COMPILE_OPTIONS ${CUSTOM_COMPILE_OPTIONS}
-Wno-dangling-reference)
endif()
endif()
if(LLVM_VERSION_MAJOR GREATER_EQUAL 17)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CUSTOM_COMPILE_OPTIONS ${CUSTOM_COMPILE_OPTIONS} -Wno-class-memaccess)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CUSTOM_COMPILE_OPTIONS ${CUSTOM_COMPILE_OPTIONS}
-Wno-class-memaccess)
endif()
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CUSTOM_COMPILE_OPTIONS
${CUSTOM_COMPILE_OPTIONS} -Wno-unused-private-field)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CUSTOM_COMPILE_OPTIONS ${CUSTOM_COMPILE_OPTIONS}
-Wno-unused-private-field)
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19)
set(CUSTOM_COMPILE_OPTIONS ${CUSTOM_COMPILE_OPTIONS} -Wno-missing-template-arg-list-after-template-kw)
set(CUSTOM_COMPILE_OPTIONS
${CUSTOM_COMPILE_OPTIONS}
-Wno-missing-template-arg-list-after-template-kw)
endif()
if(APPLE)
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
# Use LLVM bundled unwind on Apple Silicon to fix segfaults on exception throw
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${HOMEBREW_PREFIX}/opt/llvm/lib/unwind -lunwind")
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm"
OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
# Use LLVM bundled unwind on Apple Silicon to fix segfaults on
# exception throw
set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -L${HOMEBREW_PREFIX}/opt/llvm/lib/unwind -lunwind"
)
endif()
endif(APPLE)
endif()
@ -154,7 +164,7 @@ else()
set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT OFF)
endif()
option(CLANG_UML_ENABLE_BACKTRACE "Enable backtrace on segfault"
${CLANG_UML_ENABLE_BACKTRACE_DEFAULT})
${CLANG_UML_ENABLE_BACKTRACE_DEFAULT})
if(LINUX AND CLANG_UML_ENABLE_BACKTRACE)
find_package(PkgConfig REQUIRED)
@ -208,7 +218,7 @@ endif(ENABLE_CUDA_TEST_CASES)
if(ENABLE_OBJECTIVE_C_TEST_CASES)
enable_language(OBJC)
if(UNIX AND NOT APPLE)
find_package(GNUstep REQUIRED)
find_package(GNUstep REQUIRED)
endif()
endif(ENABLE_OBJECTIVE_C_TEST_CASES)

View File

@ -220,3 +220,12 @@ fedora/%:
mkdir -p packaging/_BUILD/fedora/$*
git archive --format=tar.gz --prefix=clang-uml-$(PKG_VERSION)/ v$(GIT_VERSION) >packaging/_BUILD/fedora/$*/clang-uml-$(PKG_VERSION).tar.gz
docker run --cpuset-cpus=0-7 -v $(PWD):$(PWD) fedora:$* sh -c "dnf install -y make git && cd ${PWD} && make OS=fedora DIST=$* VERSION=${PKG_VERSION} COMMIT=${GIT_COMMIT} BRANCH=${GIT_BRANCH} -C packaging rpm"
.PHONY: venv
venv:
test -d venv || virtualenv -p /usr/bin/python3 venv;. venv/bin/activate; pip install -Ur dev-requirements.txt
.PHONY: cmake-format
cmake-format:
cmake-format -i CMakeLists.txt src/CMakeLists.txt tests/CMakeLists.txt

5
dev-requirements.txt Normal file
View File

@ -0,0 +1,5 @@
cmakelang
jinja2
lxml
nicegui
pyyaml

View File

@ -3,7 +3,7 @@
#
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src/version)
configure_file(${CMAKE_CURRENT_LIST_DIR}/version.h.in
${PROJECT_BINARY_DIR}/src/version/version.h)
${PROJECT_BINARY_DIR}/src/version/version.h)
#
# Generate source list dynamically
@ -23,16 +23,26 @@ else(MSVC)
endif(MSVC)
target_compile_features(clang-umllib INTERFACE cxx_std_17)
target_compile_options(clang-umllib PRIVATE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
-Werror -Wall -Wextra -Wno-unused-parameter
-Wno-deprecated-declarations ${CUSTOM_COMPILE_OPTIONS}>
$<$<CXX_COMPILER_ID:MSVC>:/MP /MD /W1 /bigobj /wd4291 /wd4624 /wd4244>)
target_compile_definitions(clang-umllib PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:
-DLLVM_FORCE_USE_OLD_TOOLCHAIN
-DTERMCOLOR_USE_WINDOWS_API=1
-DTERMCOLOR_TARGET_WINDOWS=1>)
target_compile_options(
clang-umllib
PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
-Werror
-Wall
-Wextra
-Wno-unused-parameter
-Wno-deprecated-declarations
${CUSTOM_COMPILE_OPTIONS}>
$<$<CXX_COMPILER_ID:MSVC>:/MP
/MD
/W1
/bigobj
/wd4291
/wd4624
/wd4244>)
target_compile_definitions(
clang-umllib
PRIVATE $<$<CXX_COMPILER_ID:MSVC>: -DLLVM_FORCE_USE_OLD_TOOLCHAIN
-DTERMCOLOR_USE_WINDOWS_API=1 -DTERMCOLOR_TARGET_WINDOWS=1>)
#
# Define the target executable clang-uml
@ -40,20 +50,31 @@ target_compile_definitions(clang-umllib PRIVATE
add_executable(clang-uml ${MAIN_SOURCE_FILE})
target_compile_features(clang-uml PUBLIC cxx_std_17)
target_compile_options(clang-uml PRIVATE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
-Werror -Wall -Wextra -Wno-unused-parameter
-Wno-deprecated-declarations ${CUSTOM_COMPILE_OPTIONS}>
$<$<CXX_COMPILER_ID:MSVC>:/MP /MD /W1 /bigobj /wd4291 /wd4624 /wd4244>)
target_compile_definitions(clang-uml PRIVATE
${ENABLE_BACKWARD_CPP})
target_link_libraries(clang-uml
${YAML_CPP_LIBRARIES}
${LIBTOOLING_LIBS}
${MSVC_LIBRARIES}
${BACKWARD_CPP_LIBRARIES}
clang-umllib
Threads::Threads)
target_compile_options(
clang-uml
PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
-Werror
-Wall
-Wextra
-Wno-unused-parameter
-Wno-deprecated-declarations
${CUSTOM_COMPILE_OPTIONS}>
$<$<CXX_COMPILER_ID:MSVC>:/MP
/MD
/W1
/bigobj
/wd4291
/wd4624
/wd4244>)
target_compile_definitions(clang-uml PRIVATE ${ENABLE_BACKWARD_CPP})
target_link_libraries(
clang-uml
${YAML_CPP_LIBRARIES}
${LIBTOOLING_LIBS}
${MSVC_LIBRARIES}
${BACKWARD_CPP_LIBRARIES}
clang-umllib
Threads::Threads)
#
# Setup install options
@ -77,7 +98,7 @@ install(FILES ${PROJECT_SOURCE_DIR}/CHANGELOG.md
set(CPACK_PACKAGE_NAME "clang-uml")
set(CPACK_PACKAGE_VENDOR "Bartek Kryza <bkryza@gmail.com>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"clang-uml - C++ UML diagram generator based on Clang")
"clang-uml - C++ UML diagram generator based on Clang")
set(CPACK_PACKAGE_VERSION "${GIT_VERSION}")
set(CPACK_PACKAGE_VERSION_MAJOR "${GIT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${GIT_VERSION_MINOR}")

View File

@ -1,34 +1,48 @@
file(GLOB_RECURSE TEST_CASE_SOURCES t*/*.cc t*/*.c t*/src/*.c t*/*.cu)
file(GLOB_RECURSE TEST_CASES_OBJC_SOURCES t*/*.m t*/src/*.m)
file(GLOB_RECURSE TEST_CASE_MODULE_SOURCES t*/src/*.cppm)
file(GLOB_RECURSE TEST_CASE_CONFIGS t*/.clang-uml)
file(GLOB_RECURSE TEST_CONFIG_YMLS test_config_data/*.yml
test_compilation_database_data/*.yml
test_compilation_database_data/*.json)
test_compilation_database_data/*.yml test_compilation_database_data/*.json)
set(TEST_CASES_REQUIRING_CXX20 t00056 t00058 t00059 t00065 t00069 t00074 t00075)
set(TEST_CASES_REQUIRING_CXX20_MODULES t00070 t00071 t00072
t30012 t30013 t30014 t30015)
set(TEST_CASES_REQUIRING_CXX20
t00056
t00058
t00059
t00065
t00069
t00074
t00075)
set(TEST_CASES_REQUIRING_CXX20_MODULES
t00070
t00071
t00072
t30012
t30013
t30014
t30015)
set(TEST_CASES_REQUIRING_CUDA t20049 t20050 t20051)
set(TEST_CASES_REQUIRING_OBJC t00084 t00085 t00086 t20057 t20058 t30016 t40004)
set(TEST_CASES_REQUIRING_OBJC
t00084
t00085
t00086
t20057
t20058
t30016
t40004)
if(ENABLE_OBJECTIVE_C_TEST_CASES)
message(STATUS "Enabling Objective-C test cases")
if(FETCH_LIBOBJC2)
include(CPM)
CPMAddPackage(
NAME libobjc2
GITHUB_REPOSITORY bkryza/libobjc2
GIT_TAG fix-cmake-variables
)
cpmaddpackage(NAME libobjc2 GITHUB_REPOSITORY bkryza/libobjc2 GIT_TAG
fix-cmake-variables)
set(FETCHED_LIBOBJC2_NAME objc)
endif()
else()
message(STATUS "Disabling Objective-C test cases")
endif(ENABLE_OBJECTIVE_C_TEST_CASES)
if(ENABLE_CXX_MODULES_TEST_CASES)
message(STATUS "Enabling C++ modules test cases")
@ -40,34 +54,23 @@ else()
message(STATUS "Disabling C++ modules test cases")
foreach(CXX20_MOD_TC ${TEST_CASES_REQUIRING_CXX20_MODULES})
list(FILTER TEST_CASE_SOURCES
EXCLUDE
REGEX ".*${CXX20_MOD_TC}.*")
list(FILTER TEST_CASE_CONFIGS
EXCLUDE
REGEX ".*${CXX20_MOD_TC}.*")
list(FILTER TEST_CASE_SOURCES EXCLUDE REGEX ".*${CXX20_MOD_TC}.*")
list(FILTER TEST_CASE_CONFIGS EXCLUDE REGEX ".*${CXX20_MOD_TC}.*")
endforeach()
endif(ENABLE_CXX_MODULES_TEST_CASES)
if(NOT ENABLE_CUDA_TEST_CASES)
message(STATUS "Disabling CUDA test cases")
foreach(CUDA_TC ${TEST_CASES_REQUIRING_CUDA})
list(FILTER TEST_CASE_SOURCES
EXCLUDE
REGEX ".*${CUDA_TC}.*")
list(FILTER TEST_CASE_CONFIGS
EXCLUDE
REGEX ".*${CUDA_TC}.*")
list(FILTER TEST_CASE_SOURCES EXCLUDE REGEX ".*${CUDA_TC}.*")
list(FILTER TEST_CASE_CONFIGS EXCLUDE REGEX ".*${CUDA_TC}.*")
endforeach()
else()
message(STATUS "Enabling CUDA test cases")
endif(NOT ENABLE_CUDA_TEST_CASES)
set(CLANG_UML_TEST_LIBRARIES
clang-umllib
${YAML_CPP_LIBRARIES}
${LIBTOOLING_LIBS}
Threads::Threads)
set(CLANG_UML_TEST_LIBRARIES clang-umllib ${YAML_CPP_LIBRARIES}
${LIBTOOLING_LIBS} Threads::Threads)
if(MSVC)
list(APPEND CLANG_UML_TEST_LIBRARIES "Version.lib")
@ -75,18 +78,12 @@ endif(MSVC)
list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_std_20 SUPPORTS_CXX_STD_20)
# Remove test cases which require C++20 if they are not supported here
if(SUPPORTS_CXX_STD_20 EQUAL -1
OR ${LLVM_PACKAGE_VERSION} VERSION_LESS "14.0")
if(SUPPORTS_CXX_STD_20 EQUAL -1 OR ${LLVM_PACKAGE_VERSION} VERSION_LESS "14.0")
set(ENABLE_CXX_STD_20_TEST_CASES 0)
foreach(CXX20_TC ${TEST_CASES_REQUIRING_CXX20})
list(FILTER TEST_CASE_SOURCES
EXCLUDE
REGEX ".*${CXX20_TC}.*")
list(FILTER TEST_CASE_CONFIGS
EXCLUDE
REGEX ".*${CXX20_TC}.*")
list(FILTER TEST_CASE_SOURCES EXCLUDE REGEX ".*${CXX20_TC}.*")
list(FILTER TEST_CASE_CONFIGS EXCLUDE REGEX ".*${CXX20_TC}.*")
endforeach()
message(STATUS "Disabling C++20 test cases")
else()
@ -96,91 +93,99 @@ endif()
if(APPLE)
# On Apple Clang <coroutine> header is not available
list(FILTER TEST_CASE_SOURCES
EXCLUDE
REGEX ".*t00069.*")
list(FILTER TEST_CASE_SOURCES EXCLUDE REGEX ".*t00069.*")
endif(APPLE)
set(TEST_NAMES
test_types
test_util
test_model
test_cases
test_compilation_database
test_decorator_parser
test_config
test_cli_handler
test_filters
test_filters_advanced
test_thread_pool_executor
test_query_driver_output_extractor
test_progress_indicator)
test_types
test_util
test_model
test_cases
test_compilation_database
test_decorator_parser
test_config
test_cli_handler
test_filters
test_filters_advanced
test_thread_pool_executor
test_query_driver_output_extractor
test_progress_indicator)
foreach(TEST_NAME ${TEST_NAMES})
add_executable(${TEST_NAME})
if(TEST_NAME STREQUAL "test_cases")
if(ENABLE_CXX_MODULES_TEST_CASES)
target_sources(${TEST_NAME} PUBLIC FILE_SET CXX_MODULES FILES
${TEST_CASE_MODULE_SOURCES})
${TEST_CASE_MODULE_SOURCES})
endif(ENABLE_CXX_MODULES_TEST_CASES)
if(ENABLE_OBJECTIVE_C_TEST_CASES)
# We need to link the objective test cases sources to a separate
# ObjC library than the rest of C++ test cases
add_library(test_cases_objc)
if(APPLE)
target_compile_options(test_cases_objc PRIVATE "SHELL:-isystem ${LLVM_INCLUDE_DIR}/c++/v1"
"SHELL:-isystem ${LLVM_LIBRARY_DIR}/clang/${LLVM_VERSION_MAJOR}/include")
target_compile_options(
test_cases_objc
PRIVATE
"SHELL:-isystem ${LLVM_INCLUDE_DIR}/c++/v1"
"SHELL:-isystem ${LLVM_LIBRARY_DIR}/clang/${LLVM_VERSION_MAJOR}/include"
)
else(APPLE)
target_compile_options(test_cases_objc PRIVATE ${GNUSTEP_CFLAGS})
target_link_libraries(test_cases_objc PRIVATE ${GNUSTEP_LDFLAGS} ${FETCHED_LIBOBJC2_NAME})
target_compile_options(test_cases_objc
PRIVATE ${GNUSTEP_CFLAGS})
target_link_libraries(
test_cases_objc PRIVATE ${GNUSTEP_LDFLAGS}
${FETCHED_LIBOBJC2_NAME})
endif(APPLE)
target_sources(test_cases_objc PUBLIC ${TEST_CASES_OBJC_SOURCES})
endif(ENABLE_OBJECTIVE_C_TEST_CASES)
target_sources(${TEST_NAME} PUBLIC ${TEST_NAME}.cc
${TEST_CASE_SOURCES})
target_sources(${TEST_NAME} PUBLIC ${TEST_NAME}.cc ${TEST_CASE_SOURCES})
else()
target_sources(${TEST_NAME} PUBLIC ${TEST_NAME}.cc)
endif(TEST_NAME STREQUAL "test_cases")
target_compile_features(${TEST_NAME} PRIVATE
$<IF:${ENABLE_CXX_STD_20_TEST_CASES},cxx_std_20,cxx_std_17>)
target_compile_definitions(${TEST_NAME} PRIVATE
target_compile_features(
${TEST_NAME}
PRIVATE $<IF:${ENABLE_CXX_STD_20_TEST_CASES},cxx_std_20,cxx_std_17>)
target_compile_definitions(
${TEST_NAME}
PRIVATE
$<$<EQUAL:${ENABLE_CXX_STD_20_TEST_CASES},1>:ENABLE_CXX_STD_20_TEST_CASES>
$<$<BOOL:${ENABLE_CXX_MODULES_TEST_CASES}>:ENABLE_CXX_MODULES_TEST_CASES>
$<$<BOOL:${ENABLE_CUDA_TEST_CASES}>:ENABLE_CUDA_TEST_CASES>
$<$<BOOL:${ENABLE_OBJECTIVE_C_TEST_CASES}>:ENABLE_OBJECTIVE_C_TEST_CASES>)
target_compile_options(${TEST_NAME} PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
-Wno-unused-parameter -Wno-unused-variable
-Wno-attributes -Wno-nonnull -Wno-deprecated-enum-enum-conversion
${CUSTOM_COMPILE_OPTIONS}>
$<$<CXX_COMPILER_ID:MSVC>:/MP /MD /W1 /bigobj /wd4624>>)
$<$<BOOL:${ENABLE_OBJECTIVE_C_TEST_CASES}>:ENABLE_OBJECTIVE_C_TEST_CASES>
)
target_compile_options(
${TEST_NAME}
PRIVATE $<$<COMPILE_LANGUAGE:CXX>:
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
-Wno-unused-parameter
-Wno-unused-variable
-Wno-attributes
-Wno-nonnull
-Wno-deprecated-enum-enum-conversion
${CUSTOM_COMPILE_OPTIONS}>
$<$<CXX_COMPILER_ID:MSVC>:/MP
/MD
/W1
/bigobj
/wd4624>>)
target_link_libraries(${TEST_NAME} PRIVATE ${CLANG_UML_TEST_LIBRARIES})
endforeach()
foreach(TEST_CASE_CONFIG ${TEST_CASE_CONFIGS})
file(RELATIVE_PATH
TEST_CASE_CONFIG_RELATIVE
${CMAKE_CURRENT_SOURCE_DIR}
${TEST_CASE_CONFIG})
file(RELATIVE_PATH TEST_CASE_CONFIG_RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${TEST_CASE_CONFIG})
message(DEBUG ${TEST_CASE_CONFIG_RELATIVE})
configure_file(
${TEST_CASE_CONFIG_RELATIVE}
${TEST_CASE_CONFIG_RELATIVE}
COPYONLY)
configure_file(${TEST_CASE_CONFIG_RELATIVE} ${TEST_CASE_CONFIG_RELATIVE}
COPYONLY)
endforeach()
foreach(TEST_CONFIG_YML ${TEST_CONFIG_YMLS})
file(RELATIVE_PATH
TEST_CONFIG_YML_RELATIVE
${CMAKE_CURRENT_SOURCE_DIR}
${TEST_CONFIG_YML})
file(RELATIVE_PATH TEST_CONFIG_YML_RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${TEST_CONFIG_YML})
message(DEBUG ${TEST_CONFIG_YML_RELATIVE})
configure_file(
${TEST_CONFIG_YML_RELATIVE}
${TEST_CONFIG_YML_RELATIVE}
COPYONLY)
configure_file(${TEST_CONFIG_YML_RELATIVE} ${TEST_CONFIG_YML_RELATIVE}
COPYONLY)
endforeach()
foreach(TEST_NAME ${TEST_NAMES})