changeset 1110:8c53096eef1e

cmake: add pkg-config file support
author David Demelier <markand@malikania.fr>
date Wed, 20 Oct 2021 16:02:13 +0200
parents 251976043986
children ae8b91ec4e4a
files CMakeLists.txt INSTALL.md lib/CMakeLists.txt lib/irccd.pc.in
diffstat 4 files changed, 25 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Wed Oct 20 15:54:07 2021 +0200
+++ b/CMakeLists.txt	Wed Oct 20 16:02:13 2021 +0200
@@ -52,20 +52,23 @@
 	set(CMAKE_C_FLAGS "-Wall -Wextra -pedantic ${CMAKE_C_FLAGS}")
 endif ()
 
+include(GNUInstallDirs)
+
 option(IRCCD_WITH_EXAMPLES "Enable example files" On)
 option(IRCCD_WITH_JS "Enable Javascript" On)
 option(IRCCD_WITH_MAN "Enable manual pages" On)
 option(IRCCD_WITH_SSL "Enable SSL (requires OpenSSL)" On)
 option(IRCCD_WITH_TESTS "Enable unit tests" On)
+option(IRCCD_WITH_PKGCONFIG "Enable installation of pkg-config file" On)
 
 set(IRCCD_WITH_UID "irccd" CACHE STRING "Default uid to run irccd as")
 set(IRCCD_WITH_GID "irccd" CACHE STRING "Default gid to run irccd as")
+set(IRCCD_WITH_PKGCONFIGDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
+	CACHE STRING "Directory for pkg-config files")
 
 # Check presence of POSIX m library
 find_library(M_LIBRARY m libm)
 
-include(GNUInstallDirs)
-
 include(cmake/IrccdDefinePlugin.cmake)
 
 if (IRCCD_WITH_SSL)
--- a/INSTALL.md	Wed Oct 20 15:54:07 2021 +0200
+++ b/INSTALL.md	Wed Oct 20 16:02:13 2021 +0200
@@ -46,13 +46,15 @@
 
 The following options are available:
 
-- `IRCCD_WITH_MAN`: disable installation of manpages.
-- `IRCCD_WITH_JS`: disable Javascript support (and all Javascript plugins).
-- `IRCCD_WITH_SSL`: disable OpenSSL support.
-- `IRCCD_WITH_TESTS`: disable building of tests.
-- `IRCCD_WITH_EXAMPLES`: disable plugin templates.
+- `IRCCD_WITH_MAN`: installation of manpages.
+- `IRCCD_WITH_JS`: Javascript support (and all Javascript plugins).
+- `IRCCD_WITH_SSL`: OpenSSL support.
+- `IRCCD_WITH_TESTS`: building of tests.
+- `IRCCD_WITH_EXAMPLES`: plugin templates.
+- `IRCCD_WITH_PKGCONFIG`: pkg-config file installation.
+- `IRCCD_WITH_PKGCONFIGDIR`: path to pkg-config directory installation.
 
-The following options control installation directories.
+The following standard CMake options control installation directories.
 
 - `CMAKE_INSTALL_PREFIX`: root directory for installing (default: /usr/local).
 - `CMAKE_INSTALL_BINDIR`: binaries (default: ${CMAKE_INSTALL_PREFIX}/bin).
--- a/lib/CMakeLists.txt	Wed Oct 20 15:54:07 2021 +0200
+++ b/lib/CMakeLists.txt	Wed Oct 20 16:02:13 2021 +0200
@@ -77,6 +77,16 @@
 if (IRCCD_WITH_SSL)
 	target_link_libraries(libirccd PUBLIC OpenSSL::SSL OpenSSL::Crypto)
 endif ()
+if (IRCCD_WITH_PKGCONFIG)
+	configure_file(
+		${libirccd_SOURCE_DIR}/irccd.pc.in
+		${libirccd_BINARY_DIR}/irccd.pc
+	)
+	install(
+		FILES ${libirccd_BINARY_DIR}/irccd.pc
+		DESTINATION ${IRCCD_WITH_PKGCONFIGDIR}
+	)
+endif ()
 
 source_group(extern/libbsd FILES ${LIBBSD_SOURCES})
 source_group(irccd FILES ${SOURCES})
--- a/lib/irccd.pc.in	Wed Oct 20 15:54:07 2021 +0200
+++ b/lib/irccd.pc.in	Wed Oct 20 16:02:13 2021 +0200
@@ -1,5 +1,4 @@
 Name: irccd
 Description: Native C interface for irccd plugins
-Version: @MAJOR@.@MINOR@.@PATCH@
-Cflags: -I@INCDIR@
-Libs: @SHFLAGS@
+Version: @irccd_VERSION_MAJOR@.@irccd_VERSION_MINOR@.@irccd_VERSION_PATCH@
+Cflags: -I@CMAKE_INSTALL_FULL_INCLUDEDIR@