style: format tools/cmake files

This commit is contained in:
light7734 2025-10-16 14:12:26 +03:30
parent 479a15bfd0
commit 3f5a85197a
3 changed files with 88 additions and 96 deletions

View file

@ -1,5 +1,5 @@
if(WIN32) if(WIN32)
add_compile_definitions(LIGHT_PLATFORM_WINDOWS) add_compile_definitions(LIGHT_PLATFORM_WINDOWS)
elseif(UNIX) elseif(UNIX)
add_compile_definitions(LIGHT_PLATFORM_LINUX) add_compile_definitions(LIGHT_PLATFORM_LINUX)
endif() endif()

View file

@ -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()

View file

@ -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()