From 51b9a076f0c5d0d40b2e9cf7d356b58ccc92e9fe Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Wed, 27 Mar 2024 21:40:50 +0000 Subject: [PATCH] Generate CMake Configuration File Installs: - lib/cmake/libobjc/libobjcConfig.cmake - lib/cmake/libobjc/libobjcTargets.cmake - lib/cmake/libobjc/libobjcConfigVersion.cmake - lib/cmake/libobjc/libobjcTargets-noconfig.cmake --- .gitignore | 2 +- CMakeLists.txt | 35 +++++++++++++++++++++++++++++++---- Config.cmake.in | 3 +++ 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 Config.cmake.in diff --git a/.gitignore b/.gitignore index 5ff7c15..a69c57e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ *~ .*.sw? -Build +[b|B]uild Debug Release diff --git a/CMakeLists.txt b/CMakeLists.txt index 19e1e75..b3ad99d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -250,13 +250,13 @@ list(APPEND libobjc_CXX_SRCS ${libobjcxx_CXX_SRCS}) target_sources(objc PRIVATE ${libobjc_CXX_SRCS}) include(FindThreads) -target_link_libraries(objc Threads::Threads) +target_link_libraries(objc PUBLIC Threads::Threads) # Link against ntdll.dll for RtlRaiseException if (WIN32 AND NOT MINGW) - target_link_libraries(objc ntdll.dll) + target_link_libraries(objc PUBLIC ntdll.dll) endif() -target_link_libraries(objc tsl::robin_map) +target_link_libraries(objc PRIVATE tsl::robin_map) set_target_properties(objc PROPERTIES LINKER_LANGUAGE C @@ -278,7 +278,7 @@ endif () # Explicitly link libm, as an implicit dependency of the C++ runtime if (M_LIBRARY) - target_link_libraries(objc ${M_LIBRARY}) + target_link_libraries(objc PUBLIC ${M_LIBRARY}) endif () # Make weak symbols work on OS X @@ -340,10 +340,17 @@ else () endif () message(STATUS "GNUstep install type set to ${GNUSTEP_INSTALL_TYPE}") +target_include_directories( + objc + INTERFACE + $ + $) install(TARGETS ${INSTALL_TARGETS} + EXPORT libobjcTargets RUNTIME DESTINATION ${BIN_INSTALL_PATH} LIBRARY DESTINATION ${LIB_INSTALL_PATH} ARCHIVE DESTINATION ${LIB_INSTALL_PATH}) + install(FILES ${libobjc_HDRS} DESTINATION "${HEADER_INSTALL_PATH}/${INCLUDE_DIRECTORY}") install(FILES ${libBlocksRuntime_COMPATIBILITY_HDRS} @@ -366,6 +373,26 @@ if (UNIX) endif () include (CPack) +# CMake Configuration File + +install(EXPORT libobjcTargets + FILE libobjcTargets.cmake + DESTINATION ${LIB_INSTALL_PATH}/cmake/libobjc) +include(CMakePackageConfigHelpers) +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/libobjcConfig.cmake" + INSTALL_DESTINATION "${LIB_INSTALL_PATH}/cmake/libobjc" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/libobjcConfigVersion.cmake" + VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}" + COMPATIBILITY AnyNewerVersion) +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/libobjcConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/libobjcConfigVersion.cmake + DESTINATION ${LIB_INSTALL_PATH}/cmake/libobjc) + # pkg-config descriptor set(PC_LIBS_PRIVATE ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}) diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 0000000..8b40091 --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include ( "${CMAKE_CURRENT_LIST_DIR}/libobjcTargets.cmake" )