style: format tools/cmake files
This commit is contained in:
parent
479a15bfd0
commit
3f5a85197a
3 changed files with 88 additions and 96 deletions
|
|
@ -1,157 +1,140 @@
|
||||||
function (add_library_module libname)
|
function(add_library_module libname)
|
||||||
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
||||||
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
"${PUBLIC_INCLUDE_DIR}/${libname}" SYMBOLIC)
|
||||||
"${PUBLIC_INCLUDE_DIR}/${libname}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
|
|
||||||
if ("${ARGN}" STREQUAL "") # Header only library
|
if("${ARGN}" STREQUAL "") # Header only library
|
||||||
message("Adding INTERFACE library ${libname}")
|
message("Adding INTERFACE library ${libname}")
|
||||||
add_library(${libname} INTERFACE)
|
add_library(${libname} INTERFACE)
|
||||||
target_include_directories(${libname} INTERFACE ${PUBLIC_INCLUDE_DIR})
|
target_include_directories(${libname} INTERFACE ${PUBLIC_INCLUDE_DIR})
|
||||||
|
|
||||||
target_link_libraries(${libname} INTERFACE std)
|
target_link_libraries(${libname} INTERFACE std)
|
||||||
|
|
||||||
else () # Compiled library
|
else() # Compiled library
|
||||||
set(source_files)
|
set(source_files)
|
||||||
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
||||||
foreach (source_file ${ARGN})
|
foreach(source_file ${ARGN})
|
||||||
list(APPEND source_files "${source_directory}/${source_file}")
|
list(APPEND source_files "${source_directory}/${source_file}")
|
||||||
endforeach ()
|
endforeach()
|
||||||
|
|
||||||
message("Adding library ${libname} with source files: ${source_files}")
|
message("Adding library ${libname} with source files: ${source_files}")
|
||||||
add_library(${libname} ${source_files})
|
add_library(${libname} ${source_files})
|
||||||
|
|
||||||
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
||||||
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
"${PRIVATE_INCLUDE_DIR}/${libname}" SYMBOLIC)
|
||||||
"${PRIVATE_INCLUDE_DIR}/${libname}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(${libname}
|
target_include_directories(
|
||||||
|
${libname}
|
||||||
PUBLIC ${PUBLIC_INCLUDE_DIR}
|
PUBLIC ${PUBLIC_INCLUDE_DIR}
|
||||||
PRIVATE ${PRIVATE_INCLUDE_DIR}
|
PRIVATE ${PRIVATE_INCLUDE_DIR})
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(${libname} PUBLIC std)
|
target_link_libraries(${libname} PUBLIC std)
|
||||||
endif ()
|
endif()
|
||||||
|
|
||||||
endfunction ()
|
endfunction()
|
||||||
|
|
||||||
function (add_executable_module exename)
|
function(add_executable_module exename)
|
||||||
set(source_files)
|
set(source_files)
|
||||||
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
||||||
foreach (source_file ${ARGN})
|
foreach(source_file ${ARGN})
|
||||||
list(APPEND source_files "${source_directory}/${source_file}")
|
list(APPEND source_files "${source_directory}/${source_file}")
|
||||||
endforeach ()
|
endforeach()
|
||||||
|
|
||||||
message("Adding executable ${exename} with source files: ${source_files}")
|
message("Adding executable ${exename} with source files: ${source_files}")
|
||||||
|
|
||||||
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
||||||
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
"${PUBLIC_INCLUDE_DIR}/${exename}" SYMBOLIC)
|
||||||
"${PUBLIC_INCLUDE_DIR}/${exename}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
||||||
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
"${PRIVATE_INCLUDE_DIR}${exename}" SYMBOLIC)
|
||||||
"${PRIVATE_INCLUDE_DIR}${exename}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${exename} ${source_files})
|
add_executable(${exename} ${source_files})
|
||||||
target_link_libraries(${exename} PRIVATE std)
|
target_link_libraries(${exename} PRIVATE std)
|
||||||
target_include_directories(${exename} PRIVATE ${PUBLIC_INCLUDE_DIR} ${PRIVATE_INCLUDE_DIR})
|
target_include_directories(${exename} PRIVATE ${PUBLIC_INCLUDE_DIR}
|
||||||
endfunction ()
|
${PRIVATE_INCLUDE_DIR})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
function (add_test_module target_lib_name)
|
function(add_test_module target_lib_name)
|
||||||
if (NOT ${ENABLE_UNIT_TESTS})
|
if(NOT ${ENABLE_UNIT_TESTS})
|
||||||
return()
|
return()
|
||||||
endif ()
|
endif()
|
||||||
|
|
||||||
set(source_files)
|
set(source_files)
|
||||||
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
||||||
foreach (source_file ${ARGN})
|
foreach(source_file ${ARGN})
|
||||||
list(APPEND source_files "${source_directory}/${source_file}")
|
list(APPEND source_files "${source_directory}/${source_file}")
|
||||||
endforeach ()
|
endforeach()
|
||||||
|
|
||||||
message("Adding test executable ${target_lib_name}_tests with source files: ${source_files}")
|
message(
|
||||||
|
"Adding test executable ${target_lib_name}_tests with source files: ${source_files}"
|
||||||
|
)
|
||||||
|
|
||||||
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
||||||
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
"${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
|
||||||
"${PUBLIC_INCLUDE_DIR}/${target_lib_name}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
||||||
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
"${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
|
||||||
"${PRIVATE_INCLUDE_DIR}/${target_lib_name}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${target_lib_name}_tests ${source_files})
|
add_executable(${target_lib_name}_tests ${source_files})
|
||||||
target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name} std test)
|
target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name}
|
||||||
target_include_directories(${target_lib_name}_tests
|
std test)
|
||||||
|
target_include_directories(
|
||||||
|
${target_lib_name}_tests
|
||||||
PRIVATE ${PUBLIC_INCLUDE_DIR}
|
PRIVATE ${PUBLIC_INCLUDE_DIR}
|
||||||
PRIVATE ${PRIVATE_INCLUDE_DIR}
|
PRIVATE ${PRIVATE_INCLUDE_DIR})
|
||||||
)
|
endfunction()
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
function (add_fuzz_module target_lib_name)
|
function(add_fuzz_module target_lib_name)
|
||||||
if (NOT ${ENABLE_FUZZ_TESTS})
|
if(NOT ${ENABLE_FUZZ_TESTS})
|
||||||
return()
|
return()
|
||||||
endif ()
|
endif()
|
||||||
|
|
||||||
set(source_files)
|
set(source_files)
|
||||||
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
|
||||||
foreach (source_file ${ARGN})
|
foreach(source_file ${ARGN})
|
||||||
list(APPEND source_files "${source_directory}/${source_file}")
|
list(APPEND source_files "${source_directory}/${source_file}")
|
||||||
endforeach ()
|
endforeach()
|
||||||
|
|
||||||
message("Adding fuzz executable ${target_lib_name}_fuzz with source files: ${source_files}")
|
message(
|
||||||
|
"Adding fuzz executable ${target_lib_name}_fuzz with source files: ${source_files}"
|
||||||
|
)
|
||||||
|
|
||||||
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
|
||||||
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/public/"
|
"${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
|
||||||
"${PUBLIC_INCLUDE_DIR}/${target_lib_name}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
|
||||||
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
|
||||||
file(CREATE_LINK
|
file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/private/"
|
"${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
|
||||||
"${PRIVATE_INCLUDE_DIR}/${target_lib_name}"
|
|
||||||
SYMBOLIC
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${target_lib_name}_fuzz ${source_files})
|
add_executable(${target_lib_name}_fuzz ${source_files})
|
||||||
target_link_libraries(${target_lib_name}_fuzz PRIVATE ${target_lib_name} std fuzz_test)
|
target_link_libraries(${target_lib_name}_fuzz PRIVATE ${target_lib_name}
|
||||||
|
std fuzz_test)
|
||||||
target_link_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer)
|
target_link_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer)
|
||||||
target_compile_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer)
|
target_compile_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer)
|
||||||
target_include_directories(${target_lib_name}_fuzz
|
target_include_directories(
|
||||||
|
${target_lib_name}_fuzz
|
||||||
PRIVATE ${PUBLIC_INCLUDE_DIR}
|
PRIVATE ${PUBLIC_INCLUDE_DIR}
|
||||||
PRIVATE ${PRIVATE_INCLUDE_DIR}
|
PRIVATE ${PRIVATE_INCLUDE_DIR})
|
||||||
)
|
endfunction()
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
function (add_option option help)
|
function(add_option option help)
|
||||||
option(${option} ${help})
|
option(${option} ${help})
|
||||||
|
|
||||||
if (${option})
|
if(${option})
|
||||||
message(STATUS "${option}: ON")
|
message(STATUS "${option}: ON")
|
||||||
add_compile_definitions(${option}=1)
|
add_compile_definitions(${option}=1)
|
||||||
else ()
|
else()
|
||||||
message(STATUS "${option}: OFF")
|
message(STATUS "${option}: OFF")
|
||||||
endif ()
|
endif()
|
||||||
endfunction ()
|
endfunction()
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,41 @@
|
||||||
add_option(ENABLE_UNIT_TESTS "Enables the building of the unit test modules")
|
add_option(ENABLE_UNIT_TESTS "Enables the building of the unit test modules")
|
||||||
add_option(ENABLE_FUZZ_TESTS "Enables the building of the fuzz test modules")
|
add_option(ENABLE_FUZZ_TESTS "Enables the building of the fuzz test modules")
|
||||||
add_option(ENABLE_STATIC_ANALYSIS "Makes the clang-tidy checks mandatory for compilation")
|
add_option(ENABLE_STATIC_ANALYSIS
|
||||||
add_option(ENABLE_LLVM_COVERAGE "Enables the code coverage instrumentation for clang")
|
"Makes the clang-tidy checks mandatory for compilation")
|
||||||
|
add_option(ENABLE_LLVM_COVERAGE
|
||||||
|
"Enables the code coverage instrumentation for clang")
|
||||||
|
|
||||||
if (ENABLE_STATIC_ANALYSIS)
|
if(ENABLE_STATIC_ANALYSIS)
|
||||||
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;--warnings-as-errors=*;--allow-no-checks")
|
set(CMAKE_CXX_CLANG_TIDY
|
||||||
endif ()
|
"clang-tidy;--warnings-as-errors=*;--allow-no-checks")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(ENABLE_LLVM_COVERAGE)
|
if(ENABLE_LLVM_COVERAGE)
|
||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
|
|
||||||
if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
message(FATAL_ERROR "ENABLE_LLVM_COVERAGE only supports the clang compiler")
|
message(
|
||||||
endif ()
|
FATAL_ERROR "ENABLE_LLVM_COVERAGE only supports the clang compiler")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Check for libc++
|
# Check for libc++
|
||||||
check_cxx_source_compiles("
|
check_cxx_source_compiles(
|
||||||
|
"
|
||||||
#include <string>
|
#include <string>
|
||||||
#ifdef _LIBCPP_VERSION
|
#ifdef _LIBCPP_VERSION
|
||||||
int main() { return 0; }
|
int main() { return 0; }
|
||||||
#else
|
#else
|
||||||
#error Not using libc++
|
#error Not using libc++
|
||||||
#endif
|
#endif
|
||||||
" USING_LIBCXX)
|
"
|
||||||
|
USING_LIBCXX)
|
||||||
if(NOT USING_LIBCXX)
|
if(NOT USING_LIBCXX)
|
||||||
message(FATAL_ERROR "ENABLE_LLVM_COVERAGE requires libc++, please compile with -stdlib=libc++")
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"ENABLE_LLVM_COVERAGE requires libc++, please compile with -stdlib=libc++"
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
|
add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
|
||||||
add_link_options(-fprofile-instr-generate -fcoverage-mapping)
|
add_link_options(-fprofile-instr-generate -fcoverage-mapping)
|
||||||
endif ()
|
endif()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue