blob: 5c8f9985711532e53104712963c55c5f58f7937c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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")
|