diff --git a/CMakeLists.txt b/CMakeLists.txt index 8dc4d124..31392322 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -240,7 +240,10 @@ add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES} ${SOURCES_OS} ${HEADE target_link_libraries(${CMAKE_PROJECT_NAME} ${XMRIG_ASM_LIBRARY} ${OPENSSL_LIBRARIES} ${UV_LIBRARIES} ${EXTRA_LIBS} ${CPUID_LIB} ${ARGON2_LIBRARY} ${ETHASH_LIBRARY} ${GHOSTRIDER_LIBRARY}) if (WIN32) - add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/bin/WinRing0/WinRing0x64.sys" $) + if (NOT ARM_TARGET) + add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/bin/WinRing0/WinRing0x64.sys" $) + endif() + add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/scripts/benchmark_1M.cmd" $) add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/scripts/benchmark_10M.cmd" $) add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/scripts/pool_mine_example.cmd" $) @@ -249,5 +252,5 @@ if (WIN32) endif() if (CMAKE_CXX_COMPILER_ID MATCHES Clang AND CMAKE_BUILD_TYPE STREQUAL Release AND NOT CMAKE_GENERATOR STREQUAL Xcode) - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} ${CMAKE_PROJECT_NAME}) + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} "$") endif() diff --git a/cmake/cpu.cmake b/cmake/cpu.cmake index fb1bf450..32c043a0 100644 --- a/cmake/cpu.cmake +++ b/cmake/cpu.cmake @@ -38,7 +38,7 @@ elseif (ARM_V7) endif() if (NOT ARM_TARGET) - if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|armv8-a)$") + if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64|armv8-a)$") set(ARM_TARGET 8) elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|armv7ve)$") set(ARM_TARGET 7) diff --git a/cmake/flags.cmake b/cmake/flags.cmake index f55ddcdc..360bf3ff 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -84,7 +84,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) endif() endif() - if (BUILD_STATIC) + if (BUILD_STATIC OR WIN32) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") endif() diff --git a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp index b684c510..3a88a756 100644 --- a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp +++ b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp @@ -1,6 +1,6 @@ /* XMRig - * Copyright (c) 2018-2021 SChernykh - * Copyright (c) 2016-2021 XMRig + * Copyright (c) 2018-2025 SChernykh + * Copyright (c) 2016-2025 XMRig * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ #include -#if __ARM_FEATURE_CRYPTO && !defined(__APPLE__) +#if __ARM_FEATURE_CRYPTO && !defined(__APPLE__) && !defined(XMRIG_OS_WIN) # include # if !defined(XMRIG_OS_FREEBSD) # include @@ -74,6 +74,8 @@ xmrig::BasicCpuInfo::BasicCpuInfo() : # elif defined(XMRIG_OS_FREEBSD) uint64_t isar0 = READ_SPECIALREG(id_aa64isar0_el1); m_flags.set(FLAG_AES, ID_AA64ISAR0_AES_VAL(isar0) >= ID_AA64ISAR0_AES_BASE); +# elif (defined(XMRIG_OS_WIN)) + m_flags.set(FLAG_AES, true); // FIXME # else m_flags.set(FLAG_AES, getauxval(AT_HWCAP) & HWCAP_AES); # endif diff --git a/src/base/io/json/Json_win.cpp b/src/base/io/json/Json_win.cpp index 499ae129..4512fe83 100644 --- a/src/base/io/json/Json_win.cpp +++ b/src/base/io/json/Json_win.cpp @@ -1,6 +1,6 @@ /* XMRig - * Copyright (c) 2018-2021 SChernykh - * Copyright (c) 2016-2021 XMRig , + * Copyright (c) 2018-2025 SChernykh + * Copyright (c) 2016-2025 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #include -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) # include # include # include @@ -39,7 +39,7 @@ namespace xmrig { -#if defined(_MSC_VER) || defined (__GNUC__) +#if defined(_MSC_VER) || (defined(__GNUC__) && !defined(__clang__)) static std::wstring toUtf16(const char *str) { const int size = static_cast(strlen(str)); @@ -62,7 +62,7 @@ static std::wstring toUtf16(const char *str) if (!ifs.is_open()) { \ return false; \ } -#elif defined(__GNUC__) +#elif defined(__GNUC__) && !defined(__clang__) # define OPEN_IFS(name) \ const int fd = _wopen(toUtf16(name).c_str(), _O_RDONLY | _O_BINARY); \ if (fd == -1) { \ @@ -103,7 +103,7 @@ bool xmrig::Json::save(const char *fileName, const rapidjson::Document &doc) if (!ofs.is_open()) { return false; } -# elif defined(__GNUC__) +# elif defined(__GNUC__) && !defined(__clang__) const int fd = _wopen(toUtf16(fileName).c_str(), _O_WRONLY | _O_BINARY | _O_CREAT | _O_TRUNC, _S_IWRITE); if (fd == -1) { return false; diff --git a/src/crypto/randomx/intrin_portable.h b/src/crypto/randomx/intrin_portable.h index 820bf685..3f5ba485 100644 --- a/src/crypto/randomx/intrin_portable.h +++ b/src/crypto/randomx/intrin_portable.h @@ -392,13 +392,17 @@ FORCE_INLINE rx_vec_f128 rx_cvt_packed_int_vec_f128(const void* addr) { typedef uint8x16_t rx_vec_i128; typedef float64x2_t rx_vec_f128; +#if !defined(XMRIG_OS_WIN) // FIXME inline void* rx_aligned_alloc(size_t size, size_t align) { - void* p; - if (posix_memalign(&p, align, size) == 0) - return p; + void* p; + if (posix_memalign(&p, align, size) == 0) + return p; - return 0; + return 0; }; +#else +# define rx_aligned_alloc(a, b) malloc(a) +#endif #define rx_aligned_free(a) free(a)