Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project name #310

Merged
merged 12 commits into from
Sep 2, 2023
Merged
40 changes: 25 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,13 @@ else()
cmake_policy(VERSION 3.25)
endif()

if(NOT UNITS_CMAKE_PROJECT_NAME)
set(UNITS_CMAKE_PROJECT_NAME UNITS)

endif()

project(
UNITS
${UNITS_CMAKE_PROJECT_NAME}
LANGUAGES C CXX
VERSION 0.9.0
)
Expand Down Expand Up @@ -66,8 +71,10 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
endif()
endif()

list(APPEND CMAKE_MODULE_PATH "${UNITS_SOURCE_DIR}/config")
list(APPEND CMAKE_MODULE_PATH "${UNITS_SOURCE_DIR}/ThirdParty/cmake")
list(APPEND CMAKE_MODULE_PATH "${${UNITS_CMAKE_PROJECT_NAME}_SOURCE_DIR}/config")
phlptp marked this conversation as resolved.
Show resolved Hide resolved
list(APPEND CMAKE_MODULE_PATH
"${${UNITS_CMAKE_PROJECT_NAME}_SOURCE_DIR}/ThirdParty/cmake"
)

# Allow IDE's to group targets into folders
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
Expand Down Expand Up @@ -107,9 +114,6 @@ set(UNITS_CLANG_TIDY_OPTIONS
mark_as_advanced(UNITS_CLANG_TIDY_OPTIONS)
mark_as_advanced(UNITS_CLANG_TIDY)

set(UNITS_LIBRARY_EXPORT_COMMAND EXPORT unitsTargets)
mark_as_advanced(UNITS_LIBRARY_EXPORT_COMMAND)

option(UNITS_HEADER_ONLY "Expose the units library as header-only" OFF)

if(NOT TARGET compile_flags_target)
Expand Down Expand Up @@ -190,6 +194,11 @@ if(UNITS_CLANG_TIDY)
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" ${UNITS_CLANG_TIDY_OPTIONS})
endif()

string(TOLOWER ${UNITS_CMAKE_PROJECT_NAME} UNITS_LC_PROJECT_NAME)

set(UNITS_LIBRARY_EXPORT_COMMAND EXPORT unitsTargets)
mark_as_advanced(UNITS_LIBRARY_EXPORT_COMMAND)

add_subdirectory(units)

if(UNITS_BUILD_FUZZ_TARGETS)
Expand All @@ -212,28 +221,29 @@ if(UNITS_INSTALL)
if(NOT UNITS_BINARY_ONLY_INSTALL)
include(CMakePackageConfigHelpers)
configure_file(
config/unitsConfig.cmake.in "${PROJECT_BINARY_DIR}/unitsConfig.cmake" @ONLY
config/unitsConfig.cmake.in
"${PROJECT_BINARY_DIR}/${UNITS_LC_PROJECT_NAME}Config.cmake" @ONLY
)

export(
EXPORT unitsTargets
NAMESPACE units::
FILE ${PROJECT_BINARY_DIR}/unitsTargets.cmake
NAMESPACE ${UNITS_LC_PROJECT_NAME}::
FILE "${PROJECT_BINARY_DIR}/${UNITS_LC_PROJECT_NAME}Targets.cmake"
)

install(
EXPORT unitsTargets
NAMESPACE units::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/units
NAMESPACE ${UNITS_LC_PROJECT_NAME}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${UNITS_LC_PROJECT_NAME}
)

write_basic_package_version_file(
${PROJECT_BINARY_DIR}/unitsConfigVersion.cmake
${PROJECT_BINARY_DIR}/${UNITS_LC_PROJECT_NAME}ConfigVersion.cmake
COMPATIBILITY AnyNewerVersion
)
install(FILES ${PROJECT_BINARY_DIR}/unitsConfigVersion.cmake
${PROJECT_BINARY_DIR}/unitsConfig.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/units
install(FILES ${PROJECT_BINARY_DIR}/${UNITS_LC_PROJECT_NAME}ConfigVersion.cmake
${PROJECT_BINARY_DIR}/${UNITS_LC_PROJECT_NAME}Config.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${UNITS_LC_PROJECT_NAME}
)
endif()
endif()
8 changes: 6 additions & 2 deletions FuzzTargets/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

add_executable(fuzz_from_string fuzz_target_from_string.cpp)
target_link_libraries(fuzz_from_string units::units compile_flags_target)
target_link_libraries(
fuzz_from_string ${UNITS_LC_PROJECT_NAME}::units compile_flags_target
)
target_include_directories(fuzz_from_string PRIVATE ${CMAKE_SOURCE_DIR}/ThirdParty)

add_executable(fuzz_measurement fuzz_target_measurement_from_string.cpp)
target_link_libraries(fuzz_measurement units::units compile_flags_target)
target_link_libraries(
fuzz_measurement ${UNITS_LC_PROJECT_NAME}::units compile_flags_target
)
target_include_directories(fuzz_measurement PRIVATE ${CMAKE_SOURCE_DIR}/ThirdParty)

add_custom_target(
Expand Down
4 changes: 4 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ jobs:
containerImage: gcc:9
units.std: 17
units.options: -DCMAKE_CXX_FLAGS="-Wstrict-overflow=5"
gcc11:
containerImage: gcc:11
units.std: 17
units.options: -DUNITS_CMAKE_PROJECT_NAME=LLNL-UNITS"
gcc12:
containerImage: gcc:12
units.std: 20
Expand Down
6 changes: 4 additions & 2 deletions converter/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ cmake_dependent_option(

if(UNITS_BUILD_CONVERTER_APP)
add_executable(units_convert converter.cpp)
target_link_libraries(units_convert PUBLIC units::units compile_flags_target)
target_link_libraries(
units_convert PUBLIC ${UNITS_LC_PROJECT_NAME}::units compile_flags_target
)
target_include_directories(units_convert PRIVATE ${PROJECT_SOURCE_DIR}/ThirdParty)
target_compile_definitions(
units_convert PUBLIC UNITS_VERSION_STRING="${UNITS_VERSION}"
Expand All @@ -32,5 +34,5 @@ if(UNITS_BUILD_CONVERTER_APP)
COMPONENT units_convert
)
endif()
add_executable(units::units_convert ALIAS units_convert)
add_executable(${UNITS_LC_PROJECT_NAME}::units_convert ALIAS units_convert)
endif()
15 changes: 10 additions & 5 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ if(UNITS_HEADER_ONLY)
foreach(T ${UNIT_TEST_HEADER_ONLY})

add_unit_test(${T}.cpp)
target_link_libraries(${T} units::header_only compile_flags_target)
target_link_libraries(
${T} ${UNITS_LC_PROJECT_NAME}::header_only compile_flags_target
)
if(MSVC)
target_compile_options(${T} PRIVATE /wd4459)
endif()
Expand All @@ -49,7 +51,7 @@ else()
foreach(T ${UNITS_TESTS})

add_unit_test(${T}.cpp)
target_link_libraries(${T} units::units compile_flags_target)
target_link_libraries(${T} ${UNITS_LC_PROJECT_NAME}::units compile_flags_target)
if(UNITS_CLANG_TIDY)
set_property(TARGET ${T} PROPERTY CXX_CLANG_TIDY "${DO_CLANG_TIDY}")
endif()
Expand All @@ -68,7 +70,9 @@ else()
)

add_unit_test(test_leadingNumbers.cpp)
target_link_libraries(test_leadingNumbers units::units compile_flags_target)
target_link_libraries(
test_leadingNumbers ${UNITS_LC_PROJECT_NAME}::units compile_flags_target
)
if(UNITS_CLANG_TIDY)
set_property(TARGET ${T} PROPERTY CXX_CLANG_TIDY "${DO_CLANG_TIDY}")
endif()
Expand Down Expand Up @@ -124,7 +128,7 @@ else()
endif()

add_executable(examples_test examples_test.cpp)
target_link_libraries(examples_test PRIVATE units::units)
target_link_libraries(examples_test PRIVATE ${UNITS_LC_PROJECT_NAME}::units)
target_compile_definitions(examples_test PRIVATE ${TARGET_SPECIAL_COMPILER_FLAGS})
set_target_properties(examples_test PROPERTIES FOLDER "Tests")
add_test(examples_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/examples_test)
Expand All @@ -134,7 +138,8 @@ else()
target_compile_options(test_all_unit_base PRIVATE /wd4459)
endif()
target_link_libraries(
test_all_unit_base gtest gmock gtest_main units::units compile_flags_target
test_all_unit_base gtest gmock gtest_main ${UNITS_LC_PROJECT_NAME}::units
compile_flags_target
)
set_target_properties(test_all_unit_base PROPERTIES FOLDER "Tests")
# test_all_unit_base should not be added to the tests it will take a long time run
Expand Down
27 changes: 16 additions & 11 deletions units/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ if(UNITS_BUILD_SHARED_LIBRARY)
target_compile_definitions(units PUBLIC UNITS_EXPORT_HEADER)
target_include_directories(
units
PUBLIC $<BUILD_INTERFACE:${UNITS_SOURCE_DIR}>
PUBLIC $<BUILD_INTERFACE:${${UNITS_CMAKE_PROJECT_NAME}_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<BUILD_INTERFACE:${UNITS_BINARY_DIR}>
$<BUILD_INTERFACE:${${UNITS_CMAKE_PROJECT_NAME}_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_link_libraries(units PRIVATE compile_flags_target)
Expand Down Expand Up @@ -78,11 +78,13 @@ if(UNITS_BUILD_SHARED_LIBRARY)
# include/units
)
endif()
add_library(units::units ALIAS units)
add_library(${UNITS_LC_PROJECT_NAME}::units ALIAS units)

elseif(UNITS_BUILD_OBJECT_LIBRARY)
add_library(units OBJECT ${units_source_files} ${units_header_files})
target_include_directories(units PRIVATE $<BUILD_INTERFACE:${units_SOURCE_DIR}>)
target_include_directories(
units PRIVATE $<BUILD_INTERFACE:${${UNITS_CMAKE_PROJECT_NAME}_SOURCE_DIR}>
)

if(UNITS_NAMESPACE)
target_compile_definitions(units PUBLIC -DUNITS_NAMESPACE=${UNITS_NAMESPACE})
Expand All @@ -105,8 +107,8 @@ elseif(UNITS_BUILD_STATIC_LIBRARY)
add_library(units STATIC ${units_source_files} ${units_header_files})
target_include_directories(
units
PUBLIC $<BUILD_INTERFACE:${UNITS_SOURCE_DIR}>
$<BUILD_INTERFACE:${UNITS_BINARY_DIR}>
PUBLIC $<BUILD_INTERFACE:${${UNITS_CMAKE_PROJECT_NAME}_SOURCE_DIR}>
$<BUILD_INTERFACE:${${UNITS_CMAKE_PROJECT_NAME}_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_link_libraries(units PRIVATE compile_flags_target)
Expand Down Expand Up @@ -145,13 +147,14 @@ elseif(UNITS_BUILD_STATIC_LIBRARY)
if(UNITS_CLANG_TIDY)
set_property(TARGET units PROPERTY CXX_CLANG_TIDY "${DO_CLANG_TIDY}")
endif()
add_library(units::units ALIAS units)
add_library(${UNITS_LC_PROJECT_NAME}::units ALIAS units)
message(STATUS "adding library ${UNITS_LC_PROJECT_NAME}::units")
endif()

# add the header only interface library
add_library(header_only INTERFACE)
target_include_directories(
header_only INTERFACE $<BUILD_INTERFACE:${units_SOURCE_DIR}>
header_only INTERFACE $<BUILD_INTERFACE:${${UNITS_CMAKE_PROJECT_NAME}_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_compile_definitions(header_only INTERFACE UNITS_HEADER_ONLY)
Expand All @@ -168,13 +171,15 @@ if(UNITS_BASE_TYPE)
header_only INTERFACE -DUNITS_BASE_TYPE=${UNITS_BASE_TYPE}
)
endif()
add_library(units::header_only ALIAS header_only)
add_library(${UNITS_LC_PROJECT_NAME}::header_only ALIAS header_only)

if(UNITS_INSTALL AND NOT UNITS_BINARY_ONLY_INSTALL)
install(FILES ${units_header_files} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/units)
install(FILES ${units_header_files}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${UNITS_LC_PROJECT_NAME}
)
if(UNITS_BUILD_SHARED_LIBRARY OR BUILD_SHARED_LIBS)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/units_export.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/units
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${UNITS_LC_PROJECT_NAME}
)
endif()
endif()
5 changes: 3 additions & 2 deletions webserver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ if(CMAKE_VERSION VERSION_GREATER 3.12)
find_package(Boost 1.70.0 REQUIRED)
add_executable(units_webserver unit_web_server.cpp)
target_link_libraries(
units_webserver PUBLIC units::units compile_flags_target Boost::boost
units_webserver PUBLIC ${UNITS_LC_PROJECT_NAME}::units compile_flags_target
Boost::boost
)

target_compile_definitions(units_webserver PUBLIC BOOST_DATE_TIME_NO_LIB)
Expand All @@ -41,6 +42,6 @@ if(CMAKE_VERSION VERSION_GREATER 3.12)
COMPONENT units_webserver
)
endif()
add_executable(units::units_webserver ALIAS units_webserver)
add_executable(${UNITS_LC_PROJECT_NAME}::units_webserver ALIAS units_webserver)
endif()
endif()