Mercurial > irccd
changeset 1125:75e228008e07
cmake: add export
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 04 Dec 2021 20:14:49 +0100 |
parents | 3d9975880161 |
children | 722fcb2930ea |
files | CMakeLists.txt cmake/IrccdDefinePlugin.cmake cmake/irccd-config.cmake.in irccd/CMakeLists.txt |
diffstat | 4 files changed, 57 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Sat Dec 04 13:20:42 2021 +0100 +++ b/CMakeLists.txt Sat Dec 04 20:14:49 2021 +0100 @@ -52,6 +52,7 @@ set(CMAKE_C_FLAGS "-Wall -Wextra -pedantic ${CMAKE_C_FLAGS}") endif () +include(CMakePackageConfigHelpers) include(GNUInstallDirs) option(IRCCD_WITH_EXAMPLES "Enable example files" On) @@ -79,7 +80,6 @@ add_subdirectory(extern/libduktape) endif () - add_subdirectory(extern/libutlist) add_subdirectory(extern/libketopt) @@ -101,3 +101,24 @@ add_subdirectory(extern/libgreatest) add_subdirectory(tests) endif () + +# CMake packages. +write_basic_package_version_file( + ${PROJECT_BINARY_DIR}/irccd-config-version.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +configure_file( + ${PROJECT_SOURCE_DIR}/cmake/irccd-config.cmake.in + ${PROJECT_BINARY_DIR}/irccd-config.cmake + @ONLY +) + +install( + FILES + ${PROJECT_BINARY_DIR}/irccd-config.cmake + ${PROJECT_BINARY_DIR}/irccd-config-version.cmake + ${PROJECT_SOURCE_DIR}/cmake/IrccdDefinePlugin.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/irccd +)
--- a/cmake/IrccdDefinePlugin.cmake Sat Dec 04 13:20:42 2021 +0100 +++ b/cmake/IrccdDefinePlugin.cmake Sat Dec 04 20:14:49 2021 +0100 @@ -42,6 +42,10 @@ target_link_libraries(irccd-plugin-${PLG_NAME} ${PLG_LIBRARIES}) endif () + if (APPLE) + target_link_libraries(irccd-plugin-${PLG_NAME} "-undefined dynamic_lookup") + endif () + set_target_properties( irccd-plugin-${PLG_NAME} PROPERTIES
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/irccd-config.cmake.in Sat Dec 04 20:14:49 2021 +0100 @@ -0,0 +1,27 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +# +# C native plugins are special objects because they don't link to any library +# so we need to create a fake target that contains at least include directories +# and a flag to create lookup symbols in the host irccd program. +# +add_library(irccd INTERFACE) +target_include_directories(irccd INTERFACE @CMAKE_INSTALL_FULL_INCLUDEDIR@) + +include("${CMAKE_CURRENT_LIST_DIR}/IrccdDefinePlugin.cmake")
--- a/irccd/CMakeLists.txt Sat Dec 04 13:20:42 2021 +0100 +++ b/irccd/CMakeLists.txt Sat Dec 04 20:14:49 2021 +0100 @@ -107,7 +107,10 @@ set_target_properties(irccd PROPERTIES ENABLE_EXPORTS On) # Installation. -install(TARGETS irccd RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install( + TARGETS irccd + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) # Source grouping. source_group(TREE ${irccd_SOURCE_DIR} FILES ${SOURCES} ${irccd_SOURCE_DIR}/main.c)