aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/freerdp
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/freerdp')
-rw-r--r--vcpkg/ports/freerdp/cmake-project-include.cmake9
-rw-r--r--vcpkg/ports/freerdp/dependencies.patch22
-rw-r--r--vcpkg/ports/freerdp/ffmpeg.diff17
-rw-r--r--vcpkg/ports/freerdp/install-layout.patch20
-rw-r--r--vcpkg/ports/freerdp/portfile.cmake156
-rw-r--r--vcpkg/ports/freerdp/vcpkg.json74
-rw-r--r--vcpkg/ports/freerdp/windows-linkage.patch14
7 files changed, 312 insertions, 0 deletions
diff --git a/vcpkg/ports/freerdp/cmake-project-include.cmake b/vcpkg/ports/freerdp/cmake-project-include.cmake
new file mode 100644
index 0000000..725148e
--- /dev/null
+++ b/vcpkg/ports/freerdp/cmake-project-include.cmake
@@ -0,0 +1,9 @@
+find_package(PkgConfig REQUIRED)
+if(CHANNEL_URBDRC)
+ pkg_check_modules(vcpkg_libusb REQUIRED libusb-1.0)
+ set(LIBUSB_1_INCLUDE_DIR "${vcpkg_libusb_INCLUDE_DIRS}")
+ set(LIBUSB_1_LIBRARY "${vcpkg_libusb_LINK_LIBRARIES}")
+ string(REPLACE "-Wl,-framework," "-framework " libusb_frameworks "${vcpkg_libusb_LDFLAGS}")
+ list(FILTER libusb_frameworks INCLUDE REGEX "^-framework ")
+ list(APPEND LIBUSB_1_LIBRARY ${libusb_frameworks})
+endif()
diff --git a/vcpkg/ports/freerdp/dependencies.patch b/vcpkg/ports/freerdp/dependencies.patch
new file mode 100644
index 0000000..f404569
--- /dev/null
+++ b/vcpkg/ports/freerdp/dependencies.patch
@@ -0,0 +1,22 @@
+diff --git a/cmake/FindFeature.cmake b/cmake/FindFeature.cmake
+index 11bd9f1..231dcf4 100644
+--- a/cmake/FindFeature.cmake
++++ b/cmake/FindFeature.cmake
+@@ -15,7 +15,7 @@ macro(find_feature _feature _type _purpose _description)
+ set(_feature_default "ON")
+ message(STATUS "Finding ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
+ find_package(${_feature} REQUIRED)
+- elseif(${_type} STREQUAL "RECOMMENDED")
++ elseif(0)
+ if(NOT ${WITH_${_feature_upper}})
+ set(_feature_default "OFF")
+ message(STATUS "Skipping ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
+@@ -31,7 +31,7 @@ macro(find_feature _feature _type _purpose _description)
+ )
+ endif()
+ endif()
+- elseif(${_type} STREQUAL "OPTIONAL")
++ elseif(1)
+ if(${WITH_${_feature_upper}})
+ set(_feature_default "ON")
+ message(STATUS "Finding ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
diff --git a/vcpkg/ports/freerdp/ffmpeg.diff b/vcpkg/ports/freerdp/ffmpeg.diff
new file mode 100644
index 0000000..2e1fdfa
--- /dev/null
+++ b/vcpkg/ports/freerdp/ffmpeg.diff
@@ -0,0 +1,17 @@
+diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake
+index 0e5f7be..af23774 100644
+--- a/cmake/FindFFmpeg.cmake
++++ b/cmake/FindFFmpeg.cmake
+@@ -86,7 +86,11 @@ endmacro()
+ # include directories.
+ #
+ macro(find_component _component _pkgconfig _library _header)
+- if(NOT WIN32)
++ find_package(PkgConfig)
++ pkg_check_modules(PC_${_component} ${_pkgconfig})
++ set(${_component}_INCLUDE_DIRS "${PC_${_component}_INCLUDE_DIRS}" CACHE STRING "")
++ set(${_component}_LIBRARIES "${PC_${_component}_LINK_LIBRARIES}" CACHE STRING "")
++ if(0)
+ # use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
diff --git a/vcpkg/ports/freerdp/install-layout.patch b/vcpkg/ports/freerdp/install-layout.patch
new file mode 100644
index 0000000..8514875
--- /dev/null
+++ b/vcpkg/ports/freerdp/install-layout.patch
@@ -0,0 +1,20 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 04ab111..9ae59af 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -483,12 +483,12 @@ endif()
+ option(WITH_ABSOLUTE_PLUGIN_LOAD_PATHS "Load plugins with absolute paths" ${PLUGIN_ABS_PATHS_DEFAULT})
+
+ if(NOT WITH_ABSOLUTE_PLUGIN_LOAD_PATHS)
+- set(FREERDP_DATA_PATH "share")
++ set(FREERDP_DATA_PATH "share/freerdp")
+ if(NOT FREERDP_INSTALL_PREFIX)
+ set(FREERDP_INSTALL_PREFIX ".")
+ endif()
+- set(FREERDP_LIBRARY_PATH ".")
+- set(FREERDP_PLUGIN_PATH ".")
++ set(FREERDP_LIBRARY_PATH "${CMAKE_INSTALL_LIBDIR}")
++ set(FREERDP_PLUGIN_PATH "${CMAKE_INSTALL_LIBDIR}/freerdp${FREERDP_VERSION_MAJOR}")
+ else()
+ set(FREERDP_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/${FREERDP_MAJOR_DIR}")
+ if(NOT FREERDP_INSTALL_PREFIX)
diff --git a/vcpkg/ports/freerdp/portfile.cmake b/vcpkg/ports/freerdp/portfile.cmake
new file mode 100644
index 0000000..5c8f998
--- /dev/null
+++ b/vcpkg/ports/freerdp/portfile.cmake
@@ -0,0 +1,156 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO FreeRDP/FreeRDP
+ REF "${VERSION}"
+ SHA512 644a22f011fd31f2d91e73e26f0b4cfc1e9f8cf862440b08a9a81a5a94e921aeeb1dde2be24d6a9395e355d0ccbe89fd369b0cf7bb45582c2eb6f741036da775
+ HEAD_REF master
+ PATCHES
+ dependencies.patch
+ ffmpeg.diff
+ install-layout.patch
+ windows-linkage.patch
+)
+file(WRITE "${SOURCE_PATH}/.source_version" "${VERSION}-vcpkg")
+file(WRITE "${SOURCE_PATH}/CMakeCPack.cmake" "")
+
+if("x11" IN_LIST FEATURES)
+ message(STATUS "${PORT} currently requires the following libraries from the system package manager:\n libxfixes-dev\n")
+endif()
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ client WITH_CLIENT
+ ffmpeg WITH_DSP_FFMPEG
+ ffmpeg WITH_FFMPEG
+ ffmpeg WITH_SWSCALE
+ server WITH_SERVER
+ urbdrc CHANNEL_URBDRC
+ winpr-tools WITH_WINPR_TOOLS
+ x11 WITH_X11
+ x11 VCPKG_LOCK_FIND_PACKAGE_X11
+)
+
+if("client" IN_LIST FEATURES)
+ # Xcode dependency and untested installation paths
+ if(VCPKG_TARGET_IS_IOS)
+ message(STATUS "Not building native client components.")
+ list(APPEND FEATURE_OPTIONS -DWITH_CLIENT_IOS=OFF)
+ elseif(VCPKG_TARGET_IS_OSX)
+ message(STATUS "Not building native client components.")
+ list(APPEND FEATURE_OPTIONS -DWITH_CLIENT_MAC=OFF)
+ endif()
+endif()
+
+set(HAS_SHADOW_SUBSYSTEM ON)
+
+if("server" IN_LIST FEATURES)
+ # actual shadow platform subsystem
+ if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_WINDOWS # implementation unmaintained
+ OR NOT WITH_X11) # dependency
+ set(HAS_SHADOW_SUBSYSTEM OFF)
+ endif()
+ # actual platform server implementation
+ if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_WINDOWS) # implementation unmaintained
+ list(APPEND FEATURE_OPTIONS -DWITH_PLATFORM_SERVER=OFF)
+ endif()
+endif()
+
+if (NOT HAS_SHADOW_SUBSYSTEM)
+ list(APPEND FEATURE_OPTIONS -DWITH_SHADOW_SUBSYSTEM=OFF -DWITH_SERVER_SHADOW_CLI=OFF)
+endif()
+
+vcpkg_find_acquire_program(PKGCONFIG)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ ${GENERATOR_OPTION}
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ "-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake"
+ -DCMAKE_REQUIRE_FIND_PACKAGE_cJSON=ON
+ -DUSE_VERSION_FROM_GIT_TAG=OFF
+ -DWITH_ABSOLUTE_PLUGIN_LOAD_PATHS=OFF
+ -DWITH_AAD=ON
+ -DWITH_CCACHE=OFF
+ -DWITH_CLANG_FORMAT=OFF
+ -DWITH_MANPAGES=OFF
+ -DWITH_OPENSSL=ON
+ -DWITH_SAMPLE=OFF
+ -DWITH_UNICODE_BUILTIN=ON
+ "-DMSVC_RUNTIME=${VCPKG_CRT_LINKAGE}"
+ "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
+ # Unmaintained
+ -DWITH_CLIENT_WINDOWS=OFF
+ -DWITH_WAYLAND=OFF
+ # Uncontrolled dependencies w.r.t. vcpkg ports, system libs, or tools
+ # Can be overriden in custom triplet file
+ -DUSE_UNWIND=OFF
+ -DWITH_ALSA=OFF
+ -DWITH_CAIRO=OFF
+ -DWITH_CLIENT_SDL=OFF
+ -DWITH_CUPS=OFF
+ -DWITH_FUSE=OFF
+ -DWITH_KRB5=OFF
+ -DWITH_LIBSYSTEMD=OFF
+ -DWITH_OPUS=OFF
+ -DWITH_OSS=OFF
+ -DWITH_PCSC=OFF
+ -DWITH_PKCS11=OFF
+ -DWITH_PROXY_MODULES=OFF
+ -DWITH_PULSE=OFF
+ -DWITH_URIPARSER=OFF
+ OPTIONS_RELEASE
+ -DWITH_VERBOSE_WINPR_ASSERT=OFF
+ MAYBE_UNUSED_VARIABLES
+ MSVC_RUNTIME
+ WITH_CLIENT_WINDOWS
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+
+vcpkg_list(SET tools)
+if("client" IN_LIST FEATURES AND "x11" IN_LIST FEATURES)
+ list(APPEND tools xfreerdp)
+endif()
+if("server" IN_LIST FEATURES)
+ list(APPEND tools freerdp-proxy)
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeRDP-Proxy3 PACKAGE_NAME freerdp-Proxy3 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeRDP-Server3 PACKAGE_NAME freerdp-server3 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+ if (HAS_SHADOW_SUBSYSTEM)
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeRDP-Shadow3 PACKAGE_NAME freerdp-shadow3 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+ list(APPEND tools freerdp-shadow-cli)
+ endif()
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/rdtk0 PACKAGE_NAME rdtk0 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+endif()
+if("winpr-tools" IN_LIST FEATURES)
+ list(APPEND tools winpr-hash winpr-makecert)
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/WinPR-tools3 PACKAGE_NAME winpr-tools3 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+endif()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeRDP-Client3 PACKAGE_NAME freerdp-client3 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/WinPR3 PACKAGE_NAME winpr3 DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeRDP3 PACKAGE_NAME freerdp)
+
+if(tools)
+ vcpkg_copy_tools(TOOL_NAMES ${tools} AUTO_CLEAN)
+endif()
+
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/winpr3/winpr/build-config.h" "\"${CURRENT_PACKAGES_DIR}" "/* vcpkg redacted */ \"")
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ # They build static with dllexport, so it must be used with dllexport. Proper fix needs invasive patching.
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/freerdp3/freerdp/api.h" "#ifdef FREERDP_EXPORTS" "#if 1")
+ if(WITH_SERVER)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/rdtk0/rdtk/api.h" "#ifdef RDTK_EXPORTS" "#if 1")
+ endif()
+endif()
+
+file(GLOB cmakefiles "${CURRENT_PACKAGES_DIR}/include/*/CMakeFiles")
+file(REMOVE_RECURSE
+ ${cmakefiles}
+ "${CURRENT_PACKAGES_DIR}/include/winpr3/config"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+)
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/freerdp/vcpkg.json b/vcpkg/ports/freerdp/vcpkg.json
new file mode 100644
index 0000000..d0d229c
--- /dev/null
+++ b/vcpkg/ports/freerdp/vcpkg.json
@@ -0,0 +1,74 @@
+{
+ "name": "freerdp",
+ "version": "3.17.2",
+ "description": "A free implementation of the Remote Desktop Protocol (RDP)",
+ "homepage": "https://github.com/FreeRDP/FreeRDP",
+ "license": "Apache-2.0",
+ "supports": "!uwp & (!bsd | freebsd)",
+ "dependencies": [
+ "cjson",
+ {
+ "name": "epoll-shim",
+ "platform": "bsd"
+ },
+ "openssl",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "client": {
+ "description": "Build client components"
+ },
+ "ffmpeg": {
+ "description": "Enable image scaling, video and audio with ffmpeg",
+ "dependencies": [
+ {
+ "name": "ffmpeg",
+ "default-features": false,
+ "features": [
+ "avcodec",
+ "swresample",
+ "swscale"
+ ]
+ }
+ ]
+ },
+ "server": {
+ "description": "Build server components",
+ "supports": "!android & !ios & !uwp",
+ "dependencies": [
+ {
+ "name": "freerdp",
+ "default-features": false,
+ "features": [
+ "winpr-tools"
+ ]
+ }
+ ]
+ },
+ "urbdrc": {
+ "description": "USB redirection channel support",
+ "dependencies": [
+ "libusb"
+ ]
+ },
+ "winpr-tools": {
+ "description": "Build winpr tools",
+ "supports": "!android & !ios & !uwp"
+ },
+ "x11": {
+ "description": "Enable X11 support",
+ "supports": "!android & !ios & !windows & !osx",
+ "dependencies": [
+ "xcb"
+ ]
+ }
+ }
+}
diff --git a/vcpkg/ports/freerdp/windows-linkage.patch b/vcpkg/ports/freerdp/windows-linkage.patch
new file mode 100644
index 0000000..84e27da
--- /dev/null
+++ b/vcpkg/ports/freerdp/windows-linkage.patch
@@ -0,0 +1,14 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index db346d3..6ad72d3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -260,6 +260,9 @@ if(WIN32)
+ endif()
+
+ add_compile_definitions(FREERDP_EXPORTS)
++if(NOT BUILD_SHARED_LIBS)
++ add_compile_definitions(RDTK_EXPORTS)
++endif()
+
+ # Mac OS X
+ if(APPLE)