From e558dba8e33de59e9dcc670bdf106838d3db2ab6 Mon Sep 17 00:00:00 2001 From: RMZeroFour Date: Fri, 10 Jan 2025 22:26:05 +0530 Subject: [PATCH] cmake: export targets in config files --- CMakeLists.txt | 117 ++++++++++++++++++++--------- tools/Notcurses++Config.cmake | 8 ++ tools/Notcurses++Config.cmake.in | 9 --- tools/NotcursesConfig.cmake | 8 ++ tools/NotcursesConfig.cmake.in | 9 --- tools/NotcursesCoreConfig.cmake | 8 ++ tools/NotcursesCoreConfig.cmake.in | 9 --- 7 files changed, 105 insertions(+), 63 deletions(-) create mode 100644 tools/Notcurses++Config.cmake delete mode 100644 tools/Notcurses++Config.cmake.in create mode 100644 tools/NotcursesConfig.cmake delete mode 100644 tools/NotcursesConfig.cmake.in create mode 100644 tools/NotcursesCoreConfig.cmake delete mode 100644 tools/NotcursesCoreConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index d69a5b57f5..a9a469cba1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -227,6 +227,7 @@ file(GLOB COMPATSRC CONFIGURE_DEPENDS src/compat/*.c) # libnotcurses-core (core shared library, core static library) file(GLOB NCCORESRCS CONFIGURE_DEPENDS src/lib/*.c) add_library(notcurses-core SHARED ${NCCORESRCS} ${COMPATSRC}) +add_library(Notcurses::NotcursesCore ALIAS notcurses-core) if(${USE_STATIC}) add_library(notcurses-core-static STATIC ${NCCORESRCS} ${COMPATSRC}) else() @@ -250,6 +251,7 @@ endif() set_target_properties(notcurses-core PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME NotcursesCore ) set_target_properties(notcurses-core-static PROPERTIES VERSION ${PROJECT_VERSION} @@ -257,6 +259,8 @@ set_target_properties(notcurses-core-static PROPERTIES ) target_include_directories(notcurses-core BEFORE + PUBLIC + $ PRIVATE include src @@ -321,6 +325,7 @@ endif() # libnotcurses (multimedia shared library+static library) file(GLOB NCSRCS CONFIGURE_DEPENDS src/media/*.c src/media/*.cpp) add_library(notcurses SHARED ${NCSRCS} ${COMPATSRC}) +add_library(Notcurses::Notcurses ALIAS notcurses) if(${USE_STATIC}) # can't build binaries against static notcurses until ffmpeg linking issues # are resolved (USE_STATIC_BINARIES) FIXME @@ -331,6 +336,7 @@ endif() set_target_properties(notcurses PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME Notcurses ) set_target_properties(notcurses-static PROPERTIES VERSION ${PROJECT_VERSION} @@ -338,6 +344,8 @@ set_target_properties(notcurses-static PROPERTIES ) target_include_directories(notcurses BEFORE + PUBLIC + $ PRIVATE include src @@ -501,6 +509,7 @@ set(NCPP_SOURCES ) add_library(notcurses++ SHARED ${NCPP_SOURCES}) +add_library(Notcurses::Notcurses++ ALIAS notcurses++) if(${USE_STATIC}) add_library(notcurses++-static STATIC ${NCPP_SOURCES}) else() @@ -515,7 +524,9 @@ set_target_properties( notcurses++ PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} - OUTPUT_NAME "notcurses++") + OUTPUT_NAME "notcurses++" + EXPORT_NAME Notcurses++ +) set(NCPP_INCLUDE_DIRS "include" @@ -526,7 +537,10 @@ set(NCPP_INCLUDE_DIRS target_include_directories(notcurses++ BEFORE - PRIVATE ${NCPP_INCLUDE_DIRS} + PUBLIC + $ + PRIVATE + ${NCPP_INCLUDE_DIRS} ) target_include_directories(notcurses++-static @@ -620,18 +634,18 @@ file(GLOB NCPP_INTERNAL_HEADERS LIST_DIRECTORIES false ${PROJECT_SOURCE_DIR}/include/ncpp/internal/*.hh) -install(FILES ${NCPP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ncpp) -install(FILES ${NCPP_INTERNAL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ncpp/internal) - -export(PACKAGE notcurses) - file(GLOB NOTCURSES_HEADERS CONFIGURE_DEPENDS LIST_DIRECTORIES false ${PROJECT_SOURCE_DIR}/include/notcurses/*.h ${CMAKE_CURRENT_BINARY_DIR}/include/version.h) + +install(FILES ${NCPP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ncpp) +install(FILES ${NCPP_INTERNAL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ncpp/internal) install(FILES ${NOTCURSES_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/notcurses) +export(PACKAGE notcurses) + # tiny proofs of concept, one binary per source file if(USE_POC) file(GLOB POCSRCS CONFIGURE_DEPENDS src/poc/*.c) @@ -1063,36 +1077,23 @@ if(${USE_CXX}) @ONLY ) endif() -include(CMakePackageConfigHelpers) + configure_file(tools/version.h.in include/version.h) configure_file(tools/builddef.h.in include/builddef.h) -configure_package_config_file(tools/NotcursesConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfig.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses -) +include(CMakePackageConfigHelpers) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfigVersion.cmake COMPATIBILITY SameMajorVersion ) -configure_package_config_file(tools/NotcursesCoreConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfig.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/NotcursesCore -) - write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake COMPATIBILITY SameMajorVersion ) if(${USE_CXX}) -configure_package_config_file(tools/Notcurses++Config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/Notcurses++Config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++ -) - write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/Notcurses++ConfigVersion.cmake COMPATIBILITY SameMajorVersion @@ -1101,20 +1102,20 @@ endif() # Installation install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfig.cmake" + "tools/NotcursesCoreConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/NotcursesCore" ) install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfig.cmake" + "tools/NotcursesConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses" ) if(${USE_CXX}) install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/Notcurses++Config.cmake" + "tools/Notcurses++Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/Notcurses++ConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++" ) @@ -1176,25 +1177,69 @@ endif() endif() # BUILD_EXECUTABLES if(${BUILD_FFI_LIBRARY}) -LIST(APPEND INSTLIBS notcurses-ffi) +install(TARGETS notcurses-ffi + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libraries + NAMELINK_COMPONENT Development +) endif() -LIST(APPEND INSTLIBS notcurses-core notcurses) + if(${USE_STATIC}) -LIST(APPEND INSTLIBS notcurses-core-static notcurses-static) -endif() +install(TARGETS notcurses-core-static notcurses-static + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libraries + NAMELINK_COMPONENT Development +) if(${USE_CXX}) -LIST(APPEND INSTLIBS notcurses++) -if(${USE_STATIC}) -LIST(APPEND INSTLIBS notcurses++-static) -endif() -endif() - -install(TARGETS ${INSTLIBS} +install(TARGETS notcurses++-static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libraries NAMELINK_COMPONENT Development ) +endif() +endif() + +install(TARGETS notcurses-core + EXPORT NotcursesCoreExport + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libraries + NAMELINK_COMPONENT Development +) +install(EXPORT NotcursesCoreExport + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/NotcursesCore + NAMESPACE Notcurses:: + FILE NotcursesCoreTargets.cmake +) + +install(TARGETS notcurses + EXPORT NotcursesExport + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libraries + NAMELINK_COMPONENT Development +) +install(EXPORT NotcursesExport + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses + NAMESPACE Notcurses:: + FILE NotcursesTargets.cmake +) + +install(TARGETS notcurses++ + EXPORT Notcurses++Export + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libraries + NAMELINK_COMPONENT Development +) +install(EXPORT Notcurses++Export + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++ + NAMESPACE Notcurses:: + FILE Notcurses++Targets.cmake +) option(DUMMY_PYTHON "Build dummy python module used for compile check and Clangd" OFF) if(${DUMMY_PYTHON}) diff --git a/tools/Notcurses++Config.cmake b/tools/Notcurses++Config.cmake new file mode 100644 index 0000000000..26757f9170 --- /dev/null +++ b/tools/Notcurses++Config.cmake @@ -0,0 +1,8 @@ +include(CMakeFindDependencyMacro) +find_dependency(Notcurses) + +include("${CMAKE_CURRENT_LIST_DIR}/Notcurses++Targets.cmake") + +set(Notcurses++_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../../include") +set(Notcurses++_LIBRARY_DIRS "") +set(Notcurses++_LIBRARIES Notcurses::Notcurses++) diff --git a/tools/Notcurses++Config.cmake.in b/tools/Notcurses++Config.cmake.in deleted file mode 100644 index 18e76dadf3..0000000000 --- a/tools/Notcurses++Config.cmake.in +++ /dev/null @@ -1,9 +0,0 @@ -@PACKAGE_INIT@ -set(Notcurses++_DIR "@PACKAGE_SOME_INSTALL_DIR@") - -# Compute paths -get_filename_component(Notcurses_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(Notcurses++_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") -set(Notcurses++_LIBRARY_DIRS "@CONF_LIBRARY_DIRS@") - -set(Notcurses++_LIBRARIES -lnotcurses -lnotcurses++) diff --git a/tools/NotcursesConfig.cmake b/tools/NotcursesConfig.cmake new file mode 100644 index 0000000000..c21beb1cfa --- /dev/null +++ b/tools/NotcursesConfig.cmake @@ -0,0 +1,8 @@ +include(CMakeFindDependencyMacro) +find_dependency(NotcursesCore) + +include("${CMAKE_CURRENT_LIST_DIR}/NotcursesTargets.cmake") + +set(Notcurses_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../../include") +set(Notcurses_LIBRARY_DIRS "") +set(Notcurses_LIBRARIES Notcurses::Notcurses) diff --git a/tools/NotcursesConfig.cmake.in b/tools/NotcursesConfig.cmake.in deleted file mode 100644 index 1cf1539025..0000000000 --- a/tools/NotcursesConfig.cmake.in +++ /dev/null @@ -1,9 +0,0 @@ -@PACKAGE_INIT@ -set(Notcurses_DIR "@PACKAGE_SOME_INSTALL_DIR@") - -# Compute paths -get_filename_component(Notcurses_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(Notcurses_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") -set(Notcurses_LIBRARY_DIRS "@CONF_LIBRARY_DIRS@") - -set(Notcurses_LIBRARIES -lnotcurses-core -lnotcurses) diff --git a/tools/NotcursesCoreConfig.cmake b/tools/NotcursesCoreConfig.cmake new file mode 100644 index 0000000000..e1ca4e6c86 --- /dev/null +++ b/tools/NotcursesCoreConfig.cmake @@ -0,0 +1,8 @@ +include(CMakeFindDependencyMacro) +find_dependency(Threads) + +include("${CMAKE_CURRENT_LIST_DIR}/NotcursesCoreTargets.cmake") + +set(NotcursesCore_INCLUDE_DIRS "") +set(NotcursesCore_LIBRARY_DIRS "") +set(NotcursesCore_LIBRARIES Notcurses::NotcursesCore) diff --git a/tools/NotcursesCoreConfig.cmake.in b/tools/NotcursesCoreConfig.cmake.in deleted file mode 100644 index f343ed1ef5..0000000000 --- a/tools/NotcursesCoreConfig.cmake.in +++ /dev/null @@ -1,9 +0,0 @@ -@PACKAGE_INIT@ -set(Notcurses_DIR "@PACKAGE_SOME_INSTALL_DIR@") - -# Compute paths -get_filename_component(Notcurses_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(Notcurses_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") -set(Notcurses_LIBRARY_DIRS "@CONF_LIBRARY_DIRS@") - -set(Notcurses_LIBRARIES -lnotcurses-core)