[CMake,client] add pkg-config dependencies

This commit is contained in:
akallabeth
2025-09-11 07:17:52 +02:00
parent 8b9335aa90
commit 25b5b38d32
22 changed files with 58 additions and 4 deletions

View File

@@ -66,6 +66,7 @@ endif()
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/)
include(ProjectCStandard)
include(PkgConfigHelpers)
# Check for cmake compatibility (enable/disable features)
include(CheckCmakeCompat)
@@ -544,6 +545,9 @@ if(WITH_THIRD_PARTY)
endif()
endif()
# used in libfreerdp subfolder as well
setfreerdpcmakeinstalldir(FREERDP_CMAKE_INSTALL_DIR "FreeRDP${FREERDP_VERSION_MAJOR}")
add_subdirectory(libfreerdp)
if(WITH_CHANNELS)
@@ -558,6 +562,9 @@ if(WITH_SERVER)
add_subdirectory(server)
endif()
# must be after all targets have been added in libfreerdp and channel
install(EXPORT FreeRDPTargets DESTINATION ${FREERDP_CMAKE_INSTALL_DIR})
# Packaging
set(CMAKE_CPACK_INCLUDE_FILE "CMakeCPack.cmake")

View File

@@ -23,6 +23,8 @@ set(${MODULE_PREFIX}_SRCS audin_alsa.c)
set(${MODULE_PREFIX}_LIBS winpr freerdp ${ALSA_LIBRARIES})
freerdp_client_pc_add_requires_private("alsa")
include_directories(..)
include_directories(SYSTEM ${ALSA_INCLUDE_DIRS})

View File

@@ -18,6 +18,7 @@
define_channel_client_subsystem("audin" "pulse" "")
find_package(PulseAudio REQUIRED)
freerdp_client_pc_add_requires_private("libpulse")
set(${MODULE_PREFIX}_SRCS audin_pulse.c)

View File

@@ -18,6 +18,7 @@
define_channel_client_subsystem("printer" "cups" "")
find_package(Cups 2.0 REQUIRED)
freerdp_client_pc_add_requires_private("cups")
set(${MODULE_PREFIX}_SRCS printer_cups.c)
set(${MODULE_PREFIX}_LIBS winpr freerdp ${CUPS_LIBRARIES})

View File

@@ -20,6 +20,7 @@ if(NOT IOS AND NOT WIN32 AND NOT ANDROID)
if(KRB5_FOUND)
define_channel("rdpear")
freerdp_client_pc_add_requires_private("mit-krb5")
if(KRB5_FLAVOUR STREQUAL "Heimdal")
message(FATAL_ERROR "krb5 implementation Heimdal not supported with -DCHANNEL_RDPEAR=ON")

View File

