Mercurial > irccd
changeset 992:462e12e434fb
cmake: add CMake configuration
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 10 Feb 2021 21:31:32 +0100 |
parents | 2e8ba5a5630d |
children | 3cd5039d0c67 |
files | CMakeLists.txt cmake/IrccdDefinePlugin.cmake extern/libcompat/CMakeLists.txt extern/libcompat/src/compat.h.in irccd/CMakeLists.txt irccd/dl-plugin.c irccdctl/CMakeLists.txt lib/CMakeLists.txt lib/IrccdConfig.cmake plugins/links/links.c |
diffstat | 10 files changed, 132 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Wed Feb 10 18:17:08 2021 +0100 +++ b/CMakeLists.txt Wed Feb 10 21:31:32 2021 +0100 @@ -24,6 +24,7 @@ set(IRCCD_VERSION_MAJOR 4) set(IRCCD_VERSION_MINOR 0) set(IRCCD_VERSION_PATCH 0) +set(IRCCD_VERSION ${IRCCD_VERSION_MAJOR}.${IRCCD_VERSION_MINOR}.${IRCCD_VERSION_PATCH}) option(IRCCD_WITH_JS "Enable Javascript" On) option(IRCCD_WITH_SSL "Enable SSL support" On)
--- a/cmake/IrccdDefinePlugin.cmake Wed Feb 10 18:17:08 2021 +0100 +++ b/cmake/IrccdDefinePlugin.cmake Wed Feb 10 21:31:32 2021 +0100 @@ -16,6 +16,8 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # +include(GNUInstallDirs) + function(_idp_install_man file) get_filename_component(basename ${file} NAME) configure_file(${file} ${CMAKE_CURRENT_BINARY_DIR}/${basename}) @@ -75,17 +77,7 @@ endif () add_library(irccd-plugin-${PLG_NAME} MODULE ${PLG_SOURCES} ${PLG_MAN}) - get_target_property(LIBIRCCD_INCLUDES libirccd INCLUDE_DIRECTORIES) - get_target_property(LIBCOMPAT_INCLUDES libirccd-compat INCLUDE_DIRECTORIES) - target_include_directories( - irccd-plugin-${PLG_NAME} - PRIVATE - ${PLG_INCLUDES} - ${LIBIRCCD_INCLUDES} - ${LIBCOMPAT_INCLUDES} - ${OPENSSL_INCLUDE_DIR} - ) - target_link_libraries(irccd-plugin-${PLG_NAME} ${PLG_LIBRARIES}) + target_link_libraries(irccd-plugin-${PLG_NAME} irccd::libirccd ${PLG_LIBRARIES}) set_target_properties(irccd-plugin-${PLG_NAME} PROPERTIES PREFIX ""
--- a/extern/libcompat/CMakeLists.txt Wed Feb 10 18:17:08 2021 +0100 +++ b/extern/libcompat/CMakeLists.txt Wed Feb 10 21:31:32 2021 +0100 @@ -92,7 +92,7 @@ target_include_directories( libirccd-compat PUBLIC - $<BUILD_INTERFACE:${libirccd-compat_BINARY_DIR}> + $<BUILD_INTERFACE:${libirccd-compat_BINARY_DIR}/irccd> ) set_target_properties(libirccd-compat PROPERTIES PREFIX "") @@ -109,6 +109,11 @@ if (NOT COMPAT_HAVE_${var}) file(WRITE ${libirccd-compat_BINARY_DIR}/${i} "/* Empty stub for ${i}. */\n") + + install( + FILES ${libirccd-compat_BINARY_DIR}/${i} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd/extern + ) endif () endforeach () @@ -134,6 +139,11 @@ PUBLIC $<BUILD_INTERFACE:${libirccd-compat_SOURCE_DIR}/extern/queue> ) + + install( + FILES ${libirccd-compat_SOURCE_DIR}/extern/queue/sys/queue.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd/extern/sys + ) endif () # Math library @@ -181,5 +191,10 @@ configure_file( ${libirccd-compat_SOURCE_DIR}/src/compat.h.in - ${libirccd-compat_BINARY_DIR}/compat.h + ${libirccd-compat_BINARY_DIR}/irccd/compat.h ) + +install( + FILES ${libirccd-compat_BINARY_DIR}/irccd/compat.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd +)
--- a/extern/libcompat/src/compat.h.in Wed Feb 10 18:17:08 2021 +0100 +++ b/extern/libcompat/src/compat.h.in Wed Feb 10 21:31:32 2021 +0100 @@ -1,3 +1,21 @@ +/* + * compat.h -- compatibility definitions + * + * 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. + */ + #ifndef LIBCOMPAT_COMPAT_H #define LIBCOMPAT_COMPAT_H @@ -121,7 +139,6 @@ extern int opterr; extern int optind; extern int optopt; -extern int optreset; extern char *optarg; int
--- a/irccd/CMakeLists.txt Wed Feb 10 18:17:08 2021 +0100 +++ b/irccd/CMakeLists.txt Wed Feb 10 21:31:32 2021 +0100 @@ -66,7 +66,7 @@ # This is required for unit tests. add_library(irccd-fe OBJECT ${SOURCES}) -target_link_libraries(irccd-fe libirccd) +target_link_libraries(irccd-fe libirccd-static) target_include_directories( irccd-fe PUBLIC @@ -91,5 +91,6 @@ ${FLEX_irccd-lex_OUTPUTS} ) target_link_libraries(irccd irccd-fe) +install(TARGETS irccd DESTINATION ${CMAKE_INSTALL_BINDIR}) source_group(TREE ${irccd_SOURCE_DIR} FILES ${SOURCES})
--- a/irccd/dl-plugin.c Wed Feb 10 18:17:08 2021 +0100 +++ b/irccd/dl-plugin.c Wed Feb 10 21:31:32 2021 +0100 @@ -25,8 +25,7 @@ #include <stdlib.h> #include <string.h> -#include <config.h> - +#include <irccd/config.h> #include <irccd/log.h> #include <irccd/plugin.h> #include <irccd/util.h>
--- a/irccdctl/CMakeLists.txt Wed Feb 10 18:17:08 2021 +0100 +++ b/irccdctl/CMakeLists.txt Wed Feb 10 21:31:32 2021 +0100 @@ -18,4 +18,5 @@ project(irccdctl) add_executable(irccdctl main.c) -target_link_libraries(irccdctl libirccd libirccd-ketopt) +target_link_libraries(irccdctl libirccd-static libirccd-ketopt) +install(TARGETS irccdctl DESTINATION ${CMAKE_INSTALL_BINDIR})
--- a/lib/CMakeLists.txt Wed Feb 10 18:17:08 2021 +0100 +++ b/lib/CMakeLists.txt Wed Feb 10 21:31:32 2021 +0100 @@ -18,33 +18,39 @@ project(libirccd) +include(CMakePackageConfigHelpers) + +set( + HEADERS + irccd/channel.h + irccd/conn.h + irccd/event.h + irccd/hook.h + irccd/irccd.h + irccd/limits.h + irccd/log.h + irccd/plugin.h + irccd/rule.h + irccd/server.h + irccd/subst.h + irccd/util.h +) + set( SOURCES CMakeLists.txt irccd/channel.c - irccd/channel.h irccd/config.h.in irccd/conn.c - irccd/conn.h irccd/event.c - irccd/event.h irccd/hook.c - irccd/hook.h irccd/irccd.c - irccd/irccd.h - irccd/limits.h irccd/log.c - irccd/log.h irccd/plugin.c - irccd/plugin.h irccd/rule.c - irccd/rule.h irccd/server.c - irccd/server.h irccd/subst.c - irccd/subst.h irccd/util.c - irccd/util.h ) configure_file( @@ -52,19 +58,62 @@ ${libirccd_BINARY_DIR}/irccd/config.h ) -add_library(libirccd ${SOURCES}) -set_target_properties(libirccd PROPERTIES PREFIX "") +add_library(libirccd-static ${SOURCES}) +set_target_properties(libirccd-static PROPERTIES PREFIX "") + +# This is what we export to the world. +add_library(libirccd INTERFACE) +add_library(irccd::libirccd ALIAS libirccd) + +target_include_directories(libirccd INTERFACE + $<BUILD_INTERFACE:${libirccd-compat_BINARY_DIR}> + $<BUILD_INTERFACE:${libirccd_SOURCE_DIR}> + $<BUILD_INTERFACE:${libirccd_BINARY_DIR}> + $<BUILD_INTERFACE:${libirccd_BINARY_DIR}/irccd> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/irccd/extern> + ${OPENSSL_INCLUDE_DIR} +) + +write_basic_package_version_file(${libirccd_BINARY_DIR}/IrccdConfigVersion.cmake + VERSION ${IRCCD_VERSION} + COMPATIBILITY SameMajorVersion +) + +install(TARGETS libirccd EXPORT IrccdTargets) +install( + EXPORT IrccdTargets + FILE IrccdTargets.cmake + NAMESPACE + irccd:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/irccd +) +install( + FILES + ${CMAKE_SOURCE_DIR}/cmake/IrccdDefinePlugin.cmake + ${libirccd_SOURCE_DIR}/IrccdConfig.cmake + ${libirccd_BINARY_DIR}/IrccdConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/irccd +) + +install( + FILES + ${HEADERS} + ${libirccd_BINARY_DIR}/irccd/config.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd +) target_include_directories( - libirccd + libirccd-static PUBLIC + $<BUILD_INTERFACE:${libirccd_BINARY_DIR}/irccd> $<BUILD_INTERFACE:${libirccd_SOURCE_DIR}> - $<BUILD_INTERFACE:${libirccd_BINARY_DIR}>/irccd + $<BUILD_INTERFACE:${libirccd_BINARY_DIR}> ) -target_link_libraries(libirccd libirccd-compat) +target_link_libraries(libirccd-static libirccd-compat) if (IRCCD_WITH_SSL) - target_link_libraries(libirccd OpenSSL::SSL OpenSSL::Crypto) + target_link_libraries(libirccd-static OpenSSL::SSL OpenSSL::Crypto) endif () source_group(TREE ${libirccd_SOURCE_DIR} FILES ${SOURCES})
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IrccdConfig.cmake Wed Feb 10 21:31:32 2021 +0100 @@ -0,0 +1,20 @@ +# +# CMakeLists.txt -- CMake build 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. +# + +include("${CMAKE_CURRENT_LIST_DIR}/IrccdTargets.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/IrccdDefinePlugin.cmake")
--- a/plugins/links/links.c Wed Feb 10 18:17:08 2021 +0100 +++ b/plugins/links/links.c Wed Feb 10 21:31:32 2021 +0100 @@ -16,8 +16,6 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include <compat.h> - #include <assert.h> #include <ctype.h> #include <err.h> @@ -29,6 +27,7 @@ #include <curl/curl.h> +#include <irccd/compat.h> #include <irccd/irccd.h> #include <irccd/limits.h> #include <irccd/server.h>