if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch64)")
    add_library(arch arm.cpp)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR
       CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
    add_library(arch ppc64.cpp)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "s390" OR
       CMAKE_SYSTEM_PROCESSOR STREQUAL "s390x")
    add_library(arch s390.cpp)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
    add_library(arch x86_64.cpp)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "mips64")
    add_library(arch mips64.cpp)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv64")
    add_library(arch riscv64.cpp)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "loongarch64")
    add_library(arch loongarch64.cpp)
else()
  message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}")
endif()

target_include_directories(arch PUBLIC ${CMAKE_SOURCE_DIR}/src)
