[CMake,libfreerdp] add pkg-config dependencies

This commit is contained in:
akallabeth
2025-09-11 07:17:42 +02:00
parent 113b73512c
commit 8b9335aa90
9 changed files with 46 additions and 11 deletions

View File

@@ -28,6 +28,22 @@ if(WITH_RESOURCE_VERSIONING)
string(APPEND FREERDP_RESOURCE_ROOT "${FREERDP_VERSION_MAJOR}")
endif()
set(FREERDP_PC_REQUIRES_PRIVATE "" CACHE INTERNAL "dependencies")
macro(freerdp_pc_add_requires_private)
foreach(_lib ${ARGN})
list(APPEND FREERDP_PC_REQUIRES_PRIVATE " ${_lib}")
endforeach()
set(FREERDP_PC_REQUIRES_PRIVATE ${FREERDP_PC_REQUIRES_PRIVATE} CACHE INTERNAL "dependencies")
endmacro()
set(FREERDP_PC_LIBRARY_PRIVATE "" CACHE INTERNAL "dependencies")
macro(freerdp_pc_add_library_private)
foreach(_lib ${ARGN})
list(APPEND FREERDP_PC_LIBRARY_PRIVATE ${_lib})
endforeach()
set(FREERDP_PC_LIBRARY_PRIVATE ${FREERDP_PC_LIBRARY_PRIVATE} CACHE INTERNAL "dependencies")
endmacro()
# CMake modules includes
include(FindCairo)
@@ -121,6 +137,7 @@ if(WITH_FDK_AAC)
endif()
add_compile_definitions(WITH_FDK_AAC)
freerdp_pc_add_requires_private("fdk-aac")
endif()
set(OPUS_DEFAULT OFF)
@@ -151,13 +168,16 @@ if(WITH_OPUS)
freerdp_include_directory_add(${OPUS_INCLUDE_DIRS})
link_directories(${OPUS_LIBRARY_DIRS})
endif()
freerdp_pc_add_requires_private("opus")
endif()
if(WITH_SWSCALE)
find_package(FFmpeg REQUIRED COMPONENTS SWSCALE)
freerdp_pc_add_requires_private("libswscale")
endif(WITH_SWSCALE)
if(WITH_CAIRO)
find_package(Cairo REQUIRED)
freerdp_pc_add_requires_private("cairo")
endif(WITH_CAIRO)
# Prefer SWScale over Cairo, both at the same time are not possible.
@@ -247,13 +267,15 @@ installwithrpath(
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "FreeRDP/libfreerdp")
include(pkg-config-install-prefix)
set(FREERDP_REQUIRES_PRIVATE "")
if(WITH_SMARTCARD_EMULATE)
string(APPEND FREERDP_REQUIRES_PRIVATE " zlib")
list(APPEND FREERDP_PC_PRIVATE_LIBS "-lz")
list(REMOVE_DUPLICATES FREERDP_PC_REQUIRES_PRIVATE)
list(JOIN FREERDP_PC_REQUIRES_PRIVATE " " FREERDP_PC_REQUIRES_PRIVATE)
list(REMOVE_DUPLICATES FREERDP_PC_LIBRARY_PRIVATE)
list(JOIN FREERDP_PC_LIBRARY_PRIVATE " -l" FREERDP_PC_LIBRARY_PRIVATE)
if(FREERDP_PC_LIBRARY_PRIVATE)
string(PREPEND FREERDP_PC_LIBRARY_PRIVATE "-l")
endif()
list(JOIN FREERDP_PC_PRIVATE_LIBS " " FREERDP_PC_PRIVATE_LIBS)
cleaning_configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/freerdp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/freerdp${FREERDP_VERSION_MAJOR}.pc @ONLY
)
@@ -262,8 +284,6 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/freerdp${FREERDP_VERSION_MAJOR}.pc DES
## cmake project
export(PACKAGE freerdp)
setfreerdpcmakeinstalldir(FREERDP_CMAKE_INSTALL_DIR "FreeRDP${FREERDP_VERSION_MAJOR}")
configure_package_config_file(
FreeRDPConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfig.cmake
INSTALL_DESTINATION ${FREERDP_CMAKE_INSTALL_DIR} PATH_VARS FREERDP_INCLUDE_DIR FREERDP_PLUGIN_PATH
@@ -276,5 +296,3 @@ write_basic_package_version_file(
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfigVersion.cmake
DESTINATION ${FREERDP_CMAKE_INSTALL_DIR}
)
install(EXPORT FreeRDPTargets DESTINATION ${FREERDP_CMAKE_INSTALL_DIR})