mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Build: Improve ARM target detection in cmake (needed by MSVC)
This commit is contained in:
@@ -18,7 +18,7 @@ if(PLATFORM EQUAL 32)
|
||||
-msse2
|
||||
-mfpmath=sse)
|
||||
endif()
|
||||
if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
if(TRINITY_SYSTEM_PROCESSOR MATCHES "x86|amd64")
|
||||
target_compile_definitions(trinity-compile-option-interface
|
||||
INTERFACE
|
||||
-DHAVE_SSE2
|
||||
|
||||
@@ -7,6 +7,29 @@ else()
|
||||
MESSAGE(STATUS "Detected 32-bit platform")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "amd64")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|ARM)64$")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "arm64")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|ARM)$")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "arm")
|
||||
else()
|
||||
set(TRINITY_SYSTEM_PROCESSOR "x86")
|
||||
endif()
|
||||
|
||||
# detect MSVC special case of using cmake -A switch (which doesn't set any cross compiling variables)
|
||||
if(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "x86")
|
||||
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x64")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "amd64")
|
||||
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "arm")
|
||||
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64")
|
||||
set(TRINITY_SYSTEM_PROCESSOR "arm64")
|
||||
endif()
|
||||
|
||||
message(STATUS "Detected ${TRINITY_SYSTEM_PROCESSOR} processor architecture")
|
||||
|
||||
if(WIN32)
|
||||
include("${CMAKE_SOURCE_DIR}/cmake/platform/win/settings.cmake")
|
||||
elseif(UNIX)
|
||||
|
||||
@@ -238,7 +238,7 @@ elseif (MSVC)
|
||||
set(_OPENSSL_MSI_INSTALL_GUIDS "")
|
||||
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
|
||||
if(TRINITY_SYSTEM_PROCESSOR STREQUAL "arm64")
|
||||
set(_arch "Win64-ARM")
|
||||
set(_OPENSSL_MSI_INSTALL_GUIDS "99C28AFA-6419-40B1-B88D-32B810BB4234")
|
||||
else()
|
||||
@@ -331,7 +331,7 @@ if(WIN32 AND NOT CYGWIN)
|
||||
# Since OpenSSL 1.1, lib names are like libcrypto32MTd.lib and libssl32MTd.lib
|
||||
if( "${CMAKE_SIZEOF_VOID_P}" STREQUAL "8" )
|
||||
set(_OPENSSL_MSVC_ARCH_SUFFIX "64")
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
|
||||
if(TRINITY_SYSTEM_PROCESSOR STREQUAL "arm64")
|
||||
set(_OPENSSL_MSVC_ARCH_DIRECTORY "arm64")
|
||||
else()
|
||||
set(_OPENSSL_MSVC_ARCH_DIRECTORY "x64")
|
||||
|
||||
@@ -39,38 +39,38 @@ target_include_directories(sfmt
|
||||
target_compile_definitions(sfmt PUBLIC -DSFMT_MEXP=19937)
|
||||
|
||||
# enable SIMD instructions if available
|
||||
include(CheckCCompilerFlag)
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64|(powerpc|ppc)64le")
|
||||
check_c_compiler_flag("-maltivec" HAVE_ALTIVEC)
|
||||
if (HAVE_ALTIVEC)
|
||||
target_compile_options(sfmt PRIVATE -mabi=altivec -maltivec)
|
||||
target_compile_definitions(sfmt PUBLIC -DHAVE_ALTIVEC)
|
||||
else ()
|
||||
message(WARNING "Altivec not available - performance will be poor!")
|
||||
endif ()
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM")
|
||||
check_c_compiler_flag(-mfpu=neon HAVE_NEON)
|
||||
if (HAVE_NEON)
|
||||
target_compile_options(sfmt PRIVATE -mfpu=neon -ftree-vectorize)
|
||||
target_compile_definitions(sfmt PUBLIC -DHAVE_NEON)
|
||||
else ()
|
||||
message(WARNING "Neon not available - performance will be poor!")
|
||||
endif ()
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
|
||||
check_c_compiler_flag(-march=armv8-a+simd HAVE_NEON)
|
||||
if (HAVE_NEON)
|
||||
target_compile_options(sfmt PRIVATE -ftree-vectorize)
|
||||
target_compile_definitions(sfmt PUBLIC -DHAVE_NEON)
|
||||
else ()
|
||||
message(WARNING "Neon not available - performance will be poor!")
|
||||
endif ()
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
|
||||
#SSE2 is always available
|
||||
set(HAVE_SSE2 1)
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
|
||||
# MSVC does not have any flags to check
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
if (TRINITY_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||
set(HAVE_NEON 1)
|
||||
else ()
|
||||
set(HAVE_SSE2 1)
|
||||
endif ()
|
||||
else ()
|
||||
if (TRINITY_SYSTEM_PROCESSOR STREQUAL "arm")
|
||||
check_cxx_compiler_flag(-mfpu=neon HAVE_NEON)
|
||||
if (HAVE_NEON)
|
||||
target_compile_options(sfmt PRIVATE -mfpu=neon -ftree-vectorize)
|
||||
endif()
|
||||
elseif (TRINITY_SYSTEM_PROCESSOR STREQUAL "arm64")
|
||||
check_cxx_compiler_flag(-march=armv8-a+simd HAVE_NEON)
|
||||
if (HAVE_NEON)
|
||||
target_compile_options(sfmt PRIVATE -ftree-vectorize)
|
||||
endif ()
|
||||
elseif (TRINITY_SYSTEM_PROCESSOR MATCHES "x86|amd64")
|
||||
#SSE2 is always available
|
||||
set(HAVE_SSE2 1)
|
||||
target_compile_options(sfmt PRIVATE -msse2)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (HAVE_NEON)
|
||||
target_compile_definitions(sfmt PUBLIC -DHAVE_NEON)
|
||||
endif ()
|
||||
|
||||
if (HAVE_SSE2)
|
||||
target_compile_definitions(sfmt PUBLIC -DHAVE_SSE2)
|
||||
endif ()
|
||||
|
||||
@@ -80,6 +80,6 @@ set_target_properties(sfmt PROPERTIES LINKER_LANGUAGE CXX)
|
||||
target_link_libraries(sfmt PRIVATE trinity-dependency-interface)
|
||||
|
||||
set_target_properties(sfmt
|
||||
PROPERTIES
|
||||
FOLDER
|
||||
"dep")
|
||||
PROPERTIES
|
||||
FOLDER
|
||||
"dep")
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
file(GLOB_RECURSE sources *.c)
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
|
||||
if(TRINITY_SYSTEM_PROCESSOR MATCHES "x86|amd64")
|
||||
list(REMOVE_ITEM sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/argon2/ref.c)
|
||||
else()
|
||||
|
||||
@@ -28,7 +28,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT NOJEM)
|
||||
set(JEM_MADFREE_DEF "#undef")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
if(TRINITY_SYSTEM_PROCESSOR MATCHES "arm")
|
||||
set(JEM_CPU_SPINWAIT "")
|
||||
set(JEM_HAVE_CPU_SPINWAIT 0)
|
||||
else()
|
||||
|
||||
@@ -20,10 +20,8 @@ target_compile_definitions(rapidjson
|
||||
-DRAPIDJSON_48BITPOINTER_OPTIMIZATION=0
|
||||
-DRAPIDJSON_ASSERT=WPAssert)
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(AMD64|amd64)|(^i.86$)")
|
||||
if(TRINITY_SYSTEM_PROCESSOR MATCHES "x86|amd64")
|
||||
target_compile_definitions(rapidjson INTERFACE -DRAPIDJSON_SSE2)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||
target_compile_definitions(rapidjson INTERFACE -DRAPIDJSON_NEON)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
|
||||
elseif(TRINITY_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||
target_compile_definitions(rapidjson INTERFACE -DRAPIDJSON_NEON)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user