Fixed C++ build failures in `miner/core/tests/CMakeLists.txt`: - Applied `-mavx2 -mvaes` compilation flags to `CryptoNight_x86_vaes.cpp` in the test library target, mirroring the main build configuration. This resolves the `target specific option mismatch` error during compilation. - Applied optimization flags to `CnHash.cpp` in the test library target. Verified Go implementation: - Confirmed `PingPeer` is implemented in `pkg/node/controller.go`. - Confirmed `handlePing` is implemented in `pkg/node/worker.go`. - Confirmed `go.mod` includes necessary dependencies. Recorded learnings regarding CMake property propagation across directories.
64 lines
2 KiB
CMake
64 lines
2 KiB
CMake
# Test suite for miner project
|
|
|
|
# Manually specify source files needed for tests with absolute paths
|
|
file(GLOB_RECURSE MINER_SOURCES
|
|
${CMAKE_SOURCE_DIR}/src/3rdparty/fmt/*.cc
|
|
${CMAKE_SOURCE_DIR}/src/base/*.cpp
|
|
${CMAKE_SOURCE_DIR}/src/backend/common/*.cpp
|
|
${CMAKE_SOURCE_DIR}/src/backend/cpu/*.cpp
|
|
${CMAKE_SOURCE_DIR}/src/crypto/cn/*.cpp
|
|
${CMAKE_SOURCE_DIR}/src/crypto/cn/*.c
|
|
${CMAKE_SOURCE_DIR}/src/crypto/common/*.cpp
|
|
)
|
|
|
|
# Remove test files and platform-specific files not for this architecture
|
|
list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_test\\.cpp$")
|
|
list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_arm.*")
|
|
list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_riscv.*")
|
|
if (WIN32)
|
|
list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_unix\\.cpp$")
|
|
list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_linux\\.cpp$")
|
|
else()
|
|
list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_win\\.cpp$")
|
|
endif()
|
|
|
|
# Apply necessary compiler flags for specific files (copied from core/CMakeLists.txt)
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES GNU OR CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
|
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/crypto/cn/CnHash.cpp PROPERTIES COMPILE_FLAGS "-Ofast -fno-tree-vectorize")
|
|
|
|
if (WITH_VAES)
|
|
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/crypto/cn/CryptoNight_x86_vaes.cpp PROPERTIES COMPILE_FLAGS "-Ofast -fno-tree-vectorize -mavx2 -mvaes")
|
|
endif()
|
|
endif()
|
|
|
|
# Create a library with common test utilities and miner components
|
|
add_library(miner_test_lib STATIC
|
|
${MINER_SOURCES}
|
|
)
|
|
|
|
target_include_directories(miner_test_lib PUBLIC
|
|
${CMAKE_SOURCE_DIR}/src
|
|
${CMAKE_SOURCE_DIR}/src/3rdparty
|
|
${UV_INCLUDE_DIR}
|
|
)
|
|
|
|
target_link_libraries(miner_test_lib PUBLIC
|
|
${XMRIG_ASM_LIBRARY}
|
|
${OPENSSL_LIBRARIES}
|
|
${UV_LIBRARIES}
|
|
${EXTRA_LIBS}
|
|
${CPUID_LIB}
|
|
${ARGON2_LIBRARY}
|
|
${ETHASH_LIBRARY}
|
|
${GHOSTRIDER_LIBRARY}
|
|
${BLAKE3_LIBRARY}
|
|
)
|
|
|
|
# Unit tests
|
|
add_subdirectory(unit)
|
|
|
|
# Integration tests
|
|
add_subdirectory(integration)
|
|
|
|
# Benchmark tests
|
|
add_subdirectory(benchmark)
|