Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 12 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,6 @@ cmake_minimum_required(VERSION 3.21)

project(static-subid C)

# ##############################################################################
# CMake modules
include(GNUInstallDirs)
include(CheckCSourceCompiles)
include(CheckCCompilerFlag)
enable_testing()

# ##############################################################################
# Require out-of-source builds
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
Expand All @@ -21,12 +14,14 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
endif()

# ##############################################################################
# Compiler Sanity Test
check_c_source_compiles("int main(void) { return 0; }" CAN_COMPILE)
if(NOT CAN_COMPILE)
message(FATAL_ERROR "C compiler is non-functional")
endif(NOT CAN_COMPILE)
# CMake modules
include(GNUInstallDirs)
include(CheckCSourceCompiles)
include(CheckCCompilerFlag)
enable_testing()

# ##############################################################################
# Compiler Sanity Test
set(CMAKE_C_STANDARD 23)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON)
Expand Down Expand Up @@ -81,7 +76,7 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
-Wstringop-overflow # String operations writing past buffer end
-Wtrampolines # Nested functions requiring executable stack
)
endif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
endif()

# ##############################################################################
# Find our source code version string
Expand All @@ -103,19 +98,19 @@ if(NOT DEFINED CMAKE_INSTALL_SYSTEMD_UNITDIR)
set(CMAKE_INSTALL_SYSTEMD_UNITDIR
"/usr/lib/systemd/system"
CACHE PATH "systemd unit directory")
endif(NOT DEFINED CMAKE_INSTALL_SYSTEMD_UNITDIR)
endif()

if(NOT DEFINED CMAKE_INSTALL_SYSTEMD_USERUNITDIR)
set(CMAKE_INSTALL_SYSTEMD_USERUNITDIR
"/usr/lib/systemd/user"
CACHE PATH "systemd user unit directory")
endif(NOT DEFINED CMAKE_INSTALL_SYSTEMD_USERUNITDIR)
endif()

if(NOT DEFINED CMAKE_INSTALL_POLKIT_RULESDIR)
set(CMAKE_INSTALL_POLKIT_RULESDIR
"/usr/share/polkit-1/rules.d"
CACHE PATH "polkit rules directory")
endif(NOT DEFINED CMAKE_INSTALL_POLKIT_RULESDIR)
endif()

if(NOT DEFINED USERMOD_PATH)
set(USERMOD_PATH
Expand Down Expand Up @@ -170,7 +165,7 @@ if(NOT MAX_RANGES MATCHES "^[0-9]+$")
"MAX_RANGES must be a non-negative integer (got: '${MAX_RANGES}')")
else()
math(EXPR MAX_RANGES_INT "${MAX_RANGES}")
endif(NOT MAX_RANGES MATCHES "^[0-9]+$")
endif()

# ##############################################################################
# task focused cmake
Expand Down
19 changes: 8 additions & 11 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
set(COVERAGE_LINK_FLAGS --coverage)

message(STATUS "Coverage enabled: GCC + lcov")
endif(LCOV_EXEC AND GENHTML_EXEC)
endif()

elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")

Expand All @@ -47,12 +47,9 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
set(COVERAGE_LINK_FLAGS -fprofile-instr-generate)

message(STATUS "Coverage enabled: Clang + llvm-cov")
endif(
LLVM_PROFDATA_EXEC
AND LLVM_COV_EXEC
AND GENHTML_EXEC)
endif()

endif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
endif()

# ##############################################################################
# Helper macros
Expand All @@ -74,7 +71,7 @@ macro(add_unit_test TEST_NAME)
if(HAVE_COVERAGE_TOOLS)
target_compile_options(${TEST_NAME} PRIVATE ${COVERAGE_COMPILE_FLAGS})
target_link_options(${TEST_NAME} PRIVATE ${COVERAGE_LINK_FLAGS})
endif(HAVE_COVERAGE_TOOLS)
endif()

# keep a record of the binary
list(APPEND UNIT_TEST_BINARIES ${TEST_NAME})
Expand All @@ -84,7 +81,7 @@ macro(add_unit_test TEST_NAME)
CACHE INTERNAL "")

add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
endmacro(add_unit_test TEST_NAME)
endmacro()

# ##############################################################################
# Tests
Expand All @@ -100,7 +97,7 @@ if(BUILD_TESTING)
test_binaries
DEPENDS ${UNIT_TEST_BINARIES}
COMMENT "Building every unit test binary")
endif(BUILD_TESTING)
endif()

# ##############################################################################
# Coverage target
Expand Down Expand Up @@ -167,6 +164,6 @@ if(BUILD_TESTING AND HAVE_COVERAGE_TOOLS)
"Running tests and generating Clang coverage report in ${COVERAGE_OUTPUT_DIR}/index.html"
)

endif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
endif()

endif(BUILD_TESTING AND HAVE_COVERAGE_TOOLS)
endif()
Loading