build: projectPrefix usage added

This commit is contained in:
Mateusz Pusz
2021-11-05 23:25:20 +01:00
parent bc7849beb1
commit f9fb6cc8b3
13 changed files with 52 additions and 47 deletions

View File

@ -27,6 +27,8 @@ project(mp-units-dev
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
set(projectPrefix UNITS_)
# make sure that the file is being used as an entry point
include(modern_project_structure)
ensure_entry_point()
@ -43,8 +45,8 @@ set_warnings()
add_compile_definitions($<$<CONFIG:Debug>:gsl_CONFIG_CONTRACT_CHECKING_AUDIT>)
# enable include-what-you-use
option(UNITS_IWYU "Enables include-what-you-use" OFF)
if(UNITS_IWYU)
option(${projectPrefix}IWYU "Enables include-what-you-use" OFF)
if(${projectPrefix}IWYU)
include(include-what-you-use)
enable_iwyu(
MAPPING_FILE "${PROJECT_SOURCE_DIR}/.mp-units.imp"
@ -54,7 +56,7 @@ if(UNITS_IWYU)
NO_COMMENTS
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(UNITS_AS_SYSTEM_HEADERS ON)
set(${projectPrefix}AS_SYSTEM_HEADERS ON)
endif()
endif()

View File

@ -24,7 +24,7 @@
cmake_minimum_required(VERSION 3.15)
option(WARNINGS_AS_ERRORS "Treat compiler warnings as errors" ON)
option(${projectPrefix}WARNINGS_AS_ERRORS "Treat compiler warnings as errors" ON)
macro(_set_flags)
set(MSVC_WARNINGS
@ -83,7 +83,7 @@ macro(_set_flags)
-Wlogical-op # warn about logical operations being used where bitwise were probably wanted
)
if(WARNINGS_AS_ERRORS)
if(${projectPrefix}WARNINGS_AS_ERRORS)
set(GCC_WARNINGS ${GCC_WARNINGS} -Werror)
set(CLANG_WARNINGS ${CLANG_WARNINGS} -Werror)
set(MSVC_WARNINGS ${MSVC_WARNINGS} /WX)
@ -106,7 +106,7 @@ function(set_warnings)
_set_flags()
message(STATUS "Setting restrictive compilation warnings")
message(STATUS " Treat warnings as errors: ${WARNINGS_AS_ERRORS}")
message(STATUS " Treat warnings as errors: ${${projectPrefix}WARNINGS_AS_ERRORS}")
message(STATUS " Flags: ${flags}")
message(STATUS "Setting restrictive compilation warnings - done")
@ -123,7 +123,7 @@ function(set_target_warnings target scope)
_set_flags()
message(STATUS "Setting ${scope} restrictive compilation warnings for '${target}'")
message(STATUS " Treat warnings as errors: ${WARNINGS_AS_ERRORS}")
message(STATUS " Treat warnings as errors: ${${projectPrefix}WARNINGS_AS_ERRORS}")
message(STATUS " Flags: ${flags}")
message(STATUS "Setting ${scope} restrictive compilation warnings for '${target}' - done")

View File

@ -22,14 +22,15 @@
cmake_minimum_required(VERSION 3.2)
option(UNITS_BUILD_DOCS "Generate project documentation" ON)
message(STATUS "UNITS_BUILD_DOCS: ${UNITS_BUILD_DOCS}")
option(${projectPrefix}BUILD_DOCS "Generate project documentation" ON)
message(STATUS "${projectPrefix}BUILD_DOCS: ${${projectPrefix}BUILD_DOCS}")
if(NOT UNITS_BUILD_DOCS)
if(NOT ${projectPrefix}BUILD_DOCS)
return()
endif()
# set paths to Conan packages (needed for doxygen)
# TODO: remove when Conan will learn how to properly create imported build tools targets
include(${CMAKE_BINARY_DIR}/conan_paths.cmake OPTIONAL)
# Find all the public headers

View File

@ -35,7 +35,7 @@ add_example(custom_systems mp-units::core-io mp-units::si)
add_example(hello_units mp-units::core-fmt mp-units::core-io mp-units::si mp-units::si-international)
add_example(measurement mp-units::core-io mp-units::si)
if(NOT UNITS_LIBCXX)
if(NOT ${projectPrefix}LIBCXX)
add_subdirectory(glide_computer)
endif()

View File

@ -29,8 +29,8 @@ function(add_example target)
add_executable(${target}-aliases ${target}.cpp)
target_link_libraries(${target}-aliases PRIVATE ${ARGN})
target_compile_definitions(${target}-aliases PRIVATE
UNITS_NO_LITERALS
UNITS_NO_REFERENCES
${projectPrefix}NO_LITERALS
${projectPrefix}NO_REFERENCES
)
endfunction()
@ -44,11 +44,11 @@ add_example(measurement mp-units::core-io mp-units::si)
add_example(total_energy mp-units::core-io mp-units::si mp-units::isq-natural)
add_example(unknown_dimension mp-units::core-io mp-units::si)
if(NOT UNITS_LIBCXX)
if(NOT ${projectPrefix}LIBCXX)
add_example(glide_computer_example mp-units::core-fmt mp-units::si-international glide_computer)
target_compile_definitions(glide_computer_example-aliases PRIVATE
UNITS_NO_LITERALS
UNITS_NO_REFERENCES
${projectPrefix}NO_LITERALS
${projectPrefix}NO_REFERENCES
)
find_package(wg21-linear_algebra CONFIG REQUIRED)

View File

@ -29,8 +29,8 @@ function(add_example target)
add_executable(${target} ${target}.cpp)
target_link_libraries(${target} PRIVATE ${ARGN})
target_compile_definitions(${target} PRIVATE
UNITS_NO_LITERALS
UNITS_NO_ALIASES
${projectPrefix}NO_LITERALS
${projectPrefix}NO_ALIASES
)
endfunction()

View File

@ -29,8 +29,8 @@ function(add_example target)
add_executable(${target}-literals ${target}.cpp)
target_link_libraries(${target}-literals PRIVATE ${ARGN})
target_compile_definitions(${target}-literals PRIVATE
UNITS_NO_REFERENCES
UNITS_NO_ALIASES
${projectPrefix}NO_REFERENCES
${projectPrefix}NO_ALIASES
)
endfunction()
@ -43,11 +43,11 @@ add_example(foot_pound_second mp-units::core-fmt mp-units::si-fps)
add_example(total_energy mp-units::core-io mp-units::si mp-units::isq-natural)
add_example(unknown_dimension mp-units::core-io mp-units::si)
if(NOT UNITS_LIBCXX)
if(NOT ${projectPrefix}LIBCXX)
add_example(glide_computer_example mp-units::core-fmt mp-units::si-international glide_computer)
target_compile_definitions(glide_computer_example-literals PRIVATE
UNITS_NO_REFERENCES
UNITS_NO_ALIASES
${projectPrefix}NO_REFERENCES
${projectPrefix}NO_ALIASES
)
find_package(wg21-linear_algebra CONFIG REQUIRED)

View File

@ -29,8 +29,8 @@ function(add_example target)
add_executable(${target}-references ${target}.cpp)
target_link_libraries(${target}-references PRIVATE ${ARGN})
target_compile_definitions(${target}-references PRIVATE
UNITS_NO_LITERALS
UNITS_NO_ALIASES
${projectPrefix}NO_LITERALS
${projectPrefix}NO_ALIASES
)
endfunction()
@ -43,11 +43,11 @@ add_example(foot_pound_second mp-units::core-fmt mp-units::si-fps)
add_example(total_energy mp-units::core-io mp-units::si mp-units::isq-natural)
add_example(unknown_dimension mp-units::core-io mp-units::si)
if(NOT UNITS_LIBCXX)
if(NOT ${projectPrefix}LIBCXX)
add_example(glide_computer_example mp-units::core-fmt mp-units::si-international glide_computer)
target_compile_definitions(glide_computer_example-references PRIVATE
UNITS_NO_LITERALS
UNITS_NO_ALIASES
${projectPrefix}NO_LITERALS
${projectPrefix}NO_ALIASES
)
find_package(wg21-linear_algebra CONFIG REQUIRED)

View File

@ -26,15 +26,17 @@ project(mp-units
LANGUAGES CXX
)
option(UNITS_AS_SYSTEM_HEADERS "Exports library as system headers" OFF)
message(STATUS "UNITS_AS_SYSTEM_HEADERS: ${UNITS_AS_SYSTEM_HEADERS}")
set(projectPrefix UNITS_)
option(${projectPrefix}AS_SYSTEM_HEADERS "Exports library as system headers" OFF)
message(STATUS "${projectPrefix}AS_SYSTEM_HEADERS: ${${projectPrefix}AS_SYSTEM_HEADERS}")
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(AddUnitsModule)
include(GNUInstallDirs)
if(UNITS_AS_SYSTEM_HEADERS)
if(${projectPrefix}AS_SYSTEM_HEADERS)
set(units_as_system SYSTEM)
endif()

View File

@ -32,7 +32,7 @@ function(check_libcxx_in_use variable)
set(${variable} ${${variable}} PARENT_SCOPE)
list(POP_BACK CMAKE_MESSAGE_INDENT)
if(UNITS_LIBCXX)
if(${projectPrefix}LIBCXX)
message(CHECK_PASS "found")
else()
message(CHECK_FAIL "not found")

View File

@ -22,13 +22,13 @@
cmake_minimum_required(VERSION 3.15)
option(UNITS_USE_LIBFMT "Enables usage of libfmt instead of the one from 'std'" ON)
message(STATUS "UNITS_USE_LIBFMT: ${UNITS_USE_LIBFMT}")
option(${projectPrefix}USE_LIBFMT "Enables usage of libfmt instead of the one from 'std'" ON)
message(STATUS "${projectPrefix}USE_LIBFMT: ${${projectPrefix}USE_LIBFMT}")
add_units_module(core-fmt mp-units::core)
target_compile_definitions(mp-units-core-fmt INTERFACE UNITS_USE_LIBFMT=$<BOOL:${UNITS_USE_LIBFMT}>)
target_compile_definitions(mp-units-core-fmt INTERFACE ${projectPrefix}USE_LIBFMT=$<BOOL:${${projectPrefix}USE_LIBFMT}>)
if(UNITS_USE_LIBFMT)
if(${projectPrefix}USE_LIBFMT)
find_package(fmt CONFIG REQUIRED)
target_link_libraries(mp-units-core-fmt INTERFACE fmt::fmt)
endif()

View File

@ -23,15 +23,15 @@
cmake_minimum_required(VERSION 3.15)
# core library options
set(UNITS_DOWNCAST_MODE ON CACHE STRING "Select downcasting mode")
set_property(CACHE UNITS_DOWNCAST_MODE PROPERTY STRINGS AUTO ON OFF)
set(${ProjectPrefix}DOWNCAST_MODE ON CACHE STRING "Select downcasting mode")
set_property(CACHE ${ProjectPrefix}DOWNCAST_MODE PROPERTY STRINGS AUTO ON OFF)
# find dependencies
find_package(gsl-lite CONFIG REQUIRED)
# check if libc++ is being used
include(CheckLibcxxInUse)
check_libcxx_in_use(UNITS_LIBCXX)
check_libcxx_in_use(${ProjectPrefix}LIBCXX)
# core library definition
add_library(mp-units-core INTERFACE)
@ -45,7 +45,7 @@ target_include_directories(mp-units-core ${units_as_system} INTERFACE
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(UNITS_LIBCXX)
if(${ProjectPrefix}LIBCXX)
find_package(range-v3 CONFIG REQUIRED)
target_link_libraries(mp-units-core INTERFACE range-v3::range-v3)
endif()
@ -55,14 +55,14 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
)
endif()
if(DEFINED UNITS_DOWNCAST_MODE)
if(DEFINED ${ProjectPrefix}DOWNCAST_MODE)
set(downcast_mode_options OFF ON AUTO)
list(FIND downcast_mode_options "${UNITS_DOWNCAST_MODE}" downcast_mode)
list(FIND downcast_mode_options "${${ProjectPrefix}DOWNCAST_MODE}" downcast_mode)
if(downcast_mode EQUAL -1)
message(FATAL_ERROR "'UNITS_DOWNCAST_MODE' should be one of ${downcast_mode_options} ('${UNITS_DOWNCAST_MODE}' received)")
message(FATAL_ERROR "'${ProjectPrefix}DOWNCAST_MODE' should be one of ${downcast_mode_options} ('${${ProjectPrefix}DOWNCAST_MODE}' received)")
else()
message(STATUS "UNITS_DOWNCAST_MODE: ${UNITS_DOWNCAST_MODE}")
target_compile_definitions(mp-units-core INTERFACE UNITS_DOWNCAST_MODE=${downcast_mode})
message(STATUS "${ProjectPrefix}DOWNCAST_MODE: ${${ProjectPrefix}DOWNCAST_MODE}")
target_compile_definitions(mp-units-core INTERFACE ${ProjectPrefix}DOWNCAST_MODE=${downcast_mode})
endif()
endif()

View File

@ -25,7 +25,7 @@ cmake_minimum_required(VERSION 3.2)
add_library(unit_tests_static_truncating
quantity_test.cpp
)
if(NOT UNITS_LIBCXX)
if(NOT ${projectPrefix}LIBCXX)
target_sources(unit_tests_static_truncating PRIVATE
quantity_kind_test.cpp
quantity_point_kind_test.cpp
@ -64,7 +64,7 @@ add_library(unit_tests_static
us_test.cpp
)
if(NOT UNITS_LIBCXX)
if(NOT ${projectPrefix}LIBCXX)
target_sources(unit_tests_static PRIVATE
custom_rep_test_min_impl.cpp
quantity_point_test.cpp