@@ -30,6 +30,8 @@ target_include_directories(rdpear-common-obj SYSTEM PRIVATE ${KRB5_INCLUDE_DIRS}
target_link_directories(rdpear-common INTERFACE ${KRB5_LIBRARY_DIRS})
target_link_libraries(rdpear-common INTERFACE ${KRB5_LIBRARIES} rdpear-common-obj)
freerdp_client_pc_add_library_private(rdpear-common-obj)
channel_install(rdpear-common ${FREERDP_ADDIN_PATH} "FreeRDPTargets")
channel_install(rdpear-common-obj ${FREERDP_ADDIN_PATH} "FreeRDPTargets")

View File

@@ -20,6 +20,7 @@ define_channel_client("rdpecam")
if(NOT WITH_SWSCALE OR NOT WITH_FFMPEG)
message(FATAL_ERROR "WITH_FFMPEG and WITH_SWSCALE required for CHANNEL_RDPECAM_CLIENT")
endif()
freerdp_client_pc_add_requires_private("libswscale")
# currently camera redirect client supported for platforms with Video4Linux only
find_package(FFmpeg REQUIRED COMPONENTS SWSCALE)

View File

@@ -20,6 +20,7 @@ if(WITH_V4L)
define_channel_client_subsystem("rdpecam" "v4l" "")
find_package(libusb-1.0 REQUIRED)
freerdp_client_pc_add_requires_private("libusb-1.0")
include_directories(SYSTEM ${LIBUSB_1_INCLUDE_DIRS})
set(${MODULE_PREFIX}_SRCS camera_v4l.c uvc_h264.c)

View File

@@ -18,6 +18,7 @@
define_channel_client_subsystem("rdpsnd" "alsa" "")
find_package(ALSA REQUIRED)
freerdp_client_pc_add_requires_private("alsa")
set(${MODULE_PREFIX}_SRCS rdpsnd_alsa.c)

View File

@@ -18,6 +18,7 @@
define_channel_client_subsystem("rdpsnd" "pulse" "")
find_package(PulseAudio REQUIRED)
freerdp_client_pc_add_requires_private("libpulse")
set(${MODULE_PREFIX}_SRCS rdpsnd_pulse.c)

View File

@@ -22,4 +22,5 @@ set(SRCS rdpsnd_common.h rdpsnd_common.c)
add_library(rdpsnd-common STATIC ${SRCS})
set_property(TARGET rdpsnd-common PROPERTY FOLDER "Channels/${CHANNEL_NAME}/Common")
freerdp_client_pc_add_library_private(rdpsnd-common)
channel_install(rdpsnd-common ${FREERDP_ADDIN_PATH} "FreeRDPTargets")

View File

@@ -21,4 +21,5 @@ set(SRCS remdesk_common.h remdesk_common.c)
add_library(remdesk-common STATIC ${SRCS})
set_property(TARGET remdesk-common PROPERTY FOLDER "Channels/${CHANNEL_NAME}/Common")
freerdp_client_pc_add_library_private(remdesk-common)
channel_install(remdesk-common ${FREERDP_ADDIN_PATH} "FreeRDPTargets")

View File

@@ -23,6 +23,7 @@ message(DEPRECATION "TSMF channel is no longer maintained. Use [MS-RDPEVOR] (/vi
find_package(PkgConfig)
if(PkgConfig_FOUND)
pkg_check_modules(gstreamer gstreamer-1.0)
freerdp_client_pc_add_requires_private("gstreamer-1.0")
endif()
if(WITH_GSTREAMER_1_0)

View File

@@ -18,6 +18,7 @@
define_channel_client_subsystem("tsmf" "alsa" "audio")
find_package(ALSA REQUIRED)
freerdp_client_pc_add_requires_private("alsa")
set(${MODULE_PREFIX}_SRCS tsmf_alsa.c)

View File

@@ -26,6 +26,7 @@ set(SRC "tsmf_gstreamer.c")
pkg_check_modules(gstreamerbase gstreamer-base-1.0 REQUIRED)
pkg_check_modules(gstreamervideo gstreamer-video-1.0 REQUIRED)
pkg_check_modules(gstreamerapp gstreamer-app-1.0 REQUIRED)
freerdp_client_pc_add_requires_private("gstreamer-base-1.0;gstreamer-video-1.0;gstreamer-app-1.0")
set(LIBS ${gstreamer_LIBRARIES} ${gstreamerbase_LIBRARIES} ${gstreamervideo_LIBRARIES} ${gstreamerapp_LIBRARIES})
include_directories(
@@ -37,6 +38,7 @@ if(ANDROID)
set(SRC ${SRC} tsmf_android.c)
else()
find_package(X11 REQUIRED)
freerdp_client_pc_add_requires_private("x11")
list(APPEND SRC tsmf_X11.c)
list(APPEND LIBS ${X11_LIBRARIES} ${X11_Xext_LIB})

View File

@@ -18,6 +18,7 @@
define_channel_client_subsystem("tsmf" "pulse" "audio")
find_package(PulseAudio REQUIRED)
freerdp_client_pc_add_requires_private("libpulse")
set(${MODULE_PREFIX}_SRCS tsmf_pulse.c)

View File

@@ -24,6 +24,7 @@ if(WITH_CLIENT_CHANNELS)
option(WITH_DEBUG_URBDRC "Dump data send/received in URBDRC channel" ${DEFAULT_DEBUG_OPTION})
find_package(libusb-1.0 REQUIRED)
freerdp_client_pc_add_requires_private("libusb-1.0")
include_directories(SYSTEM ${LIBUSB_1_INCLUDE_DIRS})
add_channel_client(${MODULE_PREFIX} ${CHANNEL_NAME})

View File

@@ -21,4 +21,5 @@ set(SRCS urbdrc_types.h urbdrc_helpers.h urbdrc_helpers.c msusb.h msusb.c)
add_library(urbdrc-common STATIC ${SRCS})
set_property(TARGET urbdrc-common PROPERTY FOLDER "Channels/${CHANNEL_NAME}/Common")
freerdp_client_pc_add_library_private(urbdrc-common)
channel_install(urbdrc-common ${FREERDP_ADDIN_PATH} "FreeRDPTargets")

View File

@@ -99,10 +99,18 @@ if(WITH_CLIENT)
endif()
if(WITH_FUSE)
list(APPEND FREERDP_CLIENT_PC_PRIVATE_LIBS "-lfuse3")
freerdp_client_pc_add_requires_private("fuse3")
endif()
list(REMOVE_DUPLICATES FREERDP_CLIENT_PC_REQUIRES_PRIVATE)
list(JOIN FREERDP_CLIENT_PC_REQUIRES_PRIVATE " " FREERDP_CLIENT_PC_REQUIRES_PRIVATE)
list(REMOVE_DUPLICATES FREERDP_CLIENT_PC_LIBRARY_PRIVATE)
list(JOIN FREERDP_CLIENT_PC_LIBRARY_PRIVATE " -l" FREERDP_CLIENT_PC_LIBRARY_PRIVATE)
if(FREERDP_CLIENT_PC_LIBRARY_PRIVATE)
string(PREPEND FREERDP_CLIENT_PC_LIBRARY_PRIVATE "-l")
endif()
list(JOIN FREERDP_CLIENT_PC_PRIVATE_LIBS " " FREERDP_CLIENT_PC_PRIVATE_LIBS)
include(pkg-config-install-prefix)
cleaning_configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/freerdp-client.pc.in

View File

@@ -59,6 +59,8 @@ if(WITH_FUSE)
find_package(PkgConfig REQUIRED)
pkg_check_modules(FUSE3 REQUIRED fuse3)
freerdp_client_pc_add_requires_private("fuse3")
include_directories(SYSTEM ${FUSE3_INCLUDE_DIRS})
add_compile_definitions(WITH_FUSE)
list(APPEND LIBS ${FUSE3_LIBRARIES})

View File

@@ -9,7 +9,7 @@ Description: FreeRDP: A Remote Desktop Protocol Implementation
URL: http://www.freerdp.com/
Version: @FREERDP_VERSION@
Requires:
Requires.private: @WINPR_PKG_CONFIG_FILENAME@ freerdp@FREERDP_VERSION_MAJOR@
Requires.private: @WINPR_PKG_CONFIG_FILENAME@ freerdp@FREERDP_VERSION_MAJOR@ @FREERDP_CLIENT_PC_REQUIRES_PRIVATE@
Libs: -L${libdir} ${libs}
Libs.private: -ldl -lpthread @FREERDP_CLIENT_PC_PRIVATE_LIBS@
Libs.private: -ldl -lpthread @FREERDP_CLIENT_PC_LIBRARY_PRIVATE@
Cflags: -I${includedir}

View File

@@ -0,0 +1,17 @@
set(FREERDP_CLIENT_PC_REQUIRES_PRIVATE "" CACHE INTERNAL "dependencies")
function(freerdp_client_pc_add_requires_private)
foreach(_lib ${ARGN})
list(APPEND FREERDP_CLIENT_PC_REQUIRES_PRIVATE ${_lib})
endforeach()
set(FREERDP_CLIENT_PC_REQUIRES_PRIVATE ${FREERDP_CLIENT_PC_REQUIRES_PRIVATE} CACHE INTERNAL "dependencies")
endfunction()
set(FREERDP_CLIENT_PC_LIBRARY_PRIVATE "" CACHE INTERNAL "dependencies")
function(freerdp_client_pc_add_library_private)
foreach(_lib ${ARGN})
list(APPEND FREERDP_CLIENT_PC_LIBRARY_PRIVATE ${_lib})
endforeach()
set(FREERDP_CLIENT_PC_LIBRARY_PRIVATE ${FREERDP_CLIENT_PC_LIBRARY_PRIVATE} CACHE INTERNAL "dependencies")
endfunction()