set(GF_C_FLAGS ${C_FLAGS} PARENT_SCOPE)
set(GF_CXX_FLAGS ${CXX_FLAGS} PARENT_SCOPE)
endfunction()
+
+function(ggml_get_system_arch)
+ if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR
+ CMAKE_GENERATOR_PLATFORM_LWR STREQUAL "arm64" OR
+ (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
+ CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm.*|ARM64)$"))
+ set(GGML_SYSTEM_ARCH "ARM" PARENT_SCOPE)
+ elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR
+ CMAKE_GENERATOR_PLATFORM_LWR MATCHES "^(x86_64|i686|amd64|x64|win32)$" OR
+ (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
+ CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64|amd64)$"))
+ set(GGML_SYSTEM_ARCH "x86" PARENT_SCOPE)
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le " OR
+ "${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "powerpc ")
+ set(GGML_SYSTEM_ARCH "PowerPC" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64")
+ set(GGML_SYSTEM_ARCH "loongarch64" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "riscv64")
+ set(GGML_SYSTEM_ARCH "riscv64" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "s390x")
+ set(GGML_SYSTEM_ARCH "s390x" PARENT_SCOPE)
+ else()
+ set(GGML_SYSTEM_ARCH "UNKNOWN" PARENT_SCOPE)
+ endif()
+endfunction()
target_link_libraries(${GGML_CPU_NAME} PUBLIC memkind)
endif()
- if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR
- CMAKE_GENERATOR_PLATFORM_LWR STREQUAL "arm64" OR
- (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
- CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm.*|ARM64)$"))
-
+ if (GGML_SYSTEM_ARCH STREQUAL "ARM")
message(STATUS "ARM detected")
-
if (MSVC AND NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
message(FATAL_ERROR "MSVC is not supported for ARM, use clang")
else()
endforeach()
endif()
endif()
- elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM_LWR MATCHES "^(x86_64|i686|amd64|x64|win32)$" OR
- (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
- CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64|amd64)$"))
-
+ elseif (GGML_SYSTEM_ARCH STREQUAL "x86")
message(STATUS "x86 detected")
-
if (MSVC)
# instruction set detection for MSVC only
if (GGML_NATIVE)
set_target_properties(${GGML_CPU_FEATS_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(${GGML_CPU_NAME} PRIVATE ${GGML_CPU_FEATS_NAME})
endif()
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le " OR "${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "powerpc ")
+ elseif (GGML_SYSTEM_ARCH STREQUAL "PowerPC")
message(STATUS "PowerPC detected")
if (GGML_NATIVE)
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64")
list(APPEND ARCH_FLAGS -mcpu=${GGML_CPU_POWERPC_CPUTYPE})
endif()
endif()
- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64")
+ elseif (GGML_SYSTEM_ARCH STREQUAL "loongarch64")
message(STATUS "loongarch64 detected")
-
list(APPEND ARCH_FLAGS -march=loongarch64)
if (GGML_LASX)
list(APPEND ARCH_FLAGS -mlasx)
if (GGML_LSX)
list(APPEND ARCH_FLAGS -mlsx)
endif()
- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "riscv64")
- message(STATUS "RISC-V detected")
+ elseif (GGML_SYSTEM_ARCH STREQUAL "riscv64")
+ message(STATUS "riscv64 detected")
if (GGML_RVV)
if (GGML_XTHEADVECTOR)
list(APPEND ARCH_FLAGS -march=rv64gc_xtheadvector -mabi=lp64d)
list(APPEND ARCH_FLAGS -march=rv64gcv -mabi=lp64d)
endif()
endif()
- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "s390x")
+ elseif (GGML_SYSTEM_ARCH STREQUAL "s390x")
message(STATUS "s390x detected")
file(READ "/proc/cpuinfo" CPUINFO_CONTENTS)
string(REGEX REPLACE "machine[ \t\r\n]*=[ \t\r\n]*([0-9]+)" "\\1" S390X_M ${CPUINFO_CONTENTS})