add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE ../../common ../../include ../src) target_compile_definitions(pm3rrg_rdv4_hardnested_nosimd PRIVATE NOSIMD_BUILD) ## CPU-specific code ## These are mostly for x86-based architectures, which is not useful for many Android devices. ## Mingw platforms: AMD64 set(X86_CPUS x86 x86_64 i686 AMD64) set(ARM64_CPUS arm64 aarch64) set(ARM32_CPUS armel armhf) message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) message(STATUS "Building optimised x86/x86_64 binaries") target_compile_options(pm3rrg_rdv4_hardnested_nosimd BEFORE PRIVATE -mno-mmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) ## x86 / MMX add_library(pm3rrg_rdv4_hardnested_mmx OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_mmx PRIVATE ../../common ../../include ../src) ## x86 / SSE2 add_library(pm3rrg_rdv4_hardnested_sse2 OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_sse2 PRIVATE ../../common ../../include ../src) ## x86 / AVX add_library(pm3rrg_rdv4_hardnested_avx OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_avx PRIVATE ../../common ../../include ../src) ## x86 / AVX2 add_library(pm3rrg_rdv4_hardnested_avx2 OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_avx2 PRIVATE ../../common ../../include ../src) ## x86 / AVX512 add_library(pm3rrg_rdv4_hardnested_avx512 OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_avx512 PRIVATE ../../common ../../include ../src) set(SIMD_TARGETS $ $ $ $ $) elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) message(STATUS "Building optimised arm64 binaries") ## arm64 / NEON add_library(pm3rrg_rdv4_hardnested_neon OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE ../../common ../../include ../src) set(SIMD_TARGETS $) elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) message(STATUS "Building optimised arm binaries") ## arm64 / NEON add_library(pm3rrg_rdv4_hardnested_neon OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE ../../common ../../include ../src) set(SIMD_TARGETS $) else () message(STATUS "Not building optimised targets") set(SIMD_TARGETS) endif () add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common ../../include ../include ../src jansson) target_include_directories(pm3rrg_rdv4_hardnested INTERFACE hardnested)