Skip to content

Commit ec86902

Browse files
committed
pkg-config: Split the pkg-config files per library
Allow consumers to only link the the library they need.
1 parent a4ef75a commit ec86902

File tree

10 files changed

+83
-34
lines changed

10 files changed

+83
-34
lines changed

CMakeLists.txt

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,32 @@ if(LIBICAL_DEVMODE)
992992
endif()
993993
libical_option(LIBICAL_BUILD_EXAMPLES "Build examples." True)
994994

995+
########### Configure pkg-config variables #########
996+
997+
set(VERSION "${CMAKE_PROJECT_VERSION}")
998+
set(prefix "${CMAKE_INSTALL_PREFIX}")
999+
set(exec_prefix "\${prefix}")
1000+
if(IS_ABSOLUTE ${LIB_INSTALL_DIR})
1001+
set(libdir "${LIB_INSTALL_DIR}")
1002+
else()
1003+
set(libdir "\${prefix}/${LIB_INSTALL_DIR}")
1004+
endif()
1005+
if(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
1006+
set(includedir "${INCLUDE_INSTALL_DIR}")
1007+
else()
1008+
set(includedir "\${prefix}/include")
1009+
endif()
1010+
if(CMAKE_THREAD_LIBS_INIT)
1011+
set(PTHREAD_LIBS_PRIVATE "\nLibs.private: ${CMAKE_THREAD_LIBS_INIT}")
1012+
else()
1013+
set(PTHREAD_LIBS_PRIVATE "")
1014+
endif()
1015+
if(ICU_FOUND)
1016+
set(REQUIRES_PRIVATE_ICU "\nRequires.private: icu-i18n")
1017+
else()
1018+
set(REQUIRES_PRIVATE_ICU "")
1019+
endif()
1020+
9951021
################# build subdirs ########################
9961022

9971023
if(CMAKE_C_COMPILER_IS_GCC OR CMAKE_C_COMPILER_IS_CLANG)
@@ -1049,35 +1075,6 @@ else()
10491075
set(ICAL_GLIB_BUILD_DOCS)
10501076
endif()
10511077

1052-
########### create and install pkg-config file #########
1053-
1054-
set(VERSION "${CMAKE_PROJECT_VERSION}")
1055-
set(prefix "${CMAKE_INSTALL_PREFIX}")
1056-
set(exec_prefix "\${prefix}")
1057-
if(IS_ABSOLUTE ${LIB_INSTALL_DIR})
1058-
set(libdir "${LIB_INSTALL_DIR}")
1059-
else()
1060-
set(libdir "\${exec_prefix}/${LIB_INSTALL_DIR}")
1061-
endif()
1062-
if(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
1063-
set(includedir "${INCLUDE_INSTALL_DIR}")
1064-
else()
1065-
set(includedir "\${prefix}/include")
1066-
endif()
1067-
if(DEFINED CMAKE_THREAD_LIBS_INIT)
1068-
set(PTHREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
1069-
else()
1070-
set(PTHREAD_LIBS "")
1071-
endif()
1072-
if(ICU_FOUND)
1073-
set(REQUIRES_PRIVATE_ICU "Requires.private: icu-i18n") #for libical.pc
1074-
else()
1075-
set(REQUIRES_PRIVATE_ICU "")
1076-
endif()
1077-
1078-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
1079-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
1080-
10811078
########### Create and install the CMake Config files ##########
10821079
include(CMakePackageConfigHelpers)
10831080

ConfigureChecks.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ check_type_size(
267267
SIZEOF_WINT_T
268268
)
269269

270-
include(FindThreads)
270+
find_package(Threads)
271271
check_library_exists(
272272
pthread
273273
pthread_attr_get_np

src/libical/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,9 @@ if(NOT SHARED_ONLY AND NOT STATIC_ONLY)
363363
install(TARGETS ical-static EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS})
364364
endif()
365365

366+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
367+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
368+
366369
########### next target ###############
367370

368371
if(WITH_CXX_BINDINGS)

libical.pc.in renamed to src/libical/libical.pc.in

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22
# SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
33

44
prefix=@prefix@
5-
exec_prefix=@exec_prefix@
65
libdir=@libdir@
76
includedir=@includedir@
87

98
Name: libical
109
Description: @CMAKE_PROJECT_DESCRIPTION@
10+
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
1111
Version: @CMAKE_PROJECT_VERSION@
12-
Libs: -L${libdir} -lical -licalss -licalvcal -licalvcard
13-
Libs.private: @PTHREAD_LIBS@
14-
@REQUIRES_PRIVATE_ICU@
12+
Libs: -L${libdir} -lical@PTHREAD_LIBS_PRIVATE@@REQUIRES_PRIVATE_ICU@
1513
Cflags: -I${includedir}

src/libicalss/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ if(NOT SHARED_ONLY AND NOT STATIC_ONLY)
171171
install(TARGETS icalss-static EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS})
172172
endif()
173173

174+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libicalss.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libicalss.pc @ONLY)
175+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libicalss.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
176+
174177
########### next target ###############
175178

176179
if(WITH_CXX_BINDINGS)

src/libicalss/libicalss.pc.in

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# SPDX-FileCopyrightText: Copyright Contributors to the libical project
2+
# SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
3+
4+
prefix=@prefix@
5+
libdir=@libdir@
6+
includedir=@includedir@
7+
8+
Name: libicalss
9+
Description: @CMAKE_PROJECT_DESCRIPTION@ (Storage Support)
10+
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
11+
Version: @CMAKE_PROJECT_VERSION@
12+
Libs: -L${libdir} -licalss@PTHREAD_LIBS_PRIVATE@
13+
Requires: libical
14+
Cflags: -I${includedir}

src/libicalvcal/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ if(NOT SHARED_ONLY AND NOT STATIC_ONLY)
103103
install(TARGETS icalvcal-static EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS})
104104
endif()
105105

106+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libicalvcal.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libicalvcal.pc @ONLY)
107+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libicalvcal.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
108+
106109
########### install files ###############
107110

108111
install(

src/libicalvcal/libicalvcal.pc.in

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# SPDX-FileCopyrightText: Copyright Contributors to the libical project
2+
# SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
3+
4+
prefix=@prefix@
5+
libdir=@libdir@
6+
includedir=@includedir@
7+
8+
Name: libicalvcal
9+
Description: @CMAKE_PROJECT_DESCRIPTION@ (VCal)
10+
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
11+
Version: @CMAKE_PROJECT_VERSION@
12+
Libs: -L${libdir} -licalvcal
13+
Requires: libical
14+
Cflags: -I${includedir}

src/libicalvcard/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,9 @@ if(NOT SHARED_ONLY AND NOT STATIC_ONLY)
279279
install(TARGETS icalvcard-static EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS})
280280
endif()
281281

282+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libicalvcard.pc.in ${CMAKE_CURRENT_BINARY_DIR}/icalvcard.pc @ONLY)
283+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libicalvcard.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
284+
282285
########### install files ###############
283286

284287
install(
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# SPDX-FileCopyrightText: Copyright Contributors to the libical project
2+
# SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
3+
4+
prefix=@prefix@
5+
libdir=@libdir@
6+
includedir=@includedir@
7+
8+
Name: libicalvcard
9+
Description: @CMAKE_PROJECT_DESCRIPTION@ (VCard)
10+
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
11+
Version: @CMAKE_PROJECT_VERSION@
12+
Libs: -L${libdir} -licalvcard
13+
Requires: libical
14+
Cflags: -I${includedir}

0 commit comments

Comments
 (0)