mirror of
https://github.com/google/cpu_features.git
synced 2025-06-30 21:02:34 +02:00
Adding CMake install. Fixes #18
This commit is contained in:
@ -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 $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>)
|
||||
target_include_directories(cpu_features PRIVATE include/internal)
|
||||
target_include_directories(cpu_features
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include/cpu_features>
|
||||
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
|
||||
)
|
||||
|
3
cmake/CpuFeaturesConfig.cmake.in
Normal file
3
cmake/CpuFeaturesConfig.cmake.in
Normal file
@ -0,0 +1,3 @@
|
||||
# CpuFeatures CMake configuration file
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/CpuFeaturesTargets.cmake")
|
Reference in New Issue
Block a user