From 1edb38b54892273f2f932339d49b91f7b60fd3a4 Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 17 Mar 2023 13:32:17 +0100 Subject: [PATCH] Fix MSW lib names for ARM64 with CMake build Any 64 platform had the added _x64 suffix. This will now be _arm64 when building for ARM64. Fixes: #23347 Closes #23355. --- build/cmake/init.cmake | 23 +++++++++++++++++++++-- build/cmake/lib/webview/CMakeLists.txt | 6 +++--- build/cmake/main.cmake | 4 ++-- build/cmake/wxWidgetsConfig.cmake.in | 23 +++++++++++++++++++++-- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 796867d23d..16ffc0f035 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -112,6 +112,25 @@ wx_string_append(wxBUILD_FILE_ID "-${wxMAJOR_VERSION}.${wxMINOR_VERSION}") wx_get_flavour(lib_flavour "-") wx_string_append(wxBUILD_FILE_ID "${lib_flavour}") +set(wxPLATFORM_ARCH) +if(CMAKE_GENERATOR_PLATFORM) + if (CMAKE_GENERATOR_PLATFORM STREQUAL "x64") + set(wxPLATFORM_ARCH "x64") + elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64") + set(wxPLATFORM_ARCH "arm64") + endif() +elseif(CMAKE_VS_PLATFORM_NAME) + if (CMAKE_VS_PLATFORM_NAME STREQUAL "x64") + set(wxPLATFORM_ARCH "x64") + elseif(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64") + set(wxPLATFORM_ARCH "arm64") + endif() +else() + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(wxPLATFORM_ARCH "x64") + endif() +endif() + set(wxARCH_SUFFIX) set(wxCOMPILER_PREFIX) set(wxPLATFORM_LIB_DIR) @@ -128,8 +147,8 @@ if(WIN32) message(FATAL_ERROR "Unknown WIN32 compiler type") endif() - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(wxARCH_SUFFIX "_x64") + if(wxPLATFORM_ARCH) + set(wxARCH_SUFFIX "_${wxPLATFORM_ARCH}") endif() endif() diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index ca0c944255..47ce3b3af4 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -12,10 +12,10 @@ function(wx_webview_copy_webview2_loader target) return() endif() - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set(WEBVIEW2_ARCH x86) + if(wxPLATFORM_ARCH) + set(WEBVIEW2_ARCH ${wxPLATFORM_ARCH}) else() - set(WEBVIEW2_ARCH x64) + set(WEBVIEW2_ARCH x86) endif() add_custom_command(TARGET ${target} POST_BUILD diff --git a/build/cmake/main.cmake b/build/cmake/main.cmake index 7cd37756e3..0458528b81 100644 --- a/build/cmake/main.cmake +++ b/build/cmake/main.cmake @@ -65,8 +65,8 @@ if(MSVC OR MINGW OR CYGWIN) else() set(wxREQUIRED_OS_DESC "Windows Vista / Windows Server 2008") endif() - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - wx_string_append(wxREQUIRED_OS_DESC " (x64 Edition)") + if(wxPLATFORM_ARCH) + wx_string_append(wxREQUIRED_OS_DESC " (${wxPLATFORM_ARCH} Edition)") endif() elseif(APPLE AND NOT IPHONE) if(DEFINED CMAKE_OSX_DEPLOYMENT_TARGET) diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in index 6ef5a6ee78..9983bc90dd 100644 --- a/build/cmake/wxWidgetsConfig.cmake.in +++ b/build/cmake/wxWidgetsConfig.cmake.in @@ -10,8 +10,27 @@ if(WIN32 AND NOT CYGWIN AND NOT MSYS) set(wxCOMPILER_PREFIX "clang") endif() - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(wxARCH_SUFFIX "_x64") + set(wxPLATFORM_ARCH) + if(CMAKE_GENERATOR_PLATFORM) + if (CMAKE_GENERATOR_PLATFORM STREQUAL "x64") + set(wxPLATFORM_ARCH "x64") + elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64") + set(wxPLATFORM_ARCH "arm64") + endif() + elseif(CMAKE_VS_PLATFORM_NAME) + if (CMAKE_VS_PLATFORM_NAME STREQUAL "x64") + set(wxPLATFORM_ARCH "x64") + elseif(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64") + set(wxPLATFORM_ARCH "arm64") + endif() + else() + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(wxPLATFORM_ARCH "x64") + endif() + endif() + + if(wxPLATFORM_ARCH) + set(wxARCH_SUFFIX "_${wxPLATFORM_ARCH}") endif() # use wxWidgets_USE_STATIC to force static libraries, otherwise shared is searched first