blob: e5a20c59b39726b296d4ee4f98ecb5329305107d [file] [log] [blame]
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)