aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/freerdp/portfile.cmake
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/freerdp/portfile.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/freerdp/portfile.cmake')
-rw-r--r--vcpkg/ports/freerdp/portfile.cmake156
1 files changed, 156 insertions, 0 deletions
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")