mirror of
https://github.com/google/cpu_features.git
synced 2025-07-01 05:11:15 +02:00
Adding CMake install. Fixes #18
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
project(CpuFeatures)
|
project(CpuFeatures VERSION 0.1.0)
|
||||||
|
|
||||||
# Default Build Type to be Release
|
# Default Build Type to be Release
|
||||||
if(NOT CMAKE_BUILD_TYPE)
|
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
|
# BUILD_TESTING is a standard CMake variable, but we declare it here to make it
|
||||||
# prominent in the GUI.
|
# prominent in the GUI.
|
||||||
option(BUILD_TESTING "Enable test (depends on googletest)." OFF)
|
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
|
# library : cpu_features
|
||||||
#
|
#
|
||||||
|
|
||||||
add_library(cpu_features
|
set(_HDRS
|
||||||
include/cpuinfo_aarch64.h
|
include/cpuinfo_aarch64.h
|
||||||
include/cpuinfo_arm.h
|
include/cpuinfo_arm.h
|
||||||
include/cpuinfo_mips.h
|
include/cpuinfo_mips.h
|
||||||
include/cpuinfo_x86.h
|
include/cpuinfo_x86.h
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(cpu_features
|
||||||
|
${_HDRS}
|
||||||
include/internal/bit_utils.h
|
include/internal/bit_utils.h
|
||||||
include/internal/linux_features_aggregator.h
|
include/internal/linux_features_aggregator.h
|
||||||
include/internal/cpuid_x86.h
|
include/internal/cpuid_x86.h
|
||||||
@ -44,8 +51,14 @@ add_library(cpu_features
|
|||||||
src/string_view.c
|
src/string_view.c
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(cpu_features PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>)
|
target_include_directories(cpu_features
|
||||||
target_include_directories(cpu_features PRIVATE include/internal)
|
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_compile_definitions(cpu_features PUBLIC STACK_LINE_READER_BUFFER_SIZE=1024)
|
||||||
target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS})
|
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)
|
if(BUILD_SHARED_LIBS)
|
||||||
set_property(TARGET cpu_features PROPERTY POSITION_INDEPENDENT_CODE ON)
|
set_property(TARGET cpu_features PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||||
endif()
|
endif()
|
||||||
|
add_library(CpuFeature::cpu_features ALIAS cpu_features)
|
||||||
|
|
||||||
#
|
#
|
||||||
# program : list_cpu_features
|
# program : list_cpu_features
|
||||||
@ -62,6 +76,7 @@ endif()
|
|||||||
|
|
||||||
add_executable(list_cpu_features src/list_cpu_features.c)
|
add_executable(list_cpu_features src/list_cpu_features.c)
|
||||||
target_link_libraries(list_cpu_features PRIVATE cpu_features)
|
target_link_libraries(list_cpu_features PRIVATE cpu_features)
|
||||||
|
add_executable(CpuFeature::list_cpu_features ALIAS list_cpu_features)
|
||||||
|
|
||||||
#
|
#
|
||||||
# tests
|
# tests
|
||||||
@ -108,3 +123,39 @@ if(BUILD_TESTING)
|
|||||||
|
|
||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
endif()
|
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