From 41727a0aa43f506245f2424634279bc2b786e593 Mon Sep 17 00:00:00 2001 From: Mihail Slobodyanuk Date: Wed, 29 Dec 2021 13:35:06 +0200 Subject: [PATCH] Mingw-w64 compilation support: - Changed case of Windows headers to lower case - Added undefine WinAPI defines for "interface", "GetObject", "ERROR" - removed -fPIC compiler option for Windows - Replaced _WIN32 to _MSC_VER or viceversa when needed --- aws-cpp-sdk-core/CMakeLists.txt | 4 ++-- aws-cpp-sdk-core/include/aws/core/utils/Array.h | 12 ++++++------ .../include/aws/core/utils/json/JsonSerializer.h | 4 ++++ .../source/http/windows/WinConnectionPoolMgr.cpp | 2 +- .../source/http/windows/WinHttpConnectionPoolMgr.cpp | 2 +- .../source/http/windows/WinHttpSyncHttpClient.cpp | 2 +- .../source/http/windows/WinINetConnectionPoolMgr.cpp | 2 +- .../source/http/windows/WinINetSyncHttpClient.cpp | 2 +- .../source/http/windows/WinSyncHttpClient.cpp | 2 +- .../source/internal/AWSHttpResourceClient.cpp | 5 +++++ .../source/monitoring/MonitoringManager.cpp | 4 ++++ aws-cpp-sdk-core/source/net/windows/Net.cpp | 2 +- aws-cpp-sdk-core/source/net/windows/SimpleUDP.cpp | 6 +++--- .../source/platform/windows/FileSystem.cpp | 4 +++- .../source/platform/windows/OSVersionInfo.cpp | 2 ++ aws-cpp-sdk-core/source/utils/Document.cpp | 4 ++++ aws-cpp-sdk-core/source/utils/StringUtils.cpp | 2 +- .../source/utils/crypto/factory/Factories.cpp | 4 ++-- .../source/utils/json/JsonSerializer.cpp | 4 ++++ .../text-to-speech/windows/WaveOutPCMOutputDriver.h | 2 +- cmake/compiler_settings.cmake | 3 ++- 21 files changed, 50 insertions(+), 24 deletions(-) diff --git a/aws-cpp-sdk-core/CMakeLists.txt b/aws-cpp-sdk-core/CMakeLists.txt index 441640941c4..9b85c05e7f3 100644 --- a/aws-cpp-sdk-core/CMakeLists.txt +++ b/aws-cpp-sdk-core/CMakeLists.txt @@ -147,7 +147,7 @@ elseif(ENABLE_WINDOWS_CLIENT) # https://docs.microsoft.com/en-us/windows/desktop/WinHttp/option-flags#WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL set(CMAKE_REQUIRED_LIBRARIES "WinHttp.lib") check_cxx_source_runs(" - #include + #include #include int main() { @@ -167,7 +167,7 @@ elseif(ENABLE_WINDOWS_CLIENT) set(CMAKE_REQUIRED_LIBRARIES "Wininet.lib") check_cxx_source_runs(" - #include + #include #include int main() { auto handle = InternetOpenA(\"aws-cpp-sdk\"/*lpszAgent*/, diff --git a/aws-cpp-sdk-core/include/aws/core/utils/Array.h b/aws-cpp-sdk-core/include/aws/core/utils/Array.h index 2b5bbc566da..34e164b234b 100644 --- a/aws-cpp-sdk-core/include/aws/core/utils/Array.h +++ b/aws-cpp-sdk-core/include/aws/core/utils/Array.h @@ -14,11 +14,11 @@ #include #include -#ifdef _WIN32 +#ifdef _MSC_VER #include -#endif // _WIN32 +#endif // _MSC_VER namespace Aws { @@ -54,7 +54,7 @@ namespace Aws { m_data.reset(Aws::NewArray(m_size, ARRAY_ALLOCATION_TAG)); -#ifdef _WIN32 +#ifdef _MSC_VER std::copy(arrayToCopy, arrayToCopy + arraySize, stdext::checked_array_iterator< T * >(m_data.get(), m_size)); #else std::copy(arrayToCopy, arrayToCopy + arraySize, m_data.get()); @@ -82,7 +82,7 @@ namespace Aws if(arr->m_size > 0 && arr->m_data) { size_t arraySize = arr->m_size; -#ifdef _WIN32 +#ifdef _MSC_VER std::copy(arr->m_data.get(), arr->m_data.get() + arraySize, stdext::checked_array_iterator< T * >(m_data.get() + location, m_size)); #else std::copy(arr->m_data.get(), arr->m_data.get() + arraySize, m_data.get() + location); @@ -101,7 +101,7 @@ namespace Aws { m_data.reset(Aws::NewArray(m_size, ARRAY_ALLOCATION_TAG)); -#ifdef _WIN32 +#ifdef _MSC_VER std::copy(other.m_data.get(), other.m_data.get() + other.m_size, stdext::checked_array_iterator< T * >(m_data.get(), m_size)); #else std::copy(other.m_data.get(), other.m_data.get() + other.m_size, m_data.get()); @@ -134,7 +134,7 @@ namespace Aws { m_data.reset(Aws::NewArray(m_size, ARRAY_ALLOCATION_TAG)); -#ifdef _WIN32 +#ifdef _MSC_VER std::copy(other.m_data.get(), other.m_data.get() + other.m_size, stdext::checked_array_iterator< T * >(m_data.get(), m_size)); #else std::copy(other.m_data.get(), other.m_data.get() + other.m_size, m_data.get()); diff --git a/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h b/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h index 8b2ccc139bb..a6db4e0e705 100644 --- a/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h +++ b/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h @@ -15,6 +15,10 @@ #include +#ifdef GetObject +#undef GetObject +#endif + namespace Aws { namespace Utils diff --git a/aws-cpp-sdk-core/source/http/windows/WinConnectionPoolMgr.cpp b/aws-cpp-sdk-core/source/http/windows/WinConnectionPoolMgr.cpp index 1b11d546c15..b6e82c01f88 100644 --- a/aws-cpp-sdk-core/source/http/windows/WinConnectionPoolMgr.cpp +++ b/aws-cpp-sdk-core/source/http/windows/WinConnectionPoolMgr.cpp @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include using namespace Aws::Utils::Logging; diff --git a/aws-cpp-sdk-core/source/http/windows/WinHttpConnectionPoolMgr.cpp b/aws-cpp-sdk-core/source/http/windows/WinHttpConnectionPoolMgr.cpp index 676752334d5..b4a03f9c05d 100644 --- a/aws-cpp-sdk-core/source/http/windows/WinHttpConnectionPoolMgr.cpp +++ b/aws-cpp-sdk-core/source/http/windows/WinHttpConnectionPoolMgr.cpp @@ -7,7 +7,7 @@ #include -#include +#include #include using namespace Aws::Http; diff --git a/aws-cpp-sdk-core/source/http/windows/WinHttpSyncHttpClient.cpp b/aws-cpp-sdk-core/source/http/windows/WinHttpSyncHttpClient.cpp index d7f4fc7c9f6..11d4b178238 100644 --- a/aws-cpp-sdk-core/source/http/windows/WinHttpSyncHttpClient.cpp +++ b/aws-cpp-sdk-core/source/http/windows/WinHttpSyncHttpClient.cpp @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include #include diff --git a/aws-cpp-sdk-core/source/http/windows/WinINetConnectionPoolMgr.cpp b/aws-cpp-sdk-core/source/http/windows/WinINetConnectionPoolMgr.cpp index 9de3d91f02e..effbc13d421 100644 --- a/aws-cpp-sdk-core/source/http/windows/WinINetConnectionPoolMgr.cpp +++ b/aws-cpp-sdk-core/source/http/windows/WinINetConnectionPoolMgr.cpp @@ -4,7 +4,7 @@ */ #include -#include +#include #include using namespace Aws::Http; diff --git a/aws-cpp-sdk-core/source/http/windows/WinINetSyncHttpClient.cpp b/aws-cpp-sdk-core/source/http/windows/WinINetSyncHttpClient.cpp index 1d6f606305d..ec186b054e0 100644 --- a/aws-cpp-sdk-core/source/http/windows/WinINetSyncHttpClient.cpp +++ b/aws-cpp-sdk-core/source/http/windows/WinINetSyncHttpClient.cpp @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include #include diff --git a/aws-cpp-sdk-core/source/http/windows/WinSyncHttpClient.cpp b/aws-cpp-sdk-core/source/http/windows/WinSyncHttpClient.cpp index 0aa35e9c717..8ddd2eee5e0 100644 --- a/aws-cpp-sdk-core/source/http/windows/WinSyncHttpClient.cpp +++ b/aws-cpp-sdk-core/source/http/windows/WinSyncHttpClient.cpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include diff --git a/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp b/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp index 9531a49add5..87e6c7d94bc 100644 --- a/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp +++ b/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp @@ -37,6 +37,11 @@ static const char EC2_METADATA_CLIENT_LOG_TAG[] = "EC2MetadataClient"; static const char ECS_CREDENTIALS_CLIENT_LOG_TAG[] = "ECSCredentialsClient"; static const char SSO_GET_ROLE_RESOURCE[] = "/federation/credentials"; +//undef winapi +#ifdef GetObject +#undef GetObject +#endif + namespace Aws { namespace Client diff --git a/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp b/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp index 7a8d3adb41c..58a98325170 100644 --- a/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp +++ b/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp @@ -14,6 +14,10 @@ #pragma warning(disable : 4592) #endif +#ifdef interface +#undef interface +#endif + namespace Aws { namespace Monitoring diff --git a/aws-cpp-sdk-core/source/net/windows/Net.cpp b/aws-cpp-sdk-core/source/net/windows/Net.cpp index b1ec65b5df0..2256252b37e 100644 --- a/aws-cpp-sdk-core/source/net/windows/Net.cpp +++ b/aws-cpp-sdk-core/source/net/windows/Net.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0. */ -#include +#include #include #include diff --git a/aws-cpp-sdk-core/source/net/windows/SimpleUDP.cpp b/aws-cpp-sdk-core/source/net/windows/SimpleUDP.cpp index f6e36077ec8..405351b6117 100644 --- a/aws-cpp-sdk-core/source/net/windows/SimpleUDP.cpp +++ b/aws-cpp-sdk-core/source/net/windows/SimpleUDP.cpp @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0. */ -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/aws-cpp-sdk-core/source/platform/windows/FileSystem.cpp b/aws-cpp-sdk-core/source/platform/windows/FileSystem.cpp index 2ea82de6f89..e83ee17ac12 100644 --- a/aws-cpp-sdk-core/source/platform/windows/FileSystem.cpp +++ b/aws-cpp-sdk-core/source/platform/windows/FileSystem.cpp @@ -9,9 +9,11 @@ #include #include #include -#include +#include +#ifdef _MSC_VER #pragma warning( disable : 4996) +#endif using namespace Aws::Utils; namespace Aws diff --git a/aws-cpp-sdk-core/source/platform/windows/OSVersionInfo.cpp b/aws-cpp-sdk-core/source/platform/windows/OSVersionInfo.cpp index 0180f7fbf63..3adbab31314 100644 --- a/aws-cpp-sdk-core/source/platform/windows/OSVersionInfo.cpp +++ b/aws-cpp-sdk-core/source/platform/windows/OSVersionInfo.cpp @@ -9,7 +9,9 @@ #include +#ifdef _MSC_VER #pragma warning(disable: 4996) +#endif #include #include namespace Aws diff --git a/aws-cpp-sdk-core/source/utils/Document.cpp b/aws-cpp-sdk-core/source/utils/Document.cpp index ef8210aeb1e..da21eb40233 100644 --- a/aws-cpp-sdk-core/source/utils/Document.cpp +++ b/aws-cpp-sdk-core/source/utils/Document.cpp @@ -11,6 +11,10 @@ #include #include +#ifdef GetObject +#undef GetObject +#endif + using namespace Aws::Utils; Document::Document() : m_wasParseSuccessful(true) diff --git a/aws-cpp-sdk-core/source/utils/StringUtils.cpp b/aws-cpp-sdk-core/source/utils/StringUtils.cpp index e1deb3f0462..8c1939dfc84 100644 --- a/aws-cpp-sdk-core/source/utils/StringUtils.cpp +++ b/aws-cpp-sdk-core/source/utils/StringUtils.cpp @@ -14,7 +14,7 @@ #include #ifdef _WIN32 -#include +#include #endif using namespace Aws::Utils; diff --git a/aws-cpp-sdk-core/source/utils/crypto/factory/Factories.cpp b/aws-cpp-sdk-core/source/utils/crypto/factory/Factories.cpp index 2c42ff2a292..1c382f0126f 100644 --- a/aws-cpp-sdk-core/source/utils/crypto/factory/Factories.cpp +++ b/aws-cpp-sdk-core/source/utils/crypto/factory/Factories.cpp @@ -868,7 +868,7 @@ std::shared_ptr Aws::Utils::Crypto::CreateSha256HMACIm return GetSha256HMACFactory()->CreateImplementation(); } -#ifdef _WIN32 +#ifdef _MSC_VER #pragma warning( push ) #pragma warning( disable : 4702 ) #endif @@ -961,7 +961,7 @@ std::shared_ptr Aws::Utils::Crypto::CreateAES_KeyWrapImplementa return GetAES_KeyWrapFactory()->CreateImplementation(key); } -#ifdef _WIN32 +#ifdef _MSC_VER #pragma warning(pop) #endif diff --git a/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp b/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp index ebfd5d44568..4e1f43f3b92 100644 --- a/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp +++ b/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp @@ -11,6 +11,10 @@ #include #include +#ifdef GetObject +#undef GetObject +#endif + using namespace Aws::Utils; using namespace Aws::Utils::Json; diff --git a/aws-cpp-sdk-text-to-speech/include/aws/text-to-speech/windows/WaveOutPCMOutputDriver.h b/aws-cpp-sdk-text-to-speech/include/aws/text-to-speech/windows/WaveOutPCMOutputDriver.h index 886f2eded26..4a33cbee16b 100644 --- a/aws-cpp-sdk-text-to-speech/include/aws/text-to-speech/windows/WaveOutPCMOutputDriver.h +++ b/aws-cpp-sdk-text-to-speech/include/aws/text-to-speech/windows/WaveOutPCMOutputDriver.h @@ -10,7 +10,7 @@ #include -#include +#include namespace Aws { diff --git a/cmake/compiler_settings.cmake b/cmake/compiler_settings.cmake index cae5b922484..4a5e4dec801 100644 --- a/cmake/compiler_settings.cmake +++ b/cmake/compiler_settings.cmake @@ -31,11 +31,12 @@ function(set_compiler_warnings target) endif() endfunction() +check_c_compiler_flag(-fPIC HAS_FPIC_FLAG) macro(set_gcc_flags) list(APPEND AWS_COMPILER_FLAGS "-fno-exceptions" "-std=c++${CPP_STANDARD}") - if(NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS AND HAS_FPIC_FLAG) list(APPEND AWS_COMPILER_FLAGS "-fPIC") endif()