mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
[CMake,client] add pkg-config dependencies
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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})
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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}
|
||||
|
||||
17
cmake/PkgConfigHelpers.cmake
Normal file
17
cmake/PkgConfigHelpers.cmake
Normal 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()
|
||||
Reference in New Issue
Block a user