diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ad7f9b..9482fe4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.0) -project(CpuFeatures) +project(CpuFeatures VERSION 0.1.0) # Default Build Type to be Release if(NOT CMAKE_BUILD_TYPE) @@ -12,16 +12,23 @@ endif(NOT CMAKE_BUILD_TYPE) # BUILD_TESTING is a standard CMake variable, but we declare it here to make it # prominent in the GUI. option(BUILD_TESTING "Enable test (depends on googletest)." OFF) +# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make +# it prominent in the GUI. +option(BUILD_SHARED_LIBS "Build library as shared." OFF) # # library : cpu_features # -add_library(cpu_features +set(_HDRS include/cpuinfo_aarch64.h include/cpuinfo_arm.h include/cpuinfo_mips.h include/cpuinfo_x86.h +) + +add_library(cpu_features + ${_HDRS} include/internal/bit_utils.h include/internal/linux_features_aggregator.h include/internal/cpuid_x86.h @@ -44,8 +51,14 @@ add_library(cpu_features src/string_view.c ) -target_include_directories(cpu_features PUBLIC $) -target_include_directories(cpu_features PRIVATE include/internal) +target_include_directories(cpu_features + PUBLIC + $ + $ + PRIVATE + include/internal +) +set_target_properties(cpu_features PROPERTIES PUBLIC_HEADER "${_HDRS}") target_compile_definitions(cpu_features PUBLIC STACK_LINE_READER_BUFFER_SIZE=1024) target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS}) @@ -55,6 +68,7 @@ target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS}) if(BUILD_SHARED_LIBS) set_property(TARGET cpu_features PROPERTY POSITION_INDEPENDENT_CODE ON) endif() +add_library(CpuFeature::cpu_features ALIAS cpu_features) # # program : list_cpu_features @@ -62,6 +76,7 @@ endif() add_executable(list_cpu_features src/list_cpu_features.c) target_link_libraries(list_cpu_features PRIVATE cpu_features) +add_executable(CpuFeature::list_cpu_features ALIAS list_cpu_features) # # tests @@ -108,3 +123,39 @@ if(BUILD_TESTING) add_subdirectory(test) endif() + +# +# Install +# + +include(GNUInstallDirs) +install(TARGETS cpu_features list_cpu_features + EXPORT CpuFeaturesTargets + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cpu_features + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) +install(EXPORT CpuFeaturesTargets + NAMESPACE CpuFeatures:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CpuFeatures + COMPONENT Devel +) +include(CMakePackageConfigHelpers) +configure_package_config_file(cmake/CpuFeaturesConfig.cmake.in + ${PROJECT_BINARY_DIR}/CpuFeaturesConfig.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/CpuFeatures" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) +write_basic_package_version_file( + "${PROJECT_BINARY_DIR}/CpuFeaturesConfigVersion.cmake" + COMPATIBILITY SameMajorVersion +) +install( + FILES + "${PROJECT_BINARY_DIR}/CpuFeaturesConfig.cmake" + "${PROJECT_BINARY_DIR}/CpuFeaturesConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/CpuFeatures" + COMPONENT Devel +) diff --git a/cmake/CpuFeaturesConfig.cmake.in b/cmake/CpuFeaturesConfig.cmake.in new file mode 100644 index 0000000..e0bf10e --- /dev/null +++ b/cmake/CpuFeaturesConfig.cmake.in @@ -0,0 +1,3 @@ +# CpuFeatures CMake configuration file + +include("${CMAKE_CURRENT_LIST_DIR}/CpuFeaturesTargets.cmake")