Skip to content

Commit ba0f4a2

Browse files
authored
Support CMake find_package (pytorch#69)
* Support CMake 'find_package' * export 2 target 'cpuinfo', 'clog' * create cpuinfo-config.cmake template * fix script include
1 parent 6288930 commit ba0f4a2

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

CMakeLists.txt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$")
214214
TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE _WIN32_WINNT=0x0601)
215215
ENDIF()
216216
SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
217-
TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PUBLIC include)
217+
TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
218218
TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PRIVATE src)
219219
TARGET_INCLUDE_DIRECTORIES(cpuinfo_internals BEFORE PUBLIC include src)
220220
IF(CPUINFO_LOG_LEVEL STREQUAL "default")
@@ -264,11 +264,25 @@ ENDIF()
264264
TARGET_LINK_LIBRARIES(cpuinfo PRIVATE clog)
265265
TARGET_LINK_LIBRARIES(cpuinfo_internals PRIVATE clog)
266266

267+
# support find_package(cpuinfo CONFIG)
268+
INCLUDE(CMakePackageConfigHelpers)
269+
GET_FILENAME_COMPONENT(CONFIG_FILE_PATH ${CMAKE_CURRENT_BINARY_DIR}/cpuinfo-config.cmake ABSOLUTE)
270+
CONFIGURE_PACKAGE_CONFIG_FILE(
271+
cmake/cpuinfo-config.cmake.in ${CONFIG_FILE_PATH}
272+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME})
273+
INSTALL(FILES ${CONFIG_FILE_PATH}
274+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}) # cpuinfo_DIR ${prefix}/share/cpuinfo
275+
267276
INSTALL(TARGETS cpuinfo
277+
EXPORT cpuinfo-targets
268278
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
269279
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
270280
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
271281

282+
INSTALL(EXPORT cpuinfo-targets
283+
NAMESPACE ${PROJECT_NAME}:: # IMPORTED cpuinfo::cpuinfo, cpuinfo::clog
284+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME})
285+
272286
# ---[ cpuinfo micro-benchmarks
273287
IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
274288
# ---[ Build google benchmark

cmake/cpuinfo-config.cmake.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
@PACKAGE_INIT@
2+
3+
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
4+
file(GLOB CONFIG_FILES "${_DIR}/cpuinfo-config-*.cmake")
5+
foreach(f ${CONFIG_FILES})
6+
include(${f})
7+
endforeach()
8+
9+
# ${_DIR}/cpuinfo-targets-*.cmake will be included here
10+
include("${_DIR}/cpuinfo-targets.cmake")
11+
12+
check_required_components(@PROJECT_NAME@)

deps/clog/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ SET_TARGET_PROPERTIES(clog PROPERTIES
5757
C_EXTENSIONS NO)
5858
CLOG_TARGET_RUNTIME_LIBRARY(clog)
5959
SET_TARGET_PROPERTIES(clog PROPERTIES PUBLIC_HEADER include/clog.h)
60-
TARGET_INCLUDE_DIRECTORIES(clog BEFORE PUBLIC include)
60+
TARGET_INCLUDE_DIRECTORIES(clog PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
6161
IF(CLOG_LOG_TO_STDIO)
6262
TARGET_COMPILE_DEFINITIONS(clog PRIVATE CLOG_LOG_TO_STDIO=1)
6363
ELSE()
@@ -68,6 +68,7 @@ IF(ANDROID AND NOT CLOG_LOG_TO_STDIO)
6868
ENDIF()
6969

7070
INSTALL(TARGETS clog
71+
EXPORT cpuinfo-targets
7172
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
7273
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
7374
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")

0 commit comments

Comments
 (0)