freerdp: Add package.

Revert of 8b4040abda commit.
This commit is contained in:
Biswapriyo Nath
2021-05-25 21:00:48 +05:30
parent 6d3b68cbb6
commit edddf17b4f
8 changed files with 856 additions and 0 deletions

View File

@@ -0,0 +1,205 @@
From d22b58b5cee40b003b7d5fa98aa659c88bbdf3d0 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Wed, 28 Apr 2021 18:25:21 +0530
Subject: [PATCH 1/3] CMake: Set ffmpeg and zlib optional in Win32.
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5c4189da917..2e53e89b103 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -758,13 +758,13 @@
if(WIN32)
set(X11_FEATURE_TYPE "DISABLED")
set(WAYLAND_FEATURE_TYPE "DISABLED")
- set(ZLIB_FEATURE_TYPE "DISABLED")
+ set(ZLIB_FEATURE_TYPE "OPTIONAL")
set(OSS_FEATURE_TYPE "DISABLED")
set(ALSA_FEATURE_TYPE "DISABLED")
set(PULSE_FEATURE_TYPE "DISABLED")
set(CUPS_FEATURE_TYPE "DISABLED")
set(PCSC_FEATURE_TYPE "DISABLED")
- set(FFMPEG_FEATURE_TYPE "DISABLED")
+ set(FFMPEG_FEATURE_TYPE "OPTIONAL")
set(VAAPI_FEATURE_TYPE "DISABLED")
set(OPENSLES_FEATURE_TYPE "DISABLED")
endif()
From 524214cd48efb4bfc55d060b25ecc6e7f3788a54 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Wed, 28 Apr 2021 18:30:24 +0530
Subject: [PATCH 2/3] Check _MSC_VER for MSVC specific pragma directives.
---
client/Windows/wf_floatbar.c | 2 ++
libfreerdp/core/settings.c | 4 ++--
winpr/libwinpr/path/shell.c | 2 +-
winpr/libwinpr/utils/trio/trio.c | 4 ++--
4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/client/Windows/wf_floatbar.c b/client/Windows/wf_floatbar.c
index 512c66b473e..793569bc640 100644
--- a/client/Windows/wf_floatbar.c
+++ b/client/Windows/wf_floatbar.c
@@ -25,7 +25,9 @@
#include "wf_client.h"
#include "wf_floatbar.h"
#include "wf_gdi.h"
+#ifdef _MSC_VER
#pragma comment(lib, "Msimg32.lib")
+#endif
#define TAG CLIENT_TAG("windows.floatbar")
diff --git a/libfreerdp/core/settings.c b/libfreerdp/core/settings.c
index 6539d43699d..b1703fec506 100644
--- a/libfreerdp/core/settings.c
+++ b/libfreerdp/core/settings.c
@@ -44,7 +44,7 @@
#define TAG FREERDP_TAG("settings")
-#ifdef _WIN32
+#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4244)
#endif
@@ -1112,6 +1112,6 @@ rdpSettings* freerdp_settings_clone(const rdpSettings* settings)
freerdp_settings_free(_settings);
return NULL;
}
-#ifdef _WIN32
+#ifdef _MSC_VER
#pragma warning(pop)
#endif
diff --git a/winpr/libwinpr/path/shell.c b/winpr/libwinpr/path/shell.c
index c373f039925..fc536c6bab6 100644
--- a/winpr/libwinpr/path/shell.c
+++ b/winpr/libwinpr/path/shell.c
@@ -663,7 +663,7 @@ BOOL PathIsDirectoryEmptyW(LPCWSTR pszPath)
#else
-#ifdef _WIN32
+#ifdef _MSC_VER
#pragma comment(lib, "shlwapi.lib")
#endif
diff --git a/winpr/libwinpr/utils/trio/trio.c b/winpr/libwinpr/utils/trio/trio.c
index b278f475b75..a2c0290bc54 100644
--- a/winpr/libwinpr/utils/trio/trio.c
+++ b/winpr/libwinpr/utils/trio/trio.c
@@ -406,7 +406,7 @@ typedef trio_longlong_t trio_int64_t;
* Internal Definitions
*/
-#ifdef _WIN32
+#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4244)
#endif
@@ -7189,6 +7189,6 @@ TRIO_PUBLIC TRIO_CONST char* trio_strerror TRIO_ARGS1((errorcode), int errorcode
#endif
}
-#ifdef _WIN32
+#ifdef _MSC_VER
#pragma warning(pop)
#endif
From 788849cb9b74540f8234b875d6b5622a96a64c73 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Wed, 28 Apr 2021 18:32:54 +0530
Subject: [PATCH 3/3] Fix intialization, remove some unused variables.
---
client/Windows/wf_floatbar.c | 16 ++++------------
libfreerdp/utils/stopwatch.c | 2 +-
server/Windows/wf_mirage.c | 1 -
winpr/libwinpr/file/generic.c | 1 -
winpr/libwinpr/synch/sleep.c | 6 +++---
5 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/client/Windows/wf_floatbar.c b/client/Windows/wf_floatbar.c
index 793569bc640..b5fe3207d67 100644
--- a/client/Windows/wf_floatbar.c
+++ b/client/Windows/wf_floatbar.c
@@ -357,18 +357,10 @@ static BOOL floatbar_paint(wfFloatBar* const floatbar, const HDC hdc)
int bottom = BACKGROUND_H - 1;
int right = BACKGROUND_W - 1;
const int angleOffset = BACKGROUND_H - 1;
- TRIVERTEX triVertext[2] = { left,
- top,
- GetRValue(rgbTop) << 8,
- GetGValue(rgbTop) << 8,
- GetBValue(rgbTop) << 8,
- 0x0000,
- right,
- bottom,
- GetRValue(rgbBottom) << 8,
- GetGValue(rgbBottom) << 8,
- GetBValue(rgbBottom) << 8,
- 0x0000 };
+ TRIVERTEX triVertext[2] = { { left, top, GetRValue(rgbTop) << 8, GetGValue(rgbTop) << 8,
+ GetBValue(rgbTop) << 8, 0x0000 },
+ { right, bottom, GetRValue(rgbBottom) << 8,
+ GetGValue(rgbBottom) << 8, GetBValue(rgbBottom) << 8, 0x0000 } };
if (!floatbar)
return FALSE;
diff --git a/libfreerdp/utils/stopwatch.c b/libfreerdp/utils/stopwatch.c
index b30890cd990..4dc207b6576 100644
--- a/libfreerdp/utils/stopwatch.c
+++ b/libfreerdp/utils/stopwatch.c
@@ -27,7 +27,7 @@
#include <freerdp/utils/stopwatch.h>
#ifdef _WIN32
-LARGE_INTEGER stopwatch_freq = { 0, 0 };
+LARGE_INTEGER stopwatch_freq = { 0 };
#else
#include <sys/time.h>
#endif
diff --git a/server/Windows/wf_mirage.c b/server/Windows/wf_mirage.c
index 272bcbc64af..524ff6e0eaa 100644
--- a/server/Windows/wf_mirage.c
+++ b/server/Windows/wf_mirage.c
@@ -195,7 +195,6 @@ void wf_mirror_driver_print_display_change_status(LONG status)
BOOL wf_mirror_driver_update(wfInfo* wfi, int mode)
{
- HDC dc;
BOOL status;
DWORD* extHdr;
WORD drvExtraSaved;
diff --git a/winpr/libwinpr/file/generic.c b/winpr/libwinpr/file/generic.c
index 2faee83ad0a..7f230fe6d7e 100644
--- a/winpr/libwinpr/file/generic.c
+++ b/winpr/libwinpr/file/generic.c
@@ -1299,7 +1299,6 @@ int UnixChangeFileMode(const char* filename, int flags)
#else
int rc;
WCHAR* wfl = NULL;
- int fl = 0;
if (ConvertToUnicode(CP_UTF8, 0, filename, -1, &wfl, 0) <= 0)
return -1;
diff --git a/winpr/libwinpr/synch/sleep.c b/winpr/libwinpr/synch/sleep.c
index 05e7c53c535..7de1a3a521f 100644
--- a/winpr/libwinpr/synch/sleep.c
+++ b/winpr/libwinpr/synch/sleep.c
@@ -117,9 +117,9 @@ VOID USleep(DWORD dwMicroseconds)
#ifndef _WIN32
usleep(dwMicroseconds);
#else
- static LARGE_INTEGER freq = { 0, 0 };
- LARGE_INTEGER t1 = { 0, 0 };
- LARGE_INTEGER t2 = { 0, 0 };
+ static LARGE_INTEGER freq = { 0 };
+ LARGE_INTEGER t1 = { 0 };
+ LARGE_INTEGER t2 = { 0 };
QueryPerformanceCounter(&t1);

View File

@@ -0,0 +1,308 @@
From b788942c7c55f78121a195f989748c0ba92194ad Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Mon, 24 May 2021 10:21:42 +0530
Subject: [PATCH 1/3] CMake: Install DLLs in bin folder.
In Win32 platform, executables and runtime libraries need to be in one folder.
---
client/common/CMakeLists.txt | 5 ++++-
libfreerdp/CMakeLists.txt | 6 +++++-
server/Windows/CMakeLists.txt | 5 ++++-
server/common/CMakeLists.txt | 6 +++++-
server/shadow/CMakeLists.txt | 10 ++++++++--
winpr/libwinpr/CMakeLists.txt | 6 +++++-
winpr/tools/CMakeLists.txt | 6 +++++-
7 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/client/common/CMakeLists.txt b/client/common/CMakeLists.txt
index cc8f277691e..095039d5779 100644
--- a/client/common/CMakeLists.txt
+++ b/client/common/CMakeLists.txt
@@ -74,7 +74,10 @@ else()
endif()
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT FreeRDP-ClientTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT libraries EXPORT FreeRDP-ClientTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
diff --git a/libfreerdp/CMakeLists.txt b/libfreerdp/CMakeLists.txt
index ef76d059b5b..9b82f6e7033 100644
--- a/libfreerdp/CMakeLists.txt
+++ b/libfreerdp/CMakeLists.txt
@@ -395,7 +395,11 @@ endif()
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${LIBFREERDP_LIBS} winpr)
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT FreeRDPTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT libraries EXPORT FreeRDPTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
diff --git a/server/Windows/CMakeLists.txt b/server/Windows/CMakeLists.txt
index aed120586f9..f12687c0cfe 100644
--- a/server/Windows/CMakeLists.txt
+++ b/server/Windows/CMakeLists.txt
@@ -98,7 +98,10 @@
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
if(WITH_SERVER_INTERFACE)
- install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries)
+ install(TARGETS ${MODULE_NAME} COMPONENT libraries
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
diff --git a/server/common/CMakeLists.txt b/server/common/CMakeLists.txt
index c94a20911b7..2ba633dece9 100644
--- a/server/common/CMakeLists.txt
+++ b/server/common/CMakeLists.txt
@@ -63,7 +63,11 @@ endif()
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${FREERDP_CHANNELS_SERVER_LIBS})
target_link_libraries(${MODULE_NAME} ${PUBLIC_KEYWORD} winpr freerdp)
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT FreeRDP-ServerTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT libraries EXPORT FreeRDP-ServerTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
diff --git a/server/shadow/CMakeLists.txt b/server/shadow/CMakeLists.txt
index 3e0df0b1341..cee1423330a 100644
--- a/server/shadow/CMakeLists.txt
+++ b/server/shadow/CMakeLists.txt
@@ -86,7 +86,10 @@ if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION})
endif()
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT server EXPORT FreeRDP-ShadowTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT server EXPORT FreeRDP-ShadowTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if (WITH_DEBUG_SYMBOLS AND MSVC)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
@@ -291,7 +294,10 @@ if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION})
endif()
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT server EXPORT FreeRDP-ShadowTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT server EXPORT FreeRDP-ShadowTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if (WITH_DEBUG_SYMBOLS AND MSVC)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
diff --git a/winpr/libwinpr/CMakeLists.txt b/winpr/libwinpr/CMakeLists.txt
index d9673f2d4a2..7ccc09e6e7b 100644
--- a/winpr/libwinpr/CMakeLists.txt
+++ b/winpr/libwinpr/CMakeLists.txt
@@ -142,7 +142,11 @@ endif()
add_definitions(${WINPR_DEFINITIONS})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${WINPR_LIBS_PRIVATE} ${PUBLIC_KEYWORD} ${WINPR_LIBS_PUBLIC})
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT WinPRTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT libraries EXPORT WinPRTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
diff --git a/winpr/tools/CMakeLists.txt b/winpr/tools/CMakeLists.txt
index 0ddf9fb522d..cf96686ac5e 100644
--- a/winpr/tools/CMakeLists.txt
+++ b/winpr/tools/CMakeLists.txt
@@ -112,7 +112,11 @@ endif()
add_definitions(${WINPR_DEFINITIONS})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${WINPR_TOOLS_LIBS})
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT WinPRTargets)
+install(TARGETS ${MODULE_NAME} COMPONENT libraries EXPORT WinPRTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
From f8cd22cc915d688f1ee3b4ab0bbd4f6c114baa75 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Mon, 24 May 2021 10:53:49 +0530
Subject: [PATCH 3/3] Check MINGW32 for duplicate type declaration.
---
include/freerdp/channels/rdpdr.h | 2 ++
include/freerdp/codec/audio.h | 2 ++
include/freerdp/rail.h | 2 +-
include/freerdp/server/rdpdr.h | 2 ++
server/Windows/wf_wasapi.c | 4 +++-
winpr/include/winpr/intrin.h | 2 +-
winpr/include/winpr/nt.h | 6 +++++-
7 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/include/freerdp/channels/rdpdr.h b/include/freerdp/channels/rdpdr.h
index b61a4c7e189..07af2600f22 100644
--- a/include/freerdp/channels/rdpdr.h
+++ b/include/freerdp/channels/rdpdr.h
@@ -298,6 +298,7 @@ enum FILE_FS_DEVICE_FLAG
FILE_DEVICE_SECURE_OPEN = 0x00000100
};
+#ifndef __MINGW32__
enum FILE_FS_INFORMATION_CLASS
{
FileFsVolumeInformation = 1,
@@ -311,6 +312,7 @@ enum FILE_FS_INFORMATION_CLASS
FileFsDriverPathInformation,
FileFsMaximumInformation
};
+#endif
typedef struct _DEVICE DEVICE;
typedef struct _IRP IRP;
diff --git a/include/freerdp/codec/audio.h b/include/freerdp/codec/audio.h
index e9c0408e8c7..82075826891 100644
--- a/include/freerdp/codec/audio.h
+++ b/include/freerdp/codec/audio.h
@@ -69,6 +69,7 @@ typedef struct AUDIO_FORMAT AUDIO_FORMAT;
* http://tools.ietf.org/html/rfc2361
*/
+#ifndef __MINGW32__
#define WAVE_FORMAT_UNKNOWN 0x0000
#ifndef WAVE_FORMAT_PCM
@@ -183,6 +184,7 @@ typedef struct AUDIO_FORMAT AUDIO_FORMAT;
#define WAVE_FORMAT_NORRIS 0x1400
#define WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS 0x1500
#define WAVE_FORMAT_DVM 0x2000
+#endif /* !__MINGW32__ */
#define WAVE_FORMAT_AAC_MS 0xA106
/**
diff --git a/include/freerdp/rail.h b/include/freerdp/rail.h
index 961ea8f8f5b..8f531fbb771 100644
--- a/include/freerdp/rail.h
+++ b/include/freerdp/rail.h
@@ -246,7 +246,7 @@ enum SPI_MASK
#define IME_STATE_OPEN 0x00000001
/* ImeConvMode */
-#ifndef _IME_CMODES_
+#if !defined(_IME_CMODES_) && !defined(__MINGW32__)
#define IME_CMODE_NATIVE 0x00000001
#define IME_CMODE_KATAKANA 0x00000002
#define IME_CMODE_FULLSHAPE 0x00000008
diff --git a/include/freerdp/server/rdpdr.h b/include/freerdp/server/rdpdr.h
index 63ddca564d8..72ed0ab2fc1 100644
--- a/include/freerdp/server/rdpdr.h
+++ b/include/freerdp/server/rdpdr.h
@@ -35,6 +35,7 @@
typedef struct _rdpdr_server_context RdpdrServerContext;
typedef struct _rdpdr_server_private RdpdrServerPrivate;
+#ifndef __MINGW32__
struct _FILE_DIRECTORY_INFORMATION
{
UINT32 NextEntryOffset;
@@ -49,6 +50,7 @@ struct _FILE_DIRECTORY_INFORMATION
char FileName[512];
};
typedef struct _FILE_DIRECTORY_INFORMATION FILE_DIRECTORY_INFORMATION;
+#endif
typedef UINT (*psRdpdrStart)(RdpdrServerContext* context);
typedef UINT (*psRdpdrStop)(RdpdrServerContext* context);
diff --git a/server/Windows/wf_wasapi.c b/server/Windows/wf_wasapi.c
index 9a9dca1c1be..aa7dcd1af6f 100644
--- a/server/Windows/wf_wasapi.c
+++ b/server/Windows/wf_wasapi.c
@@ -18,6 +18,7 @@
//#define REFTIMES_PER_SEC 50000
//#define REFTIMES_PER_MILLISEC 50
+#ifndef __MINGW32__
DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92,
0x91, 0x69, 0x2E);
DEFINE_GUID(IID_IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35, 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36,
@@ -26,6 +27,7 @@ DEFINE_GUID(IID_IAudioClient, 0x1cb9ad4c, 0xdbfa, 0x4c32, 0xb1, 0x78, 0xc2, 0xf5
0xb2);
DEFINE_GUID(IID_IAudioCaptureClient, 0xc8adbd64, 0xe71e, 0x48a0, 0xa4, 0xde, 0x18, 0x5c, 0x39, 0x5c,
0xd3, 0x17);
+#endif
LPWSTR devStr = NULL;
wfPeerContext* latestPeer = NULL;
@@ -162,7 +164,7 @@ int wf_wasapi_get_device_string(LPWSTR pattern, LPWSTR* deviceStr)
return 0;
}
-static DWORD WINAPI wf_rdpsnd_wasapi_thread(LPVOID lpParam)
+DWORD WINAPI wf_rdpsnd_wasapi_thread(LPVOID lpParam)
{
IMMDeviceEnumerator* pEnumerator = NULL;
IMMDevice* pDevice = NULL;
diff --git a/winpr/include/winpr/intrin.h b/winpr/include/winpr/intrin.h
index 53f6b346ab1..b6c3a48ce08 100644
--- a/winpr/include/winpr/intrin.h
+++ b/winpr/include/winpr/intrin.h
@@ -22,7 +22,7 @@
#ifndef WINPR_INTRIN_H
#define WINPR_INTRIN_H
-#ifndef _WIN32
+#if !defined(_WIN32) || defined(__MINGW32__)
/**
* __lzcnt16, __lzcnt, __lzcnt64:
diff --git a/winpr/include/winpr/nt.h b/winpr/include/winpr/nt.h
index 0cbcde0beae..c58158550cd 100644
--- a/winpr/include/winpr/nt.h
+++ b/winpr/include/winpr/nt.h
@@ -1267,7 +1267,7 @@ static INLINE NTSTATUS NTSTATUS_FROM_WIN32(long x)
}
#endif
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(__MINGW32__)
/**
* winternl.h contains an incomplete definition of enum FILE_INFORMATION_CLASS
@@ -1288,8 +1288,11 @@ static INLINE NTSTATUS NTSTATUS_FROM_WIN32(long x)
#undef _FILE_INFORMATION_CLASS
#undef FileDirectoryInformation
+#elif defined(_WIN32)
+#include <winternl.h>
#endif
+#ifndef __MINGW32__
typedef enum _FILE_INFORMATION_CLASS
{
FileDirectoryInformation = 1,
@@ -1333,6 +1336,7 @@ typedef enum _FILE_INFORMATION_CLASS
FileValidDataLengthInformation,
FileShortNameInformation
} FILE_INFORMATION_CLASS;
+#endif /* !__MINGW32__ */
#if !defined(_WIN32) || defined(_UWP)

View File

@@ -0,0 +1,25 @@
--- a/winpr/include/winpr/spec.h
+++ b/winpr/include/winpr/spec.h
@@ -956,22 +956,4 @@
#endif
-#if defined(_WIN32) || defined(__CYGWIN__)
-#ifdef __GNUC__
-#define DECLSPEC_EXPORT __attribute__((dllexport))
-#define DECLSPEC_IMPORT __attribute__((dllimport))
-#else
-#define DECLSPEC_EXPORT __declspec(dllexport)
-#define DECLSPEC_IMPORT __declspec(dllimport)
-#endif
-#else
-#if defined(__GNUC__) && __GNUC__ >= 4
-#define DECLSPEC_EXPORT __attribute__((visibility("default")))
-#define DECLSPEC_IMPORT
-#else
-#define DECLSPEC_EXPORT
-#define DECLSPEC_IMPORT
-#endif
-#endif
-
#endif /* WINPR_SPEC_H */

View File

@@ -0,0 +1,129 @@
--- a/winpr/libwinpr/sspi/NTLM/ntlm.h
+++ b/winpr/libwinpr/sspi/NTLM/ntlm.h
@@ -77,7 +77,8 @@
};
typedef enum _NTLM_STATE NTLM_STATE;
-enum _NTLM_AV_ID
+#ifndef __MINGW32__
+enum _MSV1_0_AVID
{
MsvAvEOL,
MsvAvNbComputerName,
@@ -87,11 +88,12 @@
MsvAvDnsTreeName,
MsvAvFlags,
MsvAvTimestamp,
- MsvAvSingleHost,
+ MsvAvRestrictions,
MsvAvTargetName,
- MsvChannelBindings
+ MsvAvChannelBindings
};
-typedef enum _NTLM_AV_ID NTLM_AV_ID;
+typedef enum _MSV1_0_AVID MSV1_0_AVID;
+#endif
struct _NTLM_AV_PAIR
{
--- a/winpr/libwinpr/sspi/NTLM/ntlm_av_pairs.c
+++ b/winpr/libwinpr/sspi/NTLM/ntlm_av_pairs.c
@@ -71,12 +71,12 @@
return "MsvAvFlags";
case MsvAvTimestamp:
return "MsvAvTimestamp";
- case MsvAvSingleHost:
- return "MsvAvSingleHost";
+ case MsvAvRestrictions:
+ return "MsvAvRestrictions";
case MsvAvTargetName:
return "MsvAvTargetName";
- case MsvChannelBindings:
- return "MsvChannelBindings";
+ case MsvAvChannelBindings:
+ return "MsvAvChannelBindings";
default:
return "UNKNOWN";
}
@@ -216,7 +216,7 @@
return (NTLM_AV_PAIR*)((PBYTE)pAvPair + offset);
}
-NTLM_AV_PAIR* ntlm_av_pair_get(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList, NTLM_AV_ID AvId,
+NTLM_AV_PAIR* ntlm_av_pair_get(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList, MSV1_0_AVID AvId,
size_t* pcbAvPairListRemaining)
{
UINT16 id;
@@ -247,7 +247,7 @@
return pAvPair;
}
-static BOOL ntlm_av_pair_add(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList, NTLM_AV_ID AvId,
+static BOOL ntlm_av_pair_add(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList, MSV1_0_AVID AvId,
PBYTE Value, UINT16 AvLen)
{
size_t cbAvPair;
@@ -619,7 +619,7 @@
if (context->SendSingleHostData)
{
- AvPairsCount++; /* MsvAvSingleHost */
+ AvPairsCount++; /* MsvAvRestrictions */
ntlm_compute_single_host_data(context);
AvPairsValueLength += context->SingleHostData.Size;
}
@@ -635,7 +635,7 @@
* SEC_CHANNEL_BINDINGS structure
* http://msdn.microsoft.com/en-us/library/windows/desktop/dd919963/
*/
- AvPairsCount++; /* MsvChannelBindings */
+ AvPairsCount++; /* MsvAvChannelBindings */
AvPairsValueLength += 16;
ntlm_compute_channel_bindings(context);
@@ -714,14 +714,14 @@
if (context->SendSingleHostData)
{
- if (!ntlm_av_pair_add(AuthenticateTargetInfo, cbAuthenticateTargetInfo, MsvAvSingleHost,
+ if (!ntlm_av_pair_add(AuthenticateTargetInfo, cbAuthenticateTargetInfo, MsvAvRestrictions,
(PBYTE)&context->SingleHostData, context->SingleHostData.Size))
goto fail;
}
if (!context->SuppressExtendedProtection)
{
- if (!ntlm_av_pair_add(AuthenticateTargetInfo, cbAuthenticateTargetInfo, MsvChannelBindings,
+ if (!ntlm_av_pair_add(AuthenticateTargetInfo, cbAuthenticateTargetInfo, MsvAvChannelBindings,
context->ChannelBindingsHash, 16))
goto fail;
--- a/winpr/libwinpr/sspi/NTLM/ntlm_av_pairs.h
+++ b/winpr/libwinpr/sspi/NTLM/ntlm_av_pairs.h
@@ -27,7 +27,7 @@
ULONG ntlm_av_pair_list_length(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList);
void ntlm_print_av_pair_list(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList);
PBYTE ntlm_av_pair_get_value_pointer(NTLM_AV_PAIR* pAvPair);
-NTLM_AV_PAIR* ntlm_av_pair_get(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList, NTLM_AV_ID AvId,
+NTLM_AV_PAIR* ntlm_av_pair_get(NTLM_AV_PAIR* pAvPairList, size_t cbAvPairList, MSV1_0_AVID AvId,
size_t* pcbAvPairListRemaining);
int ntlm_construct_challenge_target_info(NTLM_CONTEXT* context);
--- a/winpr/libwinpr/wtsapi/wtsapi.c
+++ b/winpr/libwinpr/wtsapi/wtsapi.c
@@ -52,9 +52,15 @@
static HMODULE g_WtsApi32Module = NULL;
static WtsApiFunctionTable WtsApi32_WtsApiFunctionTable = { 0 };
+#ifdef __MINGW32__
+#define WTSAPI32_LOAD_PROC(_name, _type) \
+ WtsApi32_WtsApiFunctionTable.p##_name = (_type)GetProcAddress(g_WtsApi32Module, "WT" \
+ "S" #_name);
+#else
#define WTSAPI32_LOAD_PROC(_name, _type) \
WtsApi32_WtsApiFunctionTable.p##_name = (##_type)GetProcAddress(g_WtsApi32Module, "WT" \
"S" #_name);
+#endif
static BOOL WtsApi32_InitializeWtsApi(void)
{

View File

@@ -0,0 +1,56 @@
--- a/channels/urbdrc/client/data_transfer.c
+++ b/channels/urbdrc/client/data_transfer.c
@@ -1320,7 +1320,7 @@
{
size_t out_size;
UINT32 InterfaceId, OutputBufferSize, usbd_status;
- UINT16 interface;
+ UINT16 iface;
wStream* out;
URBDRC_PLUGIN* urbdrc;
const BOOL noAck = (RequestField & 0x80000000U) != 0;
@@ -1345,7 +1345,7 @@
}
InterfaceId = ((STREAM_ID_PROXY << 30) | pdev->get_ReqCompletion(pdev));
- Stream_Read_UINT16(s, interface);
+ Stream_Read_UINT16(s, iface);
Stream_Seek(s, 2);
Stream_Read_UINT32(s, OutputBufferSize);
if (OutputBufferSize > UINT32_MAX - 36)
@@ -1360,7 +1360,7 @@
if (!pdev->control_transfer(
pdev, RequestId, 0, 0, 0x80 | 0x01, 0x0A, /* REQUEST_GET_INTERFACE */
- 0, interface, &usbd_status, &OutputBufferSize, Stream_Pointer(out), 1000))
+ 0, iface, &usbd_status, &OutputBufferSize, Stream_Pointer(out), 1000))
{
WLog_Print(urbdrc->log, WLOG_DEBUG, "control_transfer failed");
Stream_Free(out, TRUE);
--- a/channels/urbdrc/common/urbdrc_helpers.c
+++ b/channels/urbdrc/common/urbdrc_helpers.c
@@ -199,10 +199,10 @@
return "QUERY_DEVICE_TEXT_RSP [stub |client]";
}
-const char* call_to_string(BOOL client, UINT32 interface, UINT32 functionId)
+const char* call_to_string(BOOL client, UINT32 iface, UINT32 functionId)
{
- const UINT32 mask = (interface & STREAM_ID_MASK) >> 30;
- const UINT32 interfaceId = interface & INTERFACE_ID_MASK;
+ const UINT32 mask = (iface & STREAM_ID_MASK) >> 30;
+ const UINT32 interfaceId = iface & INTERFACE_ID_MASK;
switch (mask)
{
--- a/channels/urbdrc/common/urbdrc_helpers.h
+++ b/channels/urbdrc/common/urbdrc_helpers.h
@@ -34,7 +34,7 @@
const char* urb_function_string(UINT16 urb);
const char* mask_to_string(UINT32 mask);
const char* interface_to_string(UINT32 id);
- const char* call_to_string(BOOL client, UINT32 interface, UINT32 functionId);
+ const char* call_to_string(BOOL client, UINT32 iface, UINT32 functionId);
void urbdrc_dump_message(wLog* log, BOOL client, BOOL write, wStream* s);

View File

@@ -0,0 +1,11 @@
--- a/cmake/FindDocBookXSL.cmake
+++ b/cmake/FindDocBookXSL.cmake
@@ -30,7 +30,7 @@
set (STYLESHEET_PATH_LIST)
foreach (STYLESHEET_PREFIX_ITER ${CMAKE_SYSTEM_PREFIX_PATH})
file(GLOB STYLESHEET_SUFFIX_ITER RELATIVE ${STYLESHEET_PREFIX_ITER}
- ${STYLESHEET_PREFIX_ITER}/share/xml/docbook/xsl-stylesheets-*
+ ${STYLESHEET_PREFIX_ITER}/share/xml/docbook/xsl-stylesheets-*-nons
)
if (STYLESHEET_SUFFIX_ITER)
list (APPEND STYLESHEET_PATH_LIST ${STYLESHEET_SUFFIX_ITER})

View File

@@ -0,0 +1,21 @@
--- a/channels/rdpdr/server/rdpdr_main.c
+++ b/channels/rdpdr/server/rdpdr_main.c
@@ -1331,12 +1331,12 @@
Stream_Read_UINT32(s, fdi->NextEntryOffset); /* NextEntryOffset (4 bytes) */
Stream_Read_UINT32(s, fdi->FileIndex); /* FileIndex (4 bytes) */
- Stream_Read_UINT64(s, fdi->CreationTime); /* CreationTime (8 bytes) */
- Stream_Read_UINT64(s, fdi->LastAccessTime); /* LastAccessTime (8 bytes) */
- Stream_Read_UINT64(s, fdi->LastWriteTime); /* LastWriteTime (8 bytes) */
- Stream_Read_UINT64(s, fdi->ChangeTime); /* ChangeTime (8 bytes) */
- Stream_Read_UINT64(s, fdi->EndOfFile); /* EndOfFile (8 bytes) */
- Stream_Read_UINT64(s, fdi->AllocationSize); /* AllocationSize (8 bytes) */
+ Stream_Read_UINT64(s, fdi->CreationTime.QuadPart); /* CreationTime (8 bytes) */
+ Stream_Read_UINT64(s, fdi->LastAccessTime.QuadPart); /* LastAccessTime (8 bytes) */
+ Stream_Read_UINT64(s, fdi->LastWriteTime.QuadPart); /* LastWriteTime (8 bytes) */
+ Stream_Read_UINT64(s, fdi->ChangeTime.QuadPart); /* ChangeTime (8 bytes) */
+ Stream_Read_UINT64(s, fdi->EndOfFile.QuadPart); /* EndOfFile (8 bytes) */
+ Stream_Read_UINT64(s, fdi->AllocationSize.QuadPart); /* AllocationSize (8 bytes) */
Stream_Read_UINT32(s, fdi->FileAttributes); /* FileAttributes (4 bytes) */
Stream_Read_UINT32(s, fileNameLength); /* FileNameLength (4 bytes) */

101
mingw-w64-freerdp/PKGBUILD Normal file
View File

@@ -0,0 +1,101 @@
# Maintainer: Biswapriyo Nath <nathbappai@gmail.com>
_realname=freerdp
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2.3.2
pkgrel=1
pkgdesc="Free implementation of the Remote Desktop Protocol (RDP) (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
url="https://www.freerdp.com/"
license=('Apache')
depends=("${MINGW_PACKAGE_PREFIX}-ffmpeg"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
"${MINGW_PACKAGE_PREFIX}-libusb"
"${MINGW_PACKAGE_PREFIX}-openssl")
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-iconv")
options=('strip' '!debug' 'staticlibs')
source=("${_realname}-${pkgver}.tar.gz::https://github.com/${_realname}/${_realname}/archive/${pkgver}.tar.gz"
"0001-fix-warnings-mingw.patch"
"0002-fix-build-errors-mingw.patch"
"0003-remove-declspec-import-export.patch"
"0004-remove-conflict-ntml-type.patch"
"0005-rename-interface-variable.patch"
"0006-fix-manpage_formatting.patch"
"0007-read-QuadPart-from-LARGE_INTEGER.patch")
sha256sums=('a1f52f0d9569b418a555ffe4d15a3782712198be47308e9514d20ca5af41a1b1'
'9e71e16b23cb7e1285bc395370b78cc9ca72f897bb8650820d5b4d5e5fcb5176'
'06d869d249484b57f8da868c8cd5498d96bc4f3bcf669139e2bc7da8bf48a9e6'
'7b5b85a83af0d2243d334cc4b4cd80e95077ca00c161792cf27cee62c42eae0f'
'923fd3cd86d6d5815b72f15b7fe7c226349b38ff09b7475b1143cb5d7c015738'
'5b3fe9a7d4d5db2096b0786c88da30ff8c2819b1703aa995badd8f90550d56e1'
'f091fcdf13a4693835ca1aa0a3d5ef2f15b97c77f91af5a937e3acfbded14678'
'9c728341d0e7cd3896cee34b4dce78c18d5235a2cc336e2eae63e5fda354ac08')
prepare() {
mv -v "FreeRDP-${pkgver}" "${_realname}-${pkgver}"
cd "${_realname}-${pkgver}"
# https://github.com/FreeRDP/FreeRDP/pull/6983
patch -Np1 -i "${srcdir}/0001-fix-warnings-mingw.patch"
# https://github.com/FreeRDP/FreeRDP/pull/7034
patch -Np1 -i "${srcdir}/0002-fix-build-errors-mingw.patch"
# Change to UTF-8 because patch can not. upstream #7034
iconv -f UCS-2LE -t UTF-8 client/Windows/wfreerdp.rc > client/Windows/wfreerdp.rc.mod
sed -i '1s/^\xEF\xBB\xBF//' client/Windows/wfreerdp.rc.mod
mv client/Windows/wfreerdp.rc.mod client/Windows/wfreerdp.rc
# Duplicate macros
patch -Np1 -i "${srcdir}/0003-remove-declspec-import-export.patch"
# NTLM_AV_ID conflicts with MSV1_0_AVID
patch -Np1 -i "${srcdir}/0004-remove-conflict-ntml-type.patch"
# The variable name 'interface' assumed as keyword though it's C.
patch -Np1 -i "${srcdir}/0005-rename-interface-variable.patch"
# fix man page formatting:
# https://bugs.archlinux.org/task/64814
patch -Np1 -i "${srcdir}/0006-fix-manpage_formatting.patch"
patch -Np1 -i "${srcdir}/0007-read-QuadPart-from-LARGE_INTEGER.patch"
}
build() {
[[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}"
mkdir -p "${srcdir}/build-${MINGW_CHOST}" && cd "${srcdir}/build-${MINGW_CHOST}"
CFLAGS+=" -Wno-format" \
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake.exe \
-Wno-dev \
-G "Ninja" \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DCMAKE_INSTALL_LIBDIR='lib' \
-DCMAKE_BUILD_TYPE='None' \
-DPROXY_PLUGINDIR='${MINGW_PREFIX}/lib/freerdp2/server/proxy/plugins' \
-DWITH_CAIRO=ON \
-DWITH_ZLIB=ON \
-DWITH_DSP_FFMPEG=ON \
-DWITH_FFMPEG=ON \
-DWITH_JPEG=ON \
-DWITH_SERVER=ON \
-DWITH_SWSCALE=ON \
-DWITH_CHANNELS=ON \
-DWITH_CLIENT_CHANNELS=ON \
-DWITH_SERVER_CHANNELS=ON \
-DCHANNEL_URBDRC_CLIENT=ON \
"../${_realname}-${pkgver}"
${MINGW_PREFIX}/bin/cmake.exe --build ./
}
package() {
cd "${srcdir}/build-${MINGW_CHOST}"
DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --build ./ --target install
}