Skip to content

Commit edeb2be

Browse files
authored
driver: Fix pkg-config dependency list generation (#61)
Tested on Linux. pkg-config is also generated on macOS, but this is untested for now. The main use case is for Linux anyway.
1 parent 94be1bc commit edeb2be

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

driver/CMakeLists.txt

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ option(LPAC_WITH_HTTP_CURL "Build HTTP Curl interface" ON)
1010
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} DIR_INTERFACE_SRCS)
1111
if(LPAC_DYNAMIC_DRIVERS)
1212
add_library(euicc-drivers SHARED ${DIR_INTERFACE_SRCS})
13+
list(APPEND LIBEUICC_DRIVERS_REQUIRES "libeuicc = ${PROJECT_VERSION}")
1314
else()
1415
add_library(euicc-drivers STATIC ${DIR_INTERFACE_SRCS})
1516
endif()
@@ -26,9 +27,16 @@ if(LPAC_WITH_APDU_PCSC)
2627
target_link_libraries(euicc-drivers winscard)
2728
elseif(APPLE)
2829
target_link_libraries(euicc-drivers "-framework PCSC")
30+
if(LPAC_DYNAMIC_DRIVERS)
31+
# for pkg-config
32+
set(LIBEUICC_DRIVERS_EXTRA_CFLAGS "-framework PCSC")
33+
endif()
2934
else()
3035
find_package(PCSCLite)
3136
target_link_libraries(euicc-drivers PCSCLite::PCSCLite)
37+
if(LPAC_DYNAMIC_DRIVERS)
38+
list(APPEND LIBEUICC_DRIVERS_REQUIRES "libpcsclite")
39+
endif()
3240
endif()
3341
endif()
3442

@@ -44,6 +52,10 @@ if(LPAC_WITH_APDU_GBINDER)
4452
pkg_check_modules(GBINDER REQUIRED IMPORTED_TARGET libgbinder)
4553
pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
4654
target_link_libraries(euicc-drivers PkgConfig::GBINDER PkgConfig::GLIB)
55+
if(LPAC_DYNAMIC_DRIVERS)
56+
list(APPEND LIBEUICC_DRIVERS_REQUIRES "libgbinder")
57+
list(APPEND LIBEUICC_DRIVERS_REQUIRES "glib-2.0")
58+
endif()
4759
endif()
4860

4961
if(LPAC_WITH_HTTP_CURL)
@@ -54,6 +66,9 @@ if(LPAC_WITH_HTTP_CURL)
5466
else()
5567
find_package(curl)
5668
target_link_libraries(euicc-drivers curl)
69+
if(LPAC_DYNAMIC_DRIVERS)
70+
list(APPEND LIBEUICC_DRIVERS_REQUIRES "libcurl")
71+
endif()
5772
endif()
5873
endif()
5974

@@ -66,9 +81,12 @@ if(LPAC_DYNAMIC_DRIVERS)
6681
endif()
6782
endforeach()
6883
set_target_properties(euicc-drivers PROPERTIES PUBLIC_HEADER "${ALL_HEADERS}")
69-
# Install a pkg-config file
70-
configure_file(libeuicc-drivers.pc.in libeuicc-drivers.pc @ONLY)
71-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libeuicc-drivers.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
84+
# Install a pkg-config file (mainly for Linux; macOS is untested; Win32 is not supported)
85+
if(UNIX)
86+
list(JOIN LIBEUICC_DRIVERS_REQUIRES ", " LIBEUICC_DRIVERS_REQUIRES)
87+
configure_file(libeuicc-drivers.pc.in libeuicc-drivers.pc @ONLY)
88+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libeuicc-drivers.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
89+
endif()
7290
set_target_properties(euicc-drivers PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
7391
install(TARGETS euicc-drivers LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
7492
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/euicc)

driver/libeuicc-drivers.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ includedir="${prefix}/include"
66
Name: libeuicc-drivers
77
Description: An "official" collection of drivers (backends) and their loader for use with libeuicc
88
Version: @PROJECT_VERSION@
9-
Requires: libeuicc = @PROJECT_VERSION@
10-
Cflags: -I${includedir}
9+
Requires: @LIBEUICC_DRIVERS_REQUIRES@
10+
Cflags: -I${includedir} @LIBEUICC_DRIVERS_EXTRA_CFLAGS@
1111
Libs: -L${libdir} -leuicc-drivers

0 commit comments

Comments
 (0)