[CMake,winpr] add pkg-config dependencies

Depending on CMake variables add cmake required.private options
This commit is contained in:
Armin Novak
2025-09-11 07:17:33 +02:00
committed by akallabeth
parent b84c15e8b6
commit 113b73512c
7 changed files with 27 additions and 1 deletions

View File

@@ -51,6 +51,14 @@ if(NOT FREERDP_UNIFIED_BUILD)
add_compile_definitions(NONAMELESSUNION)
endif()
set(WINPR_PC_REQUIRES_PRIVATE "" CACHE INTERNAL "dependencies")
macro(winpr_pc_add_requires_private)
foreach(_lib ${ARGN})
list(APPEND WINPR_PC_REQUIRES_PRIVATE ${_lib})
endforeach()
set(WINPR_PC_REQUIRES_PRIVATE ${WINPR_PC_REQUIRES_PRIVATE} CACHE INTERNAL "dependencies")
endmacro()
if(WIN32 AND NOT UWP)
set(NATIVE_SSPI ON)
endif()
@@ -294,6 +302,7 @@ endif()
if(WITH_OPENSSL AND OPENSSL_FOUND)
add_compile_definitions("WITH_OPENSSL")
winpr_pc_add_requires_private("libssl")
endif()
if(WITH_MBEDTLS AND MBEDTLS_FOUND)
@@ -331,6 +340,9 @@ set(WINPR_INCLUDE_DIR "include/winpr${WINPR_VERSION_MAJOR}")
add_subdirectory(libwinpr)
list(REMOVE_DUPLICATES WINPR_PC_REQUIRES_PRIVATE)
list(JOIN WINPR_PC_REQUIRES_PRIVATE " " WINPR_PC_REQUIRES_PRIVATE)
if(WITH_WINPR_TOOLS)
add_subdirectory(tools)
endif()

View File

@@ -137,6 +137,7 @@ if(WITH_URIPARSER)
winpr_library_add_private(${uriparser_LIBRARIES})
endif()
add_compile_definitions("WITH_URIPARSER")
winpr_pc_add_requires_private("liburiparser")
endif()
if(NOT IOS)

View File

@@ -32,6 +32,9 @@ else()
list(APPEND CRT_FILES unicode_android.c)
elseif(NOT APPLE AND NOT WIN32)
find_package(ICU REQUIRED i18n uc io data)
winpr_pc_add_requires_private("icu-uc")
winpr_pc_add_requires_private("icu-io")
winpr_pc_add_requires_private("icu-i18n")
list(APPEND CRT_FILES unicode_icu.c)
winpr_system_include_directory_add(${ICU_INCLUDE_DIRS})
winpr_library_add_private(${ICU_LIBRARIES})

View File

@@ -77,9 +77,11 @@ if(WITH_KRB5)
if(KRB5_FLAVOUR STREQUAL "MIT")
winpr_definition_add(WITH_KRB5_MIT)
winpr_pc_add_requires_private("mit-krb5")
list(APPEND ${MODULE_PREFIX}_KERBEROS_SRCS Kerberos/krb5glue_mit.c)
elseif(KRB5_FLAVOUR STREQUAL "Heimdal")
winpr_definition_add(WITH_KRB5_HEIMDAL)
winpr_pc_add_requires_private("krb5")
list(APPEND ${MODULE_PREFIX}_KERBEROS_SRCS Kerberos/krb5glue_heimdal.c)
else()
message(WARNING "Kerberos version not detected")

View File

@@ -46,6 +46,8 @@ endif()
option(WITH_TIMEZONE_ICU "Use ICU for improved timezone mapping" OFF)
if(WITH_TIMEZONE_ICU)
find_package(ICU COMPONENTS i18n uc REQUIRED)
winpr_pc_add_requires_private("icu-uc")
winpr_pc_add_requires_private("icu-i18n")
winpr_system_include_directory_add(${ICU_INCLUDE_DIRS})
winpr_library_add_private(${ICU_LIBRARIES})
winpr_definition_add(WITH_TIMEZONE_ICU)

View File

@@ -45,6 +45,7 @@ option(WINPR_UTILS_IMAGE_DIBv5 "[experimental] Add DIBv5 <--> BMP conversion sup
option(WINPR_UTILS_IMAGE_PNG "Add PNG <--> BMP conversion support to clipboard" OFF)
if(WINPR_UTILS_IMAGE_PNG)
find_package(PNG REQUIRED)
winpr_pc_add_requires_private("libpng")
set(WINPR_WITH_PNG ON CACHE BOOL "build cache")
winpr_system_include_directory_add(${PNG_INCLUDE_DIRS})
@@ -55,6 +56,7 @@ option(WINPR_UTILS_IMAGE_WEBP "Add WebP <--> BMP conversion support to clipboard
if(WINPR_UTILS_IMAGE_WEBP)
find_package(PkgConfig REQUIRED)
pkg_check_modules(WEBP libwebp REQUIRED)
winpr_pc_add_requires_private("libwebp")
winpr_system_include_directory_add(${WEBP_INCLUDE_DIRS})
winpr_library_add_private(${WEBP_LIBRARIES})
@@ -64,6 +66,7 @@ option(WINPR_UTILS_IMAGE_JPEG "Add Jpeg <--> BMP conversion support to clipboard
if(WINPR_UTILS_IMAGE_JPEG)
find_package(PkgConfig REQUIRED)
pkg_check_modules(JPEG libjpeg REQUIRED)
winpr_pc_add_requires_private("libjpeg")
winpr_system_include_directory_add(${JPEG_INCLUDE_DIRS})
winpr_library_add_private(${JPEG_LIBRARIES})
@@ -95,6 +98,7 @@ find_package(libsystemd)
option(WITH_SYSTEMD "allows to export wLog to systemd journal" ${libsystemd_FOUND})
if(WITH_LIBSYSTEMD)
find_package(libsystemd REQUIRED)
winpr_pc_add_requires_private("libsystemd")
set(WINPR_HAVE_JOURNALD_H TRUE)
set(JOURNALD_SRCS wlog/JournaldAppender.c wlog/JournaldAppender.h)
winpr_system_include_directory_add(${LIBSYSTEMD_INCLUDE_DIR})
@@ -186,11 +190,13 @@ include(JsonDetect)
if(NOT WITH_JSON_DISABLED)
if(JSONC_FOUND AND NOT WITH_CJSON_REQUIRED)
winpr_library_add_private(${JSONC_LIBRARIES})
winpr_pc_add_requires_private("json-c")
winpr_system_include_directory_add(${JSONC_INCLUDE_DIRS})
winpr_definition_add(WITH_JSONC)
set(WITH_WINPR_JSON ON CACHE INTERNAL "internal")
elseif(CJSON_FOUND)
winpr_library_add_private(${CJSON_LIBRARIES})
winpr_pc_add_requires_private("libcjson")
winpr_system_include_directory_add(${CJSON_INCLUDE_DIRS})
winpr_definition_add(WITH_CJSON)
set(WITH_WINPR_JSON ON CACHE INTERNAL "internal")

View File

@@ -9,7 +9,7 @@ Description: WinPR: Windows Portable Runtime
URL: http://www.freerdp.com/
Version: @WINPR_VERSION@
Requires:
Requires.private: libssl
Requires.private: @WINPR_PC_REQUIRES_PRIVATE@
Libs: -L${libdir} ${libs}
Libs.private: -ldl -lrt -lm -lpthread
Cflags: -I${includedir}