aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/compiler/gcc/settings.cmake2
-rw-r--r--cmake/macros/CheckPlatform.cmake23
-rw-r--r--cmake/macros/FindOpenSSL.cmake4
-rw-r--r--dep/SFMT/CMakeLists.txt62
-rw-r--r--dep/argon2/CMakeLists.txt2
-rw-r--r--dep/jemalloc/CMakeLists.txt2
6 files changed, 59 insertions, 36 deletions
diff --git a/cmake/compiler/gcc/settings.cmake b/cmake/compiler/gcc/settings.cmake
index 6393146f329..b756901f097 100644
--- a/cmake/compiler/gcc/settings.cmake
+++ b/cmake/compiler/gcc/settings.cmake
@@ -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
diff --git a/cmake/macros/CheckPlatform.cmake b/cmake/macros/CheckPlatform.cmake
index 0f41a9c127e..c0a5185b805 100644
--- a/cmake/macros/CheckPlatform.cmake
+++ b/cmake/macros/CheckPlatform.cmake
@@ -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)
diff --git a/cmake/macros/FindOpenSSL.cmake b/cmake/macros/FindOpenSSL.cmake
index c9122caf10e..8367167e60d 100644
--- a/cmake/macros/FindOpenSSL.cmake
+++ b/cmake/macros/FindOpenSSL.cmake
@@ -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")
diff --git a/dep/SFMT/CMakeLists.txt b/dep/SFMT/CMakeLists.txt
index bd8e30911c3..117fae8ba4c 100644
--- a/dep/SFMT/CMakeLists.txt
+++ b/dep/SFMT/CMakeLists.txt
@@ -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)
+include(CheckCXXCompilerFlag)
+
+# 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 ()
- message(WARNING "Neon not available - performance will be poor!")
+ set(HAVE_SSE2 1)
endif ()
-elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
- #SSE2 is always available
- set(HAVE_SSE2 1)
-
- if (NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
+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")
diff --git a/dep/argon2/CMakeLists.txt b/dep/argon2/CMakeLists.txt
index 45f58039f7f..ad1682088eb 100644
--- a/dep/argon2/CMakeLists.txt
+++ b/dep/argon2/CMakeLists.txt
@@ -10,7 +10,7 @@
file(GLOB_RECURSE sources *.c)
-if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+if(TRINITY_SYSTEM_PROCESSOR MATCHES "x86|amd64")
list(REMOVE_ITEM sources
${CMAKE_CURRENT_SOURCE_DIR}/argon2/opt.c)
else()
diff --git a/dep/jemalloc/CMakeLists.txt b/dep/jemalloc/CMakeLists.txt
index 653c322f5f7..fb68395a40b 100644
--- a/dep/jemalloc/CMakeLists.txt
+++ b/dep/jemalloc/CMakeLists.txt
@@ -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()