Support iOS builds with CMake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ed799cd..45b1b34 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,14 +11,14 @@
OPTION(BUILD_MOCK_TESTS "Build C++ mock tests (need googletest)" ON)
# ---[ Build flags
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
IF(NOT MSVC)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -fPIC")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
ENDIF()
IF(NOT CMAKE_SYSTEM_PROCESSOR)
MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_PROCESSOR not defined")
-ELSEIF(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64|armv5te|armv7-a|armv7l|aarch64)$")
+ELSEIF(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64|armv5te|armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|arm64|aarch64)$")
MESSAGE(FATAL_ERROR "Unrecognized CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}")
ENDIF()
@@ -55,7 +55,7 @@
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
LIST(APPEND CPUINFO_SRCS src/x86/mach/init.c)
ENDIF()
-ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|armv7l|aarch64)$")
+ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|arm64|aarch64)$")
LIST(APPEND CPUINFO_SRCS
src/arm/uarch.c
src/arm/cache.c)
@@ -66,19 +66,21 @@
src/arm/linux/clusters.c
src/arm/linux/chipset.c
src/arm/linux/midr.c)
+ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7l|armv7-a)$")
+ LIST(APPEND CPUINFO_SRCS src/arm/linux/arm32-isa.c)
+ IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi")
+ SET_SOURCE_FILES_PROPERTIES(src/arm/linux/arm32-isa.c PROPERTIES COMPILE_FLAGS -marm)
+ ENDIF()
+ ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+ LIST(APPEND CPUINFO_SRCS src/arm/linux/arm64-isa.c)
+ ENDIF()
+ ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ LIST(APPEND CPUINFO_SRCS src/arm/mach/init.c)
ENDIF()
IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
LIST(APPEND CPUINFO_SRCS
src/arm/Android/properties.c)
ENDIF()
- IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7l|armv7-a)$")
- LIST(APPEND CPUINFO_SRCS src/arm/linux/arm32-isa.c)
- IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi")
- SET_SOURCE_FILES_PROPERTIES(src/arm/linux/arm32-isa.c PROPERTIES COMPILE_FLAGS -marm)
- ENDIF()
- ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
- LIST(APPEND CPUINFO_SRCS src/arm/linux/arm64-isa.c)
- ENDIF()
ENDIF()
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
diff --git a/src/arm/mach/init.c b/src/arm/mach/init.c
index edadb7a..61c028d 100644
--- a/src/arm/mach/init.c
+++ b/src/arm/mach/init.c
@@ -17,6 +17,8 @@
#include <log.h>
+struct cpuinfo_arm_isa cpuinfo_isa = { 0 };
+
static uint32_t get_sys_info(int type_specifier, char* name) {
size_t size = 0;
uint32_t result = 0;
@@ -58,7 +60,12 @@
return cpuinfo_uarch_twister;
case CPUFAMILY_ARM_HURRICANE:
return cpuinfo_uarch_hurricane;
+#ifdef CPUFAMILY_ARM_MONSOON_MISTRAL
case CPUFAMILY_ARM_MONSOON_MISTRAL:
+#else
+ case 0xe81e7ef6:
+ /* Hard-coded value for older SDKs which do not define CPUFAMILY_ARM_MONSOON_MISTRAL */
+#endif
/* 2x Monsoon + 4x Mistral cores */
return core_index < 2 ? cpuinfo_uarch_monsoon : cpuinfo_uarch_mistral;
default: