diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 4feb120..4bc62a8 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -49,8 +49,6 @@ set(CXX_SOURCES set(RANDOMX_SOURCES randomx/aes_hash.cpp randomx/argon2_ref.c - randomx/argon2_ssse3.c - randomx/argon2_avx2.c randomx/bytecode_machine.cpp randomx/cpu.cpp randomx/dataset.cpp @@ -58,23 +56,47 @@ set(RANDOMX_SOURCES randomx/virtual_memory.c randomx/vm_interpreted.cpp randomx/allocator.cpp - randomx/assembly_generator_x86.cpp randomx/instruction.cpp randomx/randomx.cpp randomx/superscalar.cpp - randomx/vm_compiled.cpp randomx/vm_interpreted_light.cpp randomx/argon2_core.c randomx/blake2_generator.cpp randomx/instructions_portable.cpp randomx/reciprocal.c randomx/virtual_machine.cpp + randomx/vm_compiled.cpp randomx/vm_compiled_light.cpp randomx/blake2/blake2b.c - randomx/jit_compiler_x86.cpp - randomx/jit_compiler_x86_static.S ) +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)$") + list(APPEND RANDOMX_SOURCES + randomx/argon2_ssse3.c + randomx/argon2_avx2.c + randomx/assembly_generator_x86.cpp + randomx/jit_compiler_x86.cpp + randomx/jit_compiler_x86_static.S + ) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$") + list(APPEND RANDOMX_SOURCES + randomx/jit_compiler_a64.cpp + randomx/jit_compiler_a64_static.S + ) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(riscv64|rv64)$") + list(APPEND RANDOMX_SOURCES + randomx/aes_hash_rv64_vector.cpp + randomx/aes_hash_rv64_zvkned.cpp + randomx/cpu_rv64.S + randomx/jit_compiler_rv64.cpp + randomx/jit_compiler_rv64_static.S + randomx/jit_compiler_rv64_vector.cpp + randomx/jit_compiler_rv64_vector_static.S + ) +else() + message(FATAL_ERROR "Unsupported RandomX architecture: ${CMAKE_SYSTEM_PROCESSOR}") +endif() + add_library(randomx STATIC ${RANDOMX_SOURCES}) target_include_directories(randomx PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/randomx @@ -85,15 +107,18 @@ set_property(TARGET randomx PROPERTY CXX_STANDARD_REQUIRED ON) # Platform-specific flags for RandomX enable_language(ASM) -target_compile_options(randomx PRIVATE -maes) -check_c_compiler_flag(-mssse3 HAVE_SSSE3) -if(HAVE_SSSE3) - set_source_files_properties(randomx/argon2_ssse3.c PROPERTIES COMPILE_FLAGS -mssse3) -endif() -check_c_compiler_flag(-mavx2 HAVE_AVX2) -if(HAVE_AVX2) - set_source_files_properties(randomx/argon2_avx2.c PROPERTIES COMPILE_FLAGS -mavx2) +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)$") + target_compile_options(randomx PRIVATE -maes) + + check_c_compiler_flag(-mssse3 HAVE_SSSE3) + if(HAVE_SSSE3) + set_source_files_properties(randomx/argon2_ssse3.c PROPERTIES COMPILE_FLAGS -mssse3) + endif() + check_c_compiler_flag(-mavx2 HAVE_AVX2) + if(HAVE_AVX2) + set_source_files_properties(randomx/argon2_avx2.c PROPERTIES COMPILE_FLAGS -mavx2) + endif() endif() target_compile_options(randomx PRIVATE