From cac1e4aa5ebfcad1dc0b3cd55934a7a57b802f4d Mon Sep 17 00:00:00 2001 From: XMRig Date: Mon, 30 Aug 2021 23:06:16 +0700 Subject: [PATCH] Build "src/base" as static library. --- CMakeLists.txt | 132 +++---- cmake/OpenSSL.cmake | 64 ---- cmake/argon2.cmake | 11 +- cmake/asm.cmake | 13 +- cmake/astrobwt.cmake | 32 +- cmake/kawpow.cmake | 13 +- cmake/randomx.cmake | 56 ++- src/3rdparty/fmt/posix.h | 2 - src/backend/cpu/CpuBackend.cpp | 19 +- src/backend/cuda/CudaBackend.cpp | 17 +- src/backend/cuda/runners/CudaKawPowRunner.cpp | 6 +- src/backend/opencl/OclBackend.cpp | 19 +- .../opencl/runners/OclKawPowRunner.cpp | 3 +- .../opencl/runners/tools/OclKawPow.cpp | 4 +- src/{ => base}/3rdparty/cryptonote/LICENSE | 0 .../3rdparty/cryptonote/crypto-ops-data.c | 0 .../3rdparty/cryptonote/crypto-ops.c | 0 .../3rdparty/cryptonote/crypto-ops.h | 0 src/{ => base}/3rdparty/epee/LICENSE.txt | 0 src/{ => base}/3rdparty/epee/README.md | 0 src/{ => base}/3rdparty/epee/span.h | 0 src/{ => base}/3rdparty/fmt/LICENSE.rst | 0 src/{ => base}/3rdparty/fmt/README.rst | 0 src/{ => base}/3rdparty/fmt/args.h | 0 src/{ => base}/3rdparty/fmt/chrono.h | 0 src/{ => base}/3rdparty/fmt/color.h | 0 src/{ => base}/3rdparty/fmt/compile.h | 0 src/{ => base}/3rdparty/fmt/core.h | 0 src/{ => base}/3rdparty/fmt/format-inl.h | 0 src/{ => base}/3rdparty/fmt/format.cc | 0 src/{ => base}/3rdparty/fmt/format.h | 0 src/{ => base}/3rdparty/fmt/locale.h | 0 src/{ => base}/3rdparty/fmt/os.cc | 0 src/{ => base}/3rdparty/fmt/os.h | 0 src/{ => base}/3rdparty/fmt/ostream.h | 0 src/{ => base}/3rdparty/fmt/printf.h | 0 src/{ => base}/3rdparty/fmt/ranges.h | 0 src/{ => base}/3rdparty/fmt/xchar.h | 0 src/{ => base}/3rdparty/hwloc/AUTHORS | 0 src/{ => base}/3rdparty/hwloc/CMakeLists.txt | 0 src/{ => base}/3rdparty/hwloc/COPYING | 0 src/{ => base}/3rdparty/hwloc/NEWS | 0 src/{ => base}/3rdparty/hwloc/README | 0 src/{ => base}/3rdparty/hwloc/VERSION | 0 src/{ => base}/3rdparty/hwloc/include/hwloc.h | 0 .../hwloc/include/hwloc/autogen/config.h | 0 .../3rdparty/hwloc/include/hwloc/bitmap.h | 0 .../3rdparty/hwloc/include/hwloc/cpukinds.h | 0 .../3rdparty/hwloc/include/hwloc/cuda.h | 0 .../3rdparty/hwloc/include/hwloc/cudart.h | 0 .../3rdparty/hwloc/include/hwloc/deprecated.h | 0 .../3rdparty/hwloc/include/hwloc/diff.h | 0 .../3rdparty/hwloc/include/hwloc/distances.h | 0 .../3rdparty/hwloc/include/hwloc/export.h | 0 .../3rdparty/hwloc/include/hwloc/gl.h | 0 .../hwloc/include/hwloc/glibc-sched.h | 0 .../3rdparty/hwloc/include/hwloc/helper.h | 0 .../3rdparty/hwloc/include/hwloc/inlines.h | 0 .../3rdparty/hwloc/include/hwloc/intel-mic.h | 0 .../3rdparty/hwloc/include/hwloc/levelzero.h | 0 .../hwloc/include/hwloc/linux-libnuma.h | 0 .../3rdparty/hwloc/include/hwloc/linux.h | 0 .../3rdparty/hwloc/include/hwloc/memattrs.h | 0 .../3rdparty/hwloc/include/hwloc/nvml.h | 0 .../3rdparty/hwloc/include/hwloc/opencl.h | 0 .../hwloc/include/hwloc/openfabrics-verbs.h | 0 .../3rdparty/hwloc/include/hwloc/plugins.h | 0 .../3rdparty/hwloc/include/hwloc/rename.h | 0 .../3rdparty/hwloc/include/hwloc/rsmi.h | 0 .../3rdparty/hwloc/include/hwloc/shmem.h | 0 .../3rdparty/hwloc/include/hwloc/windows.h | 0 .../hwloc/include/private/autogen/config.h | 0 .../hwloc/include/private/components.h | 0 .../hwloc/include/private/cpuid-x86.h | 0 .../3rdparty/hwloc/include/private/debug.h | 0 .../include/private/internal-components.h | 0 .../3rdparty/hwloc/include/private/misc.h | 0 .../3rdparty/hwloc/include/private/netloc.h | 0 .../3rdparty/hwloc/include/private/private.h | 0 .../hwloc/include/private/solaris-chiptype.h | 0 .../3rdparty/hwloc/include/private/xml.h | 0 src/{ => base}/3rdparty/hwloc/src/base64.c | 0 src/{ => base}/3rdparty/hwloc/src/bind.c | 0 src/{ => base}/3rdparty/hwloc/src/bitmap.c | 0 .../3rdparty/hwloc/src/components.c | 0 src/{ => base}/3rdparty/hwloc/src/cpukinds.c | 0 src/{ => base}/3rdparty/hwloc/src/diff.c | 0 src/{ => base}/3rdparty/hwloc/src/distances.c | 0 src/{ => base}/3rdparty/hwloc/src/memattrs.c | 0 src/{ => base}/3rdparty/hwloc/src/misc.c | 0 .../3rdparty/hwloc/src/pci-common.c | 0 src/{ => base}/3rdparty/hwloc/src/shmem.c | 0 .../3rdparty/hwloc/src/static-components.h | 0 .../3rdparty/hwloc/src/topology-noos.c | 0 .../3rdparty/hwloc/src/topology-synthetic.c | 0 .../3rdparty/hwloc/src/topology-windows.c | 0 .../3rdparty/hwloc/src/topology-x86.c | 0 .../hwloc/src/topology-xml-nolibxml.c | 0 .../3rdparty/hwloc/src/topology-xml.c | 0 src/{ => base}/3rdparty/hwloc/src/topology.c | 0 src/{ => base}/3rdparty/hwloc/src/traversal.c | 0 .../3rdparty/libethash/CMakeLists.txt | 0 .../3rdparty/libethash/data_sizes.h | 0 src/{ => base}/3rdparty/libethash/endian.h | 0 src/{ => base}/3rdparty/libethash/ethash.h | 0 .../3rdparty/libethash/ethash_internal.c | 0 .../3rdparty/libethash/ethash_internal.h | 0 src/{ => base}/3rdparty/libethash/fnv.h | 0 .../3rdparty/libethash/keccakf800.c | 0 src/{ => base}/3rdparty/llhttp/LICENSE-MIT | 0 src/{ => base}/3rdparty/llhttp/README.md | 0 src/{ => base}/3rdparty/llhttp/api.c | 0 src/{ => base}/3rdparty/llhttp/api.h | 0 src/{ => base}/3rdparty/llhttp/http.c | 0 src/{ => base}/3rdparty/llhttp/llhttp.c | 0 src/{ => base}/3rdparty/llhttp/llhttp.h | 0 .../3rdparty/rapidjson/allocators.h | 0 .../3rdparty/rapidjson/cursorstreamwrapper.h | 0 src/{ => base}/3rdparty/rapidjson/document.h | 0 .../3rdparty/rapidjson/encodedstream.h | 0 src/{ => base}/3rdparty/rapidjson/encodings.h | 0 src/{ => base}/3rdparty/rapidjson/error/en.h | 0 .../3rdparty/rapidjson/error/error.h | 0 .../3rdparty/rapidjson/filereadstream.h | 0 .../3rdparty/rapidjson/filewritestream.h | 0 src/{ => base}/3rdparty/rapidjson/fwd.h | 0 .../3rdparty/rapidjson/internal/biginteger.h | 0 .../3rdparty/rapidjson/internal/clzll.h | 0 .../3rdparty/rapidjson/internal/diyfp.h | 0 .../3rdparty/rapidjson/internal/dtoa.h | 0 .../3rdparty/rapidjson/internal/ieee754.h | 0 .../3rdparty/rapidjson/internal/itoa.h | 0 .../3rdparty/rapidjson/internal/meta.h | 0 .../3rdparty/rapidjson/internal/pow10.h | 0 .../3rdparty/rapidjson/internal/regex.h | 0 .../3rdparty/rapidjson/internal/stack.h | 0 .../3rdparty/rapidjson/internal/strfunc.h | 0 .../3rdparty/rapidjson/internal/strtod.h | 0 .../3rdparty/rapidjson/internal/swap.h | 0 .../3rdparty/rapidjson/istreamwrapper.h | 0 src/{ => base}/3rdparty/rapidjson/license.txt | 0 .../3rdparty/rapidjson/memorybuffer.h | 0 .../3rdparty/rapidjson/memorystream.h | 0 .../3rdparty/rapidjson/msinttypes/inttypes.h | 0 .../3rdparty/rapidjson/msinttypes/stdint.h | 0 .../3rdparty/rapidjson/ostreamwrapper.h | 0 src/{ => base}/3rdparty/rapidjson/pointer.h | 0 .../3rdparty/rapidjson/prettywriter.h | 0 src/{ => base}/3rdparty/rapidjson/rapidjson.h | 0 src/{ => base}/3rdparty/rapidjson/reader.h | 0 src/{ => base}/3rdparty/rapidjson/readme.md | 0 src/{ => base}/3rdparty/rapidjson/schema.h | 0 src/{ => base}/3rdparty/rapidjson/stream.h | 0 .../3rdparty/rapidjson/stringbuffer.h | 0 src/{ => base}/3rdparty/rapidjson/uri.h | 0 src/{ => base}/3rdparty/rapidjson/writer.h | 0 src/base/CMakeLists.txt | 345 ++++++++++++++++++ src/base/base.cmake | 274 -------------- {cmake => src/base/cmake}/FindHWLOC.cmake | 0 src/base/cmake/FindSodium.cmake | 25 ++ {cmake => src/base/cmake}/FindUV.cmake | 0 src/base/cmake/base.cmake | 40 ++ {cmake => src/base/cmake}/cpu.cmake | 0 {cmake => src/base/cmake}/flags.cmake | 0 src/base/cmake/option/algorithms.cmake | 44 +++ src/base/cmake/option/benchmark.cmake | 9 + src/base/cmake/option/cryptonote.cmake | 10 + src/base/cmake/option/env.cmake | 9 + src/base/cmake/option/http.cmake | 5 + src/base/cmake/option/hwloc.cmake | 18 + src/base/cmake/option/sodium.cmake | 7 + src/base/cmake/option/syslog.cmake | 6 + src/base/cmake/option/tls.cmake | 26 ++ {cmake => src/base/cmake}/os.cmake | 0 src/base/io/log/Tags.cpp | 28 -- src/base/io/log/Tags.h | 9 - src/base/kernel/Versions.cpp | 122 +++++++ src/base/kernel/Versions.h | 47 +++ src/base/kernel/version.h | 33 ++ src/hw/api/api.cmake | 11 +- src/hw/dmi/dmi.cmake | 6 +- 181 files changed, 874 insertions(+), 591 deletions(-) delete mode 100644 cmake/OpenSSL.cmake delete mode 100644 src/3rdparty/fmt/posix.h rename src/{ => base}/3rdparty/cryptonote/LICENSE (100%) rename src/{ => base}/3rdparty/cryptonote/crypto-ops-data.c (100%) rename src/{ => base}/3rdparty/cryptonote/crypto-ops.c (100%) rename src/{ => base}/3rdparty/cryptonote/crypto-ops.h (100%) rename src/{ => base}/3rdparty/epee/LICENSE.txt (100%) rename src/{ => base}/3rdparty/epee/README.md (100%) rename src/{ => base}/3rdparty/epee/span.h (100%) rename src/{ => base}/3rdparty/fmt/LICENSE.rst (100%) rename src/{ => base}/3rdparty/fmt/README.rst (100%) rename src/{ => base}/3rdparty/fmt/args.h (100%) rename src/{ => base}/3rdparty/fmt/chrono.h (100%) rename src/{ => base}/3rdparty/fmt/color.h (100%) rename src/{ => base}/3rdparty/fmt/compile.h (100%) rename src/{ => base}/3rdparty/fmt/core.h (100%) rename src/{ => base}/3rdparty/fmt/format-inl.h (100%) rename src/{ => base}/3rdparty/fmt/format.cc (100%) rename src/{ => base}/3rdparty/fmt/format.h (100%) rename src/{ => base}/3rdparty/fmt/locale.h (100%) rename src/{ => base}/3rdparty/fmt/os.cc (100%) rename src/{ => base}/3rdparty/fmt/os.h (100%) rename src/{ => base}/3rdparty/fmt/ostream.h (100%) rename src/{ => base}/3rdparty/fmt/printf.h (100%) rename src/{ => base}/3rdparty/fmt/ranges.h (100%) rename src/{ => base}/3rdparty/fmt/xchar.h (100%) rename src/{ => base}/3rdparty/hwloc/AUTHORS (100%) rename src/{ => base}/3rdparty/hwloc/CMakeLists.txt (100%) rename src/{ => base}/3rdparty/hwloc/COPYING (100%) rename src/{ => base}/3rdparty/hwloc/NEWS (100%) rename src/{ => base}/3rdparty/hwloc/README (100%) rename src/{ => base}/3rdparty/hwloc/VERSION (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/autogen/config.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/bitmap.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/cpukinds.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/cuda.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/cudart.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/deprecated.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/diff.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/distances.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/export.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/gl.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/glibc-sched.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/helper.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/inlines.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/intel-mic.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/levelzero.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/linux-libnuma.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/linux.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/memattrs.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/nvml.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/opencl.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/openfabrics-verbs.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/plugins.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/rename.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/rsmi.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/shmem.h (100%) rename src/{ => base}/3rdparty/hwloc/include/hwloc/windows.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/autogen/config.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/components.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/cpuid-x86.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/debug.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/internal-components.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/misc.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/netloc.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/private.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/solaris-chiptype.h (100%) rename src/{ => base}/3rdparty/hwloc/include/private/xml.h (100%) rename src/{ => base}/3rdparty/hwloc/src/base64.c (100%) rename src/{ => base}/3rdparty/hwloc/src/bind.c (100%) rename src/{ => base}/3rdparty/hwloc/src/bitmap.c (100%) rename src/{ => base}/3rdparty/hwloc/src/components.c (100%) rename src/{ => base}/3rdparty/hwloc/src/cpukinds.c (100%) rename src/{ => base}/3rdparty/hwloc/src/diff.c (100%) rename src/{ => base}/3rdparty/hwloc/src/distances.c (100%) rename src/{ => base}/3rdparty/hwloc/src/memattrs.c (100%) rename src/{ => base}/3rdparty/hwloc/src/misc.c (100%) rename src/{ => base}/3rdparty/hwloc/src/pci-common.c (100%) rename src/{ => base}/3rdparty/hwloc/src/shmem.c (100%) rename src/{ => base}/3rdparty/hwloc/src/static-components.h (100%) rename src/{ => base}/3rdparty/hwloc/src/topology-noos.c (100%) rename src/{ => base}/3rdparty/hwloc/src/topology-synthetic.c (100%) rename src/{ => base}/3rdparty/hwloc/src/topology-windows.c (100%) rename src/{ => base}/3rdparty/hwloc/src/topology-x86.c (100%) rename src/{ => base}/3rdparty/hwloc/src/topology-xml-nolibxml.c (100%) rename src/{ => base}/3rdparty/hwloc/src/topology-xml.c (100%) rename src/{ => base}/3rdparty/hwloc/src/topology.c (100%) rename src/{ => base}/3rdparty/hwloc/src/traversal.c (100%) rename src/{ => base}/3rdparty/libethash/CMakeLists.txt (100%) rename src/{ => base}/3rdparty/libethash/data_sizes.h (100%) rename src/{ => base}/3rdparty/libethash/endian.h (100%) rename src/{ => base}/3rdparty/libethash/ethash.h (100%) rename src/{ => base}/3rdparty/libethash/ethash_internal.c (100%) rename src/{ => base}/3rdparty/libethash/ethash_internal.h (100%) rename src/{ => base}/3rdparty/libethash/fnv.h (100%) rename src/{ => base}/3rdparty/libethash/keccakf800.c (100%) rename src/{ => base}/3rdparty/llhttp/LICENSE-MIT (100%) rename src/{ => base}/3rdparty/llhttp/README.md (100%) rename src/{ => base}/3rdparty/llhttp/api.c (100%) rename src/{ => base}/3rdparty/llhttp/api.h (100%) rename src/{ => base}/3rdparty/llhttp/http.c (100%) rename src/{ => base}/3rdparty/llhttp/llhttp.c (100%) rename src/{ => base}/3rdparty/llhttp/llhttp.h (100%) rename src/{ => base}/3rdparty/rapidjson/allocators.h (100%) rename src/{ => base}/3rdparty/rapidjson/cursorstreamwrapper.h (100%) rename src/{ => base}/3rdparty/rapidjson/document.h (100%) rename src/{ => base}/3rdparty/rapidjson/encodedstream.h (100%) rename src/{ => base}/3rdparty/rapidjson/encodings.h (100%) rename src/{ => base}/3rdparty/rapidjson/error/en.h (100%) rename src/{ => base}/3rdparty/rapidjson/error/error.h (100%) rename src/{ => base}/3rdparty/rapidjson/filereadstream.h (100%) rename src/{ => base}/3rdparty/rapidjson/filewritestream.h (100%) rename src/{ => base}/3rdparty/rapidjson/fwd.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/biginteger.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/clzll.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/diyfp.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/dtoa.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/ieee754.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/itoa.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/meta.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/pow10.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/regex.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/stack.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/strfunc.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/strtod.h (100%) rename src/{ => base}/3rdparty/rapidjson/internal/swap.h (100%) rename src/{ => base}/3rdparty/rapidjson/istreamwrapper.h (100%) rename src/{ => base}/3rdparty/rapidjson/license.txt (100%) rename src/{ => base}/3rdparty/rapidjson/memorybuffer.h (100%) rename src/{ => base}/3rdparty/rapidjson/memorystream.h (100%) rename src/{ => base}/3rdparty/rapidjson/msinttypes/inttypes.h (100%) rename src/{ => base}/3rdparty/rapidjson/msinttypes/stdint.h (100%) rename src/{ => base}/3rdparty/rapidjson/ostreamwrapper.h (100%) rename src/{ => base}/3rdparty/rapidjson/pointer.h (100%) rename src/{ => base}/3rdparty/rapidjson/prettywriter.h (100%) rename src/{ => base}/3rdparty/rapidjson/rapidjson.h (100%) rename src/{ => base}/3rdparty/rapidjson/reader.h (100%) rename src/{ => base}/3rdparty/rapidjson/readme.md (100%) rename src/{ => base}/3rdparty/rapidjson/schema.h (100%) rename src/{ => base}/3rdparty/rapidjson/stream.h (100%) rename src/{ => base}/3rdparty/rapidjson/stringbuffer.h (100%) rename src/{ => base}/3rdparty/rapidjson/uri.h (100%) rename src/{ => base}/3rdparty/rapidjson/writer.h (100%) create mode 100644 src/base/CMakeLists.txt delete mode 100644 src/base/base.cmake rename {cmake => src/base/cmake}/FindHWLOC.cmake (100%) create mode 100644 src/base/cmake/FindSodium.cmake rename {cmake => src/base/cmake}/FindUV.cmake (100%) create mode 100644 src/base/cmake/base.cmake rename {cmake => src/base/cmake}/cpu.cmake (100%) rename {cmake => src/base/cmake}/flags.cmake (100%) create mode 100644 src/base/cmake/option/algorithms.cmake create mode 100644 src/base/cmake/option/benchmark.cmake create mode 100644 src/base/cmake/option/cryptonote.cmake create mode 100644 src/base/cmake/option/env.cmake create mode 100644 src/base/cmake/option/http.cmake create mode 100644 src/base/cmake/option/hwloc.cmake create mode 100644 src/base/cmake/option/sodium.cmake create mode 100644 src/base/cmake/option/syslog.cmake create mode 100644 src/base/cmake/option/tls.cmake rename {cmake => src/base/cmake}/os.cmake (100%) create mode 100644 src/base/kernel/Versions.cpp create mode 100644 src/base/kernel/Versions.h create mode 100644 src/base/kernel/version.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 37e235ca..d187138b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.1) project(xmrig) option(WITH_HWLOC "Enable hwloc support" ON) @@ -33,22 +33,25 @@ option(BUILD_STATIC "Build static binary" OFF) option(ARM_TARGET "Force use specific ARM target 8 or 7" 0) option(HWLOC_DEBUG "Enable hwloc debug helpers and log" OFF) +add_definitions(-DXMRIG_MINER_PROJECT) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") +set(WITH_SODIUM OFF) +set(WITH_CRYPTONOTE ON) +set(WITH_CRYPTO_OPS ON) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/src/base/cmake" "${CMAKE_SOURCE_DIR}/cmake") +set(LIBS base) -include (CheckIncludeFile) -include (cmake/cpu.cmake) -include (cmake/os.cmake) -include (src/base/base.cmake) -include (src/backend/backend.cmake) +include(base) +add_subdirectory(src/base) + +include(src/backend/backend.cmake) set(HEADERS - "${HEADERS_BASE}" - "${HEADERS_BASE_HTTP}" "${HEADERS_BACKEND}" src/App.h + src/backend/common/interfaces/IMemoryPool.h src/core/config/Config_default.h src/core/config/Config_platform.h src/core/config/Config.h @@ -56,17 +59,6 @@ set(HEADERS src/core/config/usage.h src/core/Controller.h src/core/Miner.h - src/net/interfaces/IJobResultListener.h - src/net/JobResult.h - src/net/JobResults.h - src/net/Network.h - src/net/strategies/DonateStrategy.h - src/Summary.h - src/version.h - ) - -set(HEADERS_CRYPTO - src/backend/common/interfaces/IMemoryPool.h src/crypto/cn/asm/CryptonightR_template.h src/crypto/cn/c_blake256.h src/crypto/cn/c_groestl.h @@ -87,31 +79,28 @@ set(HEADERS_CRYPTO src/crypto/common/Nonce.h src/crypto/common/portable/mm_malloc.h src/crypto/common/VirtualMemory.h + src/net/interfaces/IJobResultListener.h + src/net/JobResult.h + src/net/JobResults.h + src/net/Network.h + src/net/strategies/DonateStrategy.h + src/Summary.h + src/version.h ) if (XMRIG_ARM) - set(HEADERS_CRYPTO "${HEADERS_CRYPTO}" src/crypto/cn/CryptoNight_arm.h) + list(APPEND HEADERS src/crypto/cn/CryptoNight_arm.h) else() - set(HEADERS_CRYPTO "${HEADERS_CRYPTO}" src/crypto/cn/CryptoNight_x86.h) + list(APPEND HEADERS src/crypto/cn/CryptoNight_x86.h) endif() set(SOURCES - "${SOURCES_BASE}" - "${SOURCES_BASE_HTTP}" "${SOURCES_BACKEND}" src/App.cpp src/core/config/Config.cpp src/core/config/ConfigTransform.cpp src/core/Controller.cpp src/core/Miner.cpp - src/net/JobResults.cpp - src/net/Network.cpp - src/net/strategies/DonateStrategy.cpp - src/Summary.cpp - src/xmrig.cpp - ) - -set(SOURCES_CRYPTO src/crypto/cn/c_blake256.c src/crypto/cn/c_groestl.c src/crypto/cn/c_jh.c @@ -122,102 +111,67 @@ set(SOURCES_CRYPTO src/crypto/common/MemoryPool.cpp src/crypto/common/Nonce.cpp src/crypto/common/VirtualMemory.cpp + src/net/JobResults.cpp + src/net/Network.cpp + src/net/strategies/DonateStrategy.cpp + src/Summary.cpp + src/xmrig.cpp ) if (WITH_HWLOC) - list(APPEND HEADERS_CRYPTO + list(APPEND HEADERS src/crypto/common/NUMAMemoryPool.h ) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/common/NUMAMemoryPool.cpp src/crypto/common/VirtualMemory_hwloc.cpp ) endif() if (XMRIG_OS_WIN) - list(APPEND SOURCES_OS + list(APPEND SOURCES res/app.rc src/App_win.cpp src/crypto/common/VirtualMemory_win.cpp ) - - set(EXTRA_LIBS ws2_32 psapi iphlpapi userenv) elseif (XMRIG_OS_APPLE) - list(APPEND SOURCES_OS + list(APPEND SOURCES src/App_unix.cpp src/crypto/common/VirtualMemory_unix.cpp ) - - find_library(IOKIT_LIBRARY IOKit) - find_library(CORESERVICES_LIBRARY CoreServices) - set(EXTRA_LIBS ${IOKIT_LIBRARY} ${CORESERVICES_LIBRARY}) else() - list(APPEND SOURCES_OS + list(APPEND SOURCES src/App_unix.cpp src/crypto/common/VirtualMemory_unix.cpp ) - if (XMRIG_OS_ANDROID) - set(EXTRA_LIBS pthread rt dl log) - elseif (XMRIG_OS_LINUX) - list(APPEND SOURCES_OS + if (XMRIG_OS_LINUX AND NOT XMRIG_OS_ANDROID) + list(APPEND SOURCES src/crypto/common/LinuxMemory.h src/crypto/common/LinuxMemory.cpp ) - - set(EXTRA_LIBS pthread rt dl) - elseif (XMRIG_OS_FREEBSD) - set(EXTRA_LIBS kvm pthread) endif() endif() -add_definitions(-DXMRIG_MINER_PROJECT -DXMRIG_JSON_SINGLE_LINE_ARRAY) -add_definitions(-D__STDC_FORMAT_MACROS -DUNICODE -D_FILE_OFFSET_BITS=64) +include_directories(src) +include_directories(src/3rdparty) -find_package(UV REQUIRED) - -include(cmake/flags.cmake) -include(cmake/randomx.cmake) -include(cmake/argon2.cmake) -include(cmake/astrobwt.cmake) -include(cmake/kawpow.cmake) -include(cmake/OpenSSL.cmake) -include(cmake/asm.cmake) - -if (WITH_CN_LITE) - add_definitions(/DXMRIG_ALGO_CN_LITE) -endif() - -if (WITH_CN_HEAVY) - add_definitions(/DXMRIG_ALGO_CN_HEAVY) -endif() - -if (WITH_CN_PICO) - add_definitions(/DXMRIG_ALGO_CN_PICO) -endif() - -if (WITH_CN_FEMTO) - add_definitions(/DXMRIG_ALGO_CN_FEMTO) -endif() +include(randomx) +include(argon2) +include(astrobwt) +include(kawpow) +include(asm) if (WITH_EMBEDDED_CONFIG) - add_definitions(/DXMRIG_FEATURE_EMBEDDED_CONFIG) + add_definitions(-DXMRIG_FEATURE_EMBEDDED_CONFIG) endif() include(src/hw/api/api.cmake) include(src/hw/dmi/dmi.cmake) -include_directories(src) -include_directories(src/3rdparty) -include_directories(${UV_INCLUDE_DIR}) - -if (WITH_DEBUG_LOG) - add_definitions(/DAPP_DEBUG) -endif() - -add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES} ${SOURCES_OS} ${HEADERS_CRYPTO} ${SOURCES_CRYPTO} ${SOURCES_SYSLOG} ${TLS_SOURCES} ${XMRIG_ASM_SOURCES}) -target_link_libraries(${CMAKE_PROJECT_NAME} ${XMRIG_ASM_LIBRARY} ${OPENSSL_LIBRARIES} ${UV_LIBRARIES} ${EXTRA_LIBS} ${CPUID_LIB} ${ARGON2_LIBRARY} ${ETHASH_LIBRARY}) +add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES}) +target_link_libraries(${CMAKE_PROJECT_NAME} ${LIBS}) 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" $) diff --git a/cmake/OpenSSL.cmake b/cmake/OpenSSL.cmake deleted file mode 100644 index 84f97d54..00000000 --- a/cmake/OpenSSL.cmake +++ /dev/null @@ -1,64 +0,0 @@ -if (WITH_TLS) - set(OPENSSL_ROOT_DIR ${XMRIG_DEPS}) - - if (WIN32) - set(OPENSSL_USE_STATIC_LIBS TRUE) - set(OPENSSL_MSVC_STATIC_RT TRUE) - - set(EXTRA_LIBS ${EXTRA_LIBS} crypt32) - elseif (APPLE) - set(OPENSSL_USE_STATIC_LIBS TRUE) - endif() - - if (BUILD_STATIC) - set(OPENSSL_USE_STATIC_LIBS TRUE) - endif() - - - find_package(OpenSSL) - - if (OPENSSL_FOUND) - set(TLS_SOURCES - src/base/net/stratum/Tls.cpp - src/base/net/stratum/Tls.h - src/base/net/tls/ServerTls.cpp - src/base/net/tls/ServerTls.h - src/base/net/tls/TlsConfig.cpp - src/base/net/tls/TlsConfig.h - src/base/net/tls/TlsContext.cpp - src/base/net/tls/TlsContext.h - src/base/net/tls/TlsGen.cpp - src/base/net/tls/TlsGen.h - ) - - include_directories(${OPENSSL_INCLUDE_DIR}) - - if (WITH_HTTP) - set(TLS_SOURCES ${TLS_SOURCES} - src/base/net/https/HttpsClient.cpp - src/base/net/https/HttpsClient.h - src/base/net/https/HttpsContext.cpp - src/base/net/https/HttpsContext.h - src/base/net/https/HttpsServer.cpp - src/base/net/https/HttpsServer.h - ) - endif() - else() - message(FATAL_ERROR "OpenSSL NOT found: use `-DWITH_TLS=OFF` to build without TLS support") - endif() - - add_definitions(/DXMRIG_FEATURE_TLS) -else() - set(TLS_SOURCES "") - set(OPENSSL_LIBRARIES "") - remove_definitions(/DXMRIG_FEATURE_TLS) - - if (WITH_HTTP) - set(TLS_SOURCES ${TLS_SOURCES} - src/base/net/http/HttpServer.cpp - src/base/net/http/HttpServer.h - ) - endif() - - set(CMAKE_PROJECT_NAME "${CMAKE_PROJECT_NAME}-notls") -endif() diff --git a/cmake/argon2.cmake b/cmake/argon2.cmake index e82cd389..870fdd8f 100644 --- a/cmake/argon2.cmake +++ b/cmake/argon2.cmake @@ -1,18 +1,13 @@ if (WITH_ARGON2) - add_definitions(/DXMRIG_ALGO_ARGON2) - - list(APPEND HEADERS_CRYPTO + list(APPEND HEADERS src/crypto/argon2/Hash.h src/crypto/argon2/Impl.h ) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/argon2/Impl.cpp ) add_subdirectory(src/3rdparty/argon2) - set(ARGON2_LIBRARY argon2) -else() - remove_definitions(/DXMRIG_ALGO_ARGON2) - set(ARGON2_LIBRARY "") + list(APPEND LIBS argon2) endif() diff --git a/cmake/asm.cmake b/cmake/asm.cmake index e445defd..66df1b45 100644 --- a/cmake/asm.cmake +++ b/cmake/asm.cmake @@ -36,17 +36,16 @@ if (WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) endif() add_library(${XMRIG_ASM_LIBRARY} STATIC ${XMRIG_ASM_FILES}) - set(XMRIG_ASM_SOURCES - src/crypto/common/Assembly.h + list(APPEND HEADERS src/crypto/common/Assembly.h) + + list(APPEND SOURCES src/crypto/common/Assembly.cpp src/crypto/cn/r/CryptonightR_gen.cpp ) set_property(TARGET ${XMRIG_ASM_LIBRARY} PROPERTY LINKER_LANGUAGE C) - add_definitions(/DXMRIG_FEATURE_ASM) + list(APPEND LIBS ${XMRIG_ASM_LIBRARY}) + add_definitions(-DXMRIG_FEATURE_ASM) else() - set(XMRIG_ASM_SOURCES "") - set(XMRIG_ASM_LIBRARY "") - - remove_definitions(/DXMRIG_FEATURE_ASM) + set(WITH_ASM OFF) endif() diff --git a/cmake/astrobwt.cmake b/cmake/astrobwt.cmake index f0ebf530..5cb73a9d 100644 --- a/cmake/astrobwt.cmake +++ b/cmake/astrobwt.cmake @@ -1,29 +1,22 @@ if (WITH_ASTROBWT) - add_definitions(/DXMRIG_ALGO_ASTROBWT) - - list(APPEND HEADERS_CRYPTO - src/crypto/astrobwt/AstroBWT.h - ) - - list(APPEND SOURCES_CRYPTO - src/crypto/astrobwt/AstroBWT.cpp - ) + list(APPEND HEADERS src/crypto/astrobwt/AstroBWT.h) + list(APPEND SOURCES src/crypto/astrobwt/AstroBWT.cpp) if (XMRIG_ARM) - list(APPEND HEADERS_CRYPTO + list(APPEND HEADERS src/crypto/astrobwt/salsa20_ref/ecrypt-config.h src/crypto/astrobwt/salsa20_ref/ecrypt-machine.h src/crypto/astrobwt/salsa20_ref/ecrypt-portable.h src/crypto/astrobwt/salsa20_ref/ecrypt-sync.h ) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/astrobwt/salsa20_ref/salsa20.c ) else() if (CMAKE_SIZEOF_VOID_P EQUAL 8) add_definitions(/DASTROBWT_AVX2) - list(APPEND SOURCES_CRYPTO src/crypto/astrobwt/xmm6int/salsa20_xmm6int-avx2.c) + list(APPEND SOURCES src/crypto/astrobwt/xmm6int/salsa20_xmm6int-avx2.c) if (CMAKE_C_COMPILER_ID MATCHES GNU OR CMAKE_C_COMPILER_ID MATCHES Clang) set_source_files_properties(src/crypto/astrobwt/xmm6int/salsa20_xmm6int-avx2.c PROPERTIES COMPILE_FLAGS -mavx2) @@ -31,21 +24,14 @@ if (WITH_ASTROBWT) if (CMAKE_C_COMPILER_ID MATCHES MSVC) enable_language(ASM_MASM) - list(APPEND SOURCES_CRYPTO src/crypto/astrobwt/sha3_256_avx2.asm) + list(APPEND SOURCES src/crypto/astrobwt/sha3_256_avx2.asm) else() enable_language(ASM) - list(APPEND SOURCES_CRYPTO src/crypto/astrobwt/sha3_256_avx2.S) + list(APPEND SOURCES src/crypto/astrobwt/sha3_256_avx2.S) endif() endif() - list(APPEND HEADERS_CRYPTO - src/crypto/astrobwt/Salsa20.hpp - ) - - list(APPEND SOURCES_CRYPTO - src/crypto/astrobwt/Salsa20.cpp - ) + list(APPEND HEADERS src/crypto/astrobwt/Salsa20.hpp) + list(APPEND SOURCES src/crypto/astrobwt/Salsa20.cpp) endif() -else() - remove_definitions(/DXMRIG_ALGO_ASTROBWT) endif() diff --git a/cmake/kawpow.cmake b/cmake/kawpow.cmake index 3c160266..ca15fa9f 100644 --- a/cmake/kawpow.cmake +++ b/cmake/kawpow.cmake @@ -1,19 +1,14 @@ if (WITH_KAWPOW) - add_definitions(/DXMRIG_ALGO_KAWPOW) - - list(APPEND HEADERS_CRYPTO + list(APPEND HEADERS src/crypto/kawpow/KPCache.h src/crypto/kawpow/KPHash.h ) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/kawpow/KPCache.cpp src/crypto/kawpow/KPHash.cpp ) - add_subdirectory(src/3rdparty/libethash) - set(ETHASH_LIBRARY ethash) -else() - remove_definitions(/DXMRIG_ALGO_KAWPOW) - set(ETHASH_LIBRARY "") + add_subdirectory(src/base/3rdparty/libethash) + list(APPEND LIBS ethash) endif() diff --git a/cmake/randomx.cmake b/cmake/randomx.cmake index 7038774c..7dd1220e 100644 --- a/cmake/randomx.cmake +++ b/cmake/randomx.cmake @@ -1,8 +1,5 @@ if (WITH_RANDOMX) - add_definitions(/DXMRIG_ALGO_RANDOMX) - set(WITH_ARGON2 ON) - - list(APPEND HEADERS_CRYPTO + list(APPEND HEADERS src/crypto/rx/Rx.h src/crypto/rx/RxAlgo.h src/crypto/rx/RxBasicStorage.h @@ -14,7 +11,7 @@ if (WITH_RANDOMX) src/crypto/rx/RxVm.h ) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/randomx/aes_hash.cpp src/crypto/randomx/allocator.cpp src/crypto/randomx/blake2_generator.cpp @@ -44,19 +41,19 @@ if (WITH_RANDOMX) if (WITH_ASM AND CMAKE_C_COMPILER_ID MATCHES MSVC) enable_language(ASM_MASM) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/randomx/jit_compiler_x86_static.asm src/crypto/randomx/jit_compiler_x86.cpp ) elseif (WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/randomx/jit_compiler_x86_static.S src/crypto/randomx/jit_compiler_x86.cpp ) # cheat because cmake and ccache hate each other set_property(SOURCE src/crypto/randomx/jit_compiler_x86_static.S PROPERTY LANGUAGE C) elseif (XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/randomx/jit_compiler_a64_static.S src/crypto/randomx/jit_compiler_a64.cpp ) @@ -67,13 +64,11 @@ if (WITH_RANDOMX) set_property(SOURCE src/crypto/randomx/jit_compiler_a64_static.S PROPERTY LANGUAGE C) endif() else() - list(APPEND SOURCES_CRYPTO - src/crypto/randomx/jit_compiler_fallback.cpp - ) + list(APPEND SOURCES src/crypto/randomx/jit_compiler_fallback.cpp) endif() if (WITH_SSE4_1) - list(APPEND SOURCES_CRYPTO src/crypto/randomx/blake2/blake2b_sse41.c) + list(APPEND SOURCES src/crypto/randomx/blake2/blake2b_sse41.c) if (CMAKE_C_COMPILER_ID MATCHES GNU OR CMAKE_C_COMPILER_ID MATCHES Clang) set_source_files_properties(src/crypto/randomx/blake2/blake2b_sse41.c PROPERTIES COMPILE_FLAGS -msse4.1) @@ -85,56 +80,49 @@ if (WITH_RANDOMX) endif() if (WITH_HWLOC) - list(APPEND HEADERS_CRYPTO - src/crypto/rx/RxNUMAStorage.h - ) - - list(APPEND SOURCES_CRYPTO - src/crypto/rx/RxNUMAStorage.cpp - ) + list(APPEND HEADERS src/crypto/rx/RxNUMAStorage.h) + list(APPEND SOURCES src/crypto/rx/RxNUMAStorage.cpp) endif() if (WITH_MSR AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND (XMRIG_OS_WIN OR XMRIG_OS_LINUX)) - add_definitions(/DXMRIG_FEATURE_MSR) - add_definitions(/DXMRIG_FIX_RYZEN) - message("-- WITH_MSR=ON") + add_definitions(-DXMRIG_FEATURE_MSR -DXMRIG_FIX_RYZEN) if (XMRIG_OS_WIN) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/rx/RxFix_win.cpp src/hw/msr/Msr_win.cpp ) elseif (XMRIG_OS_LINUX) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/rx/RxFix_linux.cpp src/hw/msr/Msr_linux.cpp ) endif() - list(APPEND HEADERS_CRYPTO + list(APPEND HEADERS src/crypto/rx/RxFix.h src/crypto/rx/RxMsr.h src/hw/msr/Msr.h src/hw/msr/MsrItem.h ) - list(APPEND SOURCES_CRYPTO + list(APPEND SOURCES src/crypto/rx/RxMsr.cpp src/hw/msr/Msr.cpp src/hw/msr/MsrItem.cpp ) else() - remove_definitions(/DXMRIG_FEATURE_MSR) - remove_definitions(/DXMRIG_FIX_RYZEN) - message("-- WITH_MSR=OFF") + set(WITH_MSR OFF) endif() if (WITH_PROFILING) - add_definitions(/DXMRIG_FEATURE_PROFILING) + add_definitions(-DXMRIG_FEATURE_PROFILING) - list(APPEND HEADERS_CRYPTO src/crypto/rx/Profiler.h) - list(APPEND SOURCES_CRYPTO src/crypto/rx/Profiler.cpp) + list(APPEND HEADERS src/crypto/rx/Profiler.h) + list(APPEND SOURCES src/crypto/rx/Profiler.cpp) endif() -else() - remove_definitions(/DXMRIG_ALGO_RANDOMX) endif() + + +message(STATUS "WITH_MSR\t= ${WITH_MSR}") +message(STATUS "WITH_PROFILING\t= ${WITH_PROFILING}") diff --git a/src/3rdparty/fmt/posix.h b/src/3rdparty/fmt/posix.h deleted file mode 100644 index da19e9d5..00000000 --- a/src/3rdparty/fmt/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "os.h" -#warning "fmt/posix.h is deprecated; use fmt/os.h instead" diff --git a/src/backend/cpu/CpuBackend.cpp b/src/backend/cpu/CpuBackend.cpp index d5ada9ad..9b38ae24 100644 --- a/src/backend/cpu/CpuBackend.cpp +++ b/src/backend/cpu/CpuBackend.cpp @@ -27,7 +27,6 @@ #include "backend/common/Workers.h" #include "backend/cpu/Cpu.h" #include "base/io/log/Log.h" -#include "base/io/log/Tags.h" #include "base/net/stratum/Job.h" #include "base/tools/Chrono.h" #include "base/tools/String.h" @@ -104,13 +103,13 @@ public: inline void print() const { if (m_started == 0) { - LOG_ERR("%s " RED_BOLD("disabled") YELLOW(" (failed to start threads)"), Tags::cpu()); + LOG_ERR("%s " RED_BOLD("disabled") YELLOW(" (failed to start threads)"), cpu_tag()); return; } LOG_INFO("%s" GREEN_BOLD(" READY") " threads %s%zu/%zu (%zu)" CLEAR " huge pages %s%1.0f%% %zu/%zu" CLEAR " memory " CYAN_BOLD("%zu KB") BLACK_BOLD(" (%" PRIu64 " ms)"), - Tags::cpu(), + cpu_tag(), m_errors == 0 ? CYAN_BOLD_S : YELLOW_BOLD_S, m_started, m_threads, m_ways, (m_hugePages.isFullyAllocated() ? GREEN_BOLD_S : (m_hugePages.allocated == 0 ? RED_BOLD_S : YELLOW_BOLD_S)), @@ -142,7 +141,7 @@ public: inline void start() { LOG_INFO("%s use profile " BLUE_BG(WHITE_BOLD_S " %s ") WHITE_BOLD_S " (" CYAN_BOLD("%zu") WHITE_BOLD(" thread%s)") " scratchpad " CYAN_BOLD("%zu KB"), - Tags::cpu(), + cpu_tag(), profileName.data(), threads.size(), threads.size() > 1 ? "s" : "", @@ -228,13 +227,15 @@ const char *xmrig::backend_tag(uint32_t backend) } # endif - return Tags::cpu(); + return cpu_tag(); } const char *xmrig::cpu_tag() { - return Tags::cpu(); + static const char *tag = CYAN_BG_BOLD(WHITE_BOLD_S " cpu "); + + return tag; } @@ -294,7 +295,7 @@ void xmrig::CpuBackend::prepare(const Job &nextJob) if ((f == Algorithm::ARGON2) || (f == Algorithm::RANDOM_X)) { if (argon2::Impl::select(d_ptr->controller->config()->cpu().argon2Impl())) { LOG_INFO("%s use " WHITE_BOLD("argon2") " implementation " CSI "1;%dm" "%s", - Tags::cpu(), + cpu_tag(), argon2::Impl::name() == "default" ? 33 : 32, argon2::Impl::name().data() ); @@ -357,7 +358,7 @@ void xmrig::CpuBackend::setJob(const Job &job) d_ptr->profileName = cpu.threads().profileName(job.algorithm()); if (d_ptr->profileName.isNull() || threads.empty()) { - LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (no suitable configuration found)"), Tags::cpu()); + LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (no suitable configuration found)"), cpu_tag()); return stop(); } @@ -402,7 +403,7 @@ void xmrig::CpuBackend::stop() d_ptr->workers.stop(); d_ptr->threads.clear(); - LOG_INFO("%s" YELLOW(" stopped") BLACK_BOLD(" (%" PRIu64 " ms)"), Tags::cpu(), Chrono::steadyMSecs() - ts); + LOG_INFO("%s" YELLOW(" stopped") BLACK_BOLD(" (%" PRIu64 " ms)"), cpu_tag(), Chrono::steadyMSecs() - ts); } diff --git a/src/backend/cuda/CudaBackend.cpp b/src/backend/cuda/CudaBackend.cpp index 0ef59981..052c5963 100644 --- a/src/backend/cuda/CudaBackend.cpp +++ b/src/backend/cuda/CudaBackend.cpp @@ -32,7 +32,6 @@ #include "backend/cuda/wrappers/CudaDevice.h" #include "backend/cuda/wrappers/CudaLib.h" #include "base/io/log/Log.h" -#include "base/io/log/Tags.h" #include "base/net/stratum/Job.h" #include "base/tools/Chrono.h" #include "base/tools/String.h" @@ -106,13 +105,13 @@ public: inline void print() const { if (m_started == 0) { - LOG_ERR("%s " RED_BOLD("disabled") YELLOW(" (failed to start threads)"), Tags::nvidia()); + LOG_ERR("%s " RED_BOLD("disabled") YELLOW(" (failed to start threads)"), cuda_tag()); return; } LOG_INFO("%s" GREEN_BOLD(" READY") " threads " "%s%zu/%zu" BLACK_BOLD(" (%" PRIu64 " ms)"), - Tags::nvidia(), + cuda_tag(), m_errors == 0 ? CYAN_BOLD_S : YELLOW_BOLD_S, m_started, m_threads, @@ -209,7 +208,7 @@ public: inline void start(const Job &job) { LOG_INFO("%s use profile " BLUE_BG(WHITE_BOLD_S " %s ") WHITE_BOLD_S " (" CYAN_BOLD("%zu") WHITE_BOLD(" thread%s)") " scratchpad " CYAN_BOLD("%zu KB"), - Tags::nvidia(), + cuda_tag(), profileName.data(), threads.size(), threads.size() > 1 ? "s" : "", @@ -278,7 +277,7 @@ public: } LOG_INFO("%s" CYAN_BOLD(" #%u") YELLOW(" %s") MAGENTA_BOLD("%4uW") CSI "1;%um %2uC" CLEAR WHITE_BOLD("%s") "%s", - Tags::nvidia(), + cuda_tag(), device.index(), device.topology().toString().data(), health.power, @@ -309,7 +308,9 @@ public: const char *xmrig::cuda_tag() { - return Tags::nvidia(); + static const char *tag = GREEN_BG_BOLD(WHITE_BOLD_S " nvidia "); + + return tag; } @@ -449,7 +450,7 @@ void xmrig::CudaBackend::setJob(const Job &job) d_ptr->profileName = cuda.threads().profileName(job.algorithm()); if (d_ptr->profileName.isNull() || threads.empty()) { - LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (no suitable configuration found)"), Tags::nvidia()); + LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (no suitable configuration found)"), cuda_tag()); return stop(); } @@ -490,7 +491,7 @@ void xmrig::CudaBackend::stop() d_ptr->workers.stop(); d_ptr->threads.clear(); - LOG_INFO("%s" YELLOW(" stopped") BLACK_BOLD(" (%" PRIu64 " ms)"), Tags::nvidia(), Chrono::steadyMSecs() - ts); + LOG_INFO("%s" YELLOW(" stopped") BLACK_BOLD(" (%" PRIu64 " ms)"), cuda_tag(), Chrono::steadyMSecs() - ts); } diff --git a/src/backend/cuda/runners/CudaKawPowRunner.cpp b/src/backend/cuda/runners/CudaKawPowRunner.cpp index 7b8a7236..82f10565 100644 --- a/src/backend/cuda/runners/CudaKawPowRunner.cpp +++ b/src/backend/cuda/runners/CudaKawPowRunner.cpp @@ -18,10 +18,10 @@ #include "backend/cuda/runners/CudaKawPowRunner.h" #include "3rdparty/libethash/data_sizes.h" +#include "backend/common/Tags.h" #include "backend/cuda/CudaLaunchData.h" #include "backend/cuda/wrappers/CudaLib.h" #include "base/io/log/Log.h" -#include "base/io/log/Tags.h" #include "base/net/stratum/Job.h" #include "base/tools/Chrono.h" #include "crypto/kawpow/KPCache.h" @@ -61,12 +61,12 @@ bool xmrig::CudaKawPowRunner::set(const Job &job, uint8_t *blob) const bool result = CudaLib::kawPowPrepare(m_ctx, cache.data(), cache.size(), cache.l1_cache(), KPCache::dag_size(epoch), height, dag_sizes); if (!result) { - LOG_ERR("%s " YELLOW("KawPow") RED(" failed to initialize DAG: ") RED_BOLD("%s"), Tags::nvidia(), CudaLib::lastError(m_ctx)); + LOG_ERR("%s " YELLOW("KawPow") RED(" failed to initialize DAG: ") RED_BOLD("%s"), cuda_tag(), CudaLib::lastError(m_ctx)); } else { const int64_t dt = Chrono::steadyMSecs() - start_ms; if (dt > 1000) { - LOG_INFO("%s " YELLOW("KawPow") " DAG for epoch " WHITE_BOLD("%u") " calculated " BLACK_BOLD("(%" PRIu64 "ms)"), Tags::nvidia(), epoch, dt); + LOG_INFO("%s " YELLOW("KawPow") " DAG for epoch " WHITE_BOLD("%u") " calculated " BLACK_BOLD("(%" PRIu64 "ms)"), cuda_tag(), epoch, dt); } } diff --git a/src/backend/opencl/OclBackend.cpp b/src/backend/opencl/OclBackend.cpp index 18b8892a..f9a06361 100644 --- a/src/backend/opencl/OclBackend.cpp +++ b/src/backend/opencl/OclBackend.cpp @@ -34,7 +34,6 @@ #include "backend/opencl/wrappers/OclContext.h" #include "backend/opencl/wrappers/OclLib.h" #include "base/io/log/Log.h" -#include "base/io/log/Tags.h" #include "base/net/stratum/Job.h" #include "base/tools/Chrono.h" #include "base/tools/String.h" @@ -102,13 +101,13 @@ public: inline void print() const { if (m_started == 0) { - LOG_ERR("%s " RED_BOLD("disabled") YELLOW(" (failed to start threads)"), Tags::opencl()); + LOG_ERR("%s " RED_BOLD("disabled") YELLOW(" (failed to start threads)"), ocl_tag()); return; } LOG_INFO("%s" GREEN_BOLD(" READY") " threads " "%s%zu/%zu" BLACK_BOLD(" (%" PRIu64 " ms)"), - Tags::opencl(), + ocl_tag(), m_errors == 0 ? CYAN_BOLD_S : YELLOW_BOLD_S, m_started, m_threads, @@ -193,7 +192,7 @@ public: inline void start(const Job &job) { LOG_INFO("%s use profile " BLUE_BG(WHITE_BOLD_S " %s ") WHITE_BOLD_S " (" CYAN_BOLD("%zu") WHITE_BOLD(" thread%s)") " scratchpad " CYAN_BOLD("%zu KB"), - Tags::opencl(), + ocl_tag(), profileName.data(), threads.size(), threads.size() > 1 ? "s" : "", @@ -253,7 +252,7 @@ public: const auto health = AdlLib::health(device); LOG_INFO("%s" CYAN_BOLD(" #%u") YELLOW(" %s") MAGENTA_BOLD("%4uW") CSI "1;%um %2uC" CYAN_BOLD(" %4u") CYAN("RPM") WHITE_BOLD(" %u/%u") "MHz", - Tags::opencl(), + ocl_tag(), device.index(), device.topology().toString().data(), health.power, @@ -285,7 +284,9 @@ public: const char *xmrig::ocl_tag() { - return Tags::opencl(); + static const char *tag = MAGENTA_BG_BOLD(WHITE_BOLD_S " opencl "); + + return tag; } @@ -425,13 +426,13 @@ void xmrig::OclBackend::setJob(const Job &job) d_ptr->profileName = cl.threads().profileName(job.algorithm()); if (d_ptr->profileName.isNull() || threads.empty()) { - LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (no suitable configuration found)"), Tags::opencl()); + LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (no suitable configuration found)"), ocl_tag()); return stop(); } if (!d_ptr->context.init(d_ptr->devices, threads)) { - LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (OpenCL context unavailable)"), Tags::opencl()); + LOG_WARN("%s " RED_BOLD("disabled") YELLOW(" (OpenCL context unavailable)"), ocl_tag()); return stop(); } @@ -474,7 +475,7 @@ void xmrig::OclBackend::stop() OclSharedState::release(); - LOG_INFO("%s" YELLOW(" stopped") BLACK_BOLD(" (%" PRIu64 " ms)"), Tags::opencl(), Chrono::steadyMSecs() - ts); + LOG_INFO("%s" YELLOW(" stopped") BLACK_BOLD(" (%" PRIu64 " ms)"), ocl_tag(), Chrono::steadyMSecs() - ts); } diff --git a/src/backend/opencl/runners/OclKawPowRunner.cpp b/src/backend/opencl/runners/OclKawPowRunner.cpp index 275e3f9a..35288a48 100644 --- a/src/backend/opencl/runners/OclKawPowRunner.cpp +++ b/src/backend/opencl/runners/OclKawPowRunner.cpp @@ -26,7 +26,6 @@ #include "backend/opencl/wrappers/OclLib.h" #include "base/io/log/Log.h" #include "base/io/log/Log.h" -#include "base/io/log/Tags.h" #include "base/net/stratum/Job.h" #include "base/tools/Chrono.h" #include "crypto/common/VirtualMemory.h" @@ -159,7 +158,7 @@ void OclKawPowRunner::set(const Job &job, uint8_t *blob) OclLib::finish(m_queue); - LOG_INFO("%s " YELLOW("KawPow") " DAG for epoch " WHITE_BOLD("%u") " calculated " BLACK_BOLD("(%" PRIu64 "ms)"), Tags::opencl(), epoch, Chrono::steadyMSecs() - start_ms); + LOG_INFO("%s " YELLOW("KawPow") " DAG for epoch " WHITE_BOLD("%u") " calculated " BLACK_BOLD("(%" PRIu64 "ms)"), ocl_tag(), epoch, Chrono::steadyMSecs() - start_ms); } const uint64_t target = job.target(); diff --git a/src/backend/opencl/runners/tools/OclKawPow.cpp b/src/backend/opencl/runners/tools/OclKawPow.cpp index 40b2b979..e8e39c28 100644 --- a/src/backend/opencl/runners/tools/OclKawPow.cpp +++ b/src/backend/opencl/runners/tools/OclKawPow.cpp @@ -19,6 +19,7 @@ #include "backend/opencl/runners/tools/OclKawPow.h" #include "3rdparty/libethash/data_sizes.h" #include "3rdparty/libethash/ethash_internal.h" +#include "backend/common/Tags.h" #include "backend/opencl/cl/kawpow/kawpow_cl.h" #include "backend/opencl/interfaces/IOclRunner.h" #include "backend/opencl/OclCache.h" @@ -27,7 +28,6 @@ #include "backend/opencl/wrappers/OclError.h" #include "backend/opencl/wrappers/OclLib.h" #include "base/io/log/Log.h" -#include "base/io/log/Tags.h" #include "base/tools/Baton.h" #include "base/tools/Chrono.h" #include "crypto/kawpow/KPHash.h" @@ -202,7 +202,7 @@ public: return nullptr; } - LOG_INFO("%s " YELLOW("KawPow") " program for period " WHITE_BOLD("%" PRIu64) " compiled " BLACK_BOLD("(%" PRIu64 "ms)"), Tags::opencl(), period, Chrono::steadyMSecs() - ts); + LOG_INFO("%s " YELLOW("KawPow") " program for period " WHITE_BOLD("%" PRIu64) " compiled " BLACK_BOLD("(%" PRIu64 "ms)"), ocl_tag(), period, Chrono::steadyMSecs() - ts); cache.add(runner.algorithm(), period, worksize, runner.deviceIndex(), program, kernel); diff --git a/src/3rdparty/cryptonote/LICENSE b/src/base/3rdparty/cryptonote/LICENSE similarity index 100% rename from src/3rdparty/cryptonote/LICENSE rename to src/base/3rdparty/cryptonote/LICENSE diff --git a/src/3rdparty/cryptonote/crypto-ops-data.c b/src/base/3rdparty/cryptonote/crypto-ops-data.c similarity index 100% rename from src/3rdparty/cryptonote/crypto-ops-data.c rename to src/base/3rdparty/cryptonote/crypto-ops-data.c diff --git a/src/3rdparty/cryptonote/crypto-ops.c b/src/base/3rdparty/cryptonote/crypto-ops.c similarity index 100% rename from src/3rdparty/cryptonote/crypto-ops.c rename to src/base/3rdparty/cryptonote/crypto-ops.c diff --git a/src/3rdparty/cryptonote/crypto-ops.h b/src/base/3rdparty/cryptonote/crypto-ops.h similarity index 100% rename from src/3rdparty/cryptonote/crypto-ops.h rename to src/base/3rdparty/cryptonote/crypto-ops.h diff --git a/src/3rdparty/epee/LICENSE.txt b/src/base/3rdparty/epee/LICENSE.txt similarity index 100% rename from src/3rdparty/epee/LICENSE.txt rename to src/base/3rdparty/epee/LICENSE.txt diff --git a/src/3rdparty/epee/README.md b/src/base/3rdparty/epee/README.md similarity index 100% rename from src/3rdparty/epee/README.md rename to src/base/3rdparty/epee/README.md diff --git a/src/3rdparty/epee/span.h b/src/base/3rdparty/epee/span.h similarity index 100% rename from src/3rdparty/epee/span.h rename to src/base/3rdparty/epee/span.h diff --git a/src/3rdparty/fmt/LICENSE.rst b/src/base/3rdparty/fmt/LICENSE.rst similarity index 100% rename from src/3rdparty/fmt/LICENSE.rst rename to src/base/3rdparty/fmt/LICENSE.rst diff --git a/src/3rdparty/fmt/README.rst b/src/base/3rdparty/fmt/README.rst similarity index 100% rename from src/3rdparty/fmt/README.rst rename to src/base/3rdparty/fmt/README.rst diff --git a/src/3rdparty/fmt/args.h b/src/base/3rdparty/fmt/args.h similarity index 100% rename from src/3rdparty/fmt/args.h rename to src/base/3rdparty/fmt/args.h diff --git a/src/3rdparty/fmt/chrono.h b/src/base/3rdparty/fmt/chrono.h similarity index 100% rename from src/3rdparty/fmt/chrono.h rename to src/base/3rdparty/fmt/chrono.h diff --git a/src/3rdparty/fmt/color.h b/src/base/3rdparty/fmt/color.h similarity index 100% rename from src/3rdparty/fmt/color.h rename to src/base/3rdparty/fmt/color.h diff --git a/src/3rdparty/fmt/compile.h b/src/base/3rdparty/fmt/compile.h similarity index 100% rename from src/3rdparty/fmt/compile.h rename to src/base/3rdparty/fmt/compile.h diff --git a/src/3rdparty/fmt/core.h b/src/base/3rdparty/fmt/core.h similarity index 100% rename from src/3rdparty/fmt/core.h rename to src/base/3rdparty/fmt/core.h diff --git a/src/3rdparty/fmt/format-inl.h b/src/base/3rdparty/fmt/format-inl.h similarity index 100% rename from src/3rdparty/fmt/format-inl.h rename to src/base/3rdparty/fmt/format-inl.h diff --git a/src/3rdparty/fmt/format.cc b/src/base/3rdparty/fmt/format.cc similarity index 100% rename from src/3rdparty/fmt/format.cc rename to src/base/3rdparty/fmt/format.cc diff --git a/src/3rdparty/fmt/format.h b/src/base/3rdparty/fmt/format.h similarity index 100% rename from src/3rdparty/fmt/format.h rename to src/base/3rdparty/fmt/format.h diff --git a/src/3rdparty/fmt/locale.h b/src/base/3rdparty/fmt/locale.h similarity index 100% rename from src/3rdparty/fmt/locale.h rename to src/base/3rdparty/fmt/locale.h diff --git a/src/3rdparty/fmt/os.cc b/src/base/3rdparty/fmt/os.cc similarity index 100% rename from src/3rdparty/fmt/os.cc rename to src/base/3rdparty/fmt/os.cc diff --git a/src/3rdparty/fmt/os.h b/src/base/3rdparty/fmt/os.h similarity index 100% rename from src/3rdparty/fmt/os.h rename to src/base/3rdparty/fmt/os.h diff --git a/src/3rdparty/fmt/ostream.h b/src/base/3rdparty/fmt/ostream.h similarity index 100% rename from src/3rdparty/fmt/ostream.h rename to src/base/3rdparty/fmt/ostream.h diff --git a/src/3rdparty/fmt/printf.h b/src/base/3rdparty/fmt/printf.h similarity index 100% rename from src/3rdparty/fmt/printf.h rename to src/base/3rdparty/fmt/printf.h diff --git a/src/3rdparty/fmt/ranges.h b/src/base/3rdparty/fmt/ranges.h similarity index 100% rename from src/3rdparty/fmt/ranges.h rename to src/base/3rdparty/fmt/ranges.h diff --git a/src/3rdparty/fmt/xchar.h b/src/base/3rdparty/fmt/xchar.h similarity index 100% rename from src/3rdparty/fmt/xchar.h rename to src/base/3rdparty/fmt/xchar.h diff --git a/src/3rdparty/hwloc/AUTHORS b/src/base/3rdparty/hwloc/AUTHORS similarity index 100% rename from src/3rdparty/hwloc/AUTHORS rename to src/base/3rdparty/hwloc/AUTHORS diff --git a/src/3rdparty/hwloc/CMakeLists.txt b/src/base/3rdparty/hwloc/CMakeLists.txt similarity index 100% rename from src/3rdparty/hwloc/CMakeLists.txt rename to src/base/3rdparty/hwloc/CMakeLists.txt diff --git a/src/3rdparty/hwloc/COPYING b/src/base/3rdparty/hwloc/COPYING similarity index 100% rename from src/3rdparty/hwloc/COPYING rename to src/base/3rdparty/hwloc/COPYING diff --git a/src/3rdparty/hwloc/NEWS b/src/base/3rdparty/hwloc/NEWS similarity index 100% rename from src/3rdparty/hwloc/NEWS rename to src/base/3rdparty/hwloc/NEWS diff --git a/src/3rdparty/hwloc/README b/src/base/3rdparty/hwloc/README similarity index 100% rename from src/3rdparty/hwloc/README rename to src/base/3rdparty/hwloc/README diff --git a/src/3rdparty/hwloc/VERSION b/src/base/3rdparty/hwloc/VERSION similarity index 100% rename from src/3rdparty/hwloc/VERSION rename to src/base/3rdparty/hwloc/VERSION diff --git a/src/3rdparty/hwloc/include/hwloc.h b/src/base/3rdparty/hwloc/include/hwloc.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc.h rename to src/base/3rdparty/hwloc/include/hwloc.h diff --git a/src/3rdparty/hwloc/include/hwloc/autogen/config.h b/src/base/3rdparty/hwloc/include/hwloc/autogen/config.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/autogen/config.h rename to src/base/3rdparty/hwloc/include/hwloc/autogen/config.h diff --git a/src/3rdparty/hwloc/include/hwloc/bitmap.h b/src/base/3rdparty/hwloc/include/hwloc/bitmap.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/bitmap.h rename to src/base/3rdparty/hwloc/include/hwloc/bitmap.h diff --git a/src/3rdparty/hwloc/include/hwloc/cpukinds.h b/src/base/3rdparty/hwloc/include/hwloc/cpukinds.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/cpukinds.h rename to src/base/3rdparty/hwloc/include/hwloc/cpukinds.h diff --git a/src/3rdparty/hwloc/include/hwloc/cuda.h b/src/base/3rdparty/hwloc/include/hwloc/cuda.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/cuda.h rename to src/base/3rdparty/hwloc/include/hwloc/cuda.h diff --git a/src/3rdparty/hwloc/include/hwloc/cudart.h b/src/base/3rdparty/hwloc/include/hwloc/cudart.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/cudart.h rename to src/base/3rdparty/hwloc/include/hwloc/cudart.h diff --git a/src/3rdparty/hwloc/include/hwloc/deprecated.h b/src/base/3rdparty/hwloc/include/hwloc/deprecated.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/deprecated.h rename to src/base/3rdparty/hwloc/include/hwloc/deprecated.h diff --git a/src/3rdparty/hwloc/include/hwloc/diff.h b/src/base/3rdparty/hwloc/include/hwloc/diff.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/diff.h rename to src/base/3rdparty/hwloc/include/hwloc/diff.h diff --git a/src/3rdparty/hwloc/include/hwloc/distances.h b/src/base/3rdparty/hwloc/include/hwloc/distances.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/distances.h rename to src/base/3rdparty/hwloc/include/hwloc/distances.h diff --git a/src/3rdparty/hwloc/include/hwloc/export.h b/src/base/3rdparty/hwloc/include/hwloc/export.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/export.h rename to src/base/3rdparty/hwloc/include/hwloc/export.h diff --git a/src/3rdparty/hwloc/include/hwloc/gl.h b/src/base/3rdparty/hwloc/include/hwloc/gl.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/gl.h rename to src/base/3rdparty/hwloc/include/hwloc/gl.h diff --git a/src/3rdparty/hwloc/include/hwloc/glibc-sched.h b/src/base/3rdparty/hwloc/include/hwloc/glibc-sched.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/glibc-sched.h rename to src/base/3rdparty/hwloc/include/hwloc/glibc-sched.h diff --git a/src/3rdparty/hwloc/include/hwloc/helper.h b/src/base/3rdparty/hwloc/include/hwloc/helper.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/helper.h rename to src/base/3rdparty/hwloc/include/hwloc/helper.h diff --git a/src/3rdparty/hwloc/include/hwloc/inlines.h b/src/base/3rdparty/hwloc/include/hwloc/inlines.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/inlines.h rename to src/base/3rdparty/hwloc/include/hwloc/inlines.h diff --git a/src/3rdparty/hwloc/include/hwloc/intel-mic.h b/src/base/3rdparty/hwloc/include/hwloc/intel-mic.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/intel-mic.h rename to src/base/3rdparty/hwloc/include/hwloc/intel-mic.h diff --git a/src/3rdparty/hwloc/include/hwloc/levelzero.h b/src/base/3rdparty/hwloc/include/hwloc/levelzero.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/levelzero.h rename to src/base/3rdparty/hwloc/include/hwloc/levelzero.h diff --git a/src/3rdparty/hwloc/include/hwloc/linux-libnuma.h b/src/base/3rdparty/hwloc/include/hwloc/linux-libnuma.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/linux-libnuma.h rename to src/base/3rdparty/hwloc/include/hwloc/linux-libnuma.h diff --git a/src/3rdparty/hwloc/include/hwloc/linux.h b/src/base/3rdparty/hwloc/include/hwloc/linux.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/linux.h rename to src/base/3rdparty/hwloc/include/hwloc/linux.h diff --git a/src/3rdparty/hwloc/include/hwloc/memattrs.h b/src/base/3rdparty/hwloc/include/hwloc/memattrs.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/memattrs.h rename to src/base/3rdparty/hwloc/include/hwloc/memattrs.h diff --git a/src/3rdparty/hwloc/include/hwloc/nvml.h b/src/base/3rdparty/hwloc/include/hwloc/nvml.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/nvml.h rename to src/base/3rdparty/hwloc/include/hwloc/nvml.h diff --git a/src/3rdparty/hwloc/include/hwloc/opencl.h b/src/base/3rdparty/hwloc/include/hwloc/opencl.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/opencl.h rename to src/base/3rdparty/hwloc/include/hwloc/opencl.h diff --git a/src/3rdparty/hwloc/include/hwloc/openfabrics-verbs.h b/src/base/3rdparty/hwloc/include/hwloc/openfabrics-verbs.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/openfabrics-verbs.h rename to src/base/3rdparty/hwloc/include/hwloc/openfabrics-verbs.h diff --git a/src/3rdparty/hwloc/include/hwloc/plugins.h b/src/base/3rdparty/hwloc/include/hwloc/plugins.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/plugins.h rename to src/base/3rdparty/hwloc/include/hwloc/plugins.h diff --git a/src/3rdparty/hwloc/include/hwloc/rename.h b/src/base/3rdparty/hwloc/include/hwloc/rename.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/rename.h rename to src/base/3rdparty/hwloc/include/hwloc/rename.h diff --git a/src/3rdparty/hwloc/include/hwloc/rsmi.h b/src/base/3rdparty/hwloc/include/hwloc/rsmi.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/rsmi.h rename to src/base/3rdparty/hwloc/include/hwloc/rsmi.h diff --git a/src/3rdparty/hwloc/include/hwloc/shmem.h b/src/base/3rdparty/hwloc/include/hwloc/shmem.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/shmem.h rename to src/base/3rdparty/hwloc/include/hwloc/shmem.h diff --git a/src/3rdparty/hwloc/include/hwloc/windows.h b/src/base/3rdparty/hwloc/include/hwloc/windows.h similarity index 100% rename from src/3rdparty/hwloc/include/hwloc/windows.h rename to src/base/3rdparty/hwloc/include/hwloc/windows.h diff --git a/src/3rdparty/hwloc/include/private/autogen/config.h b/src/base/3rdparty/hwloc/include/private/autogen/config.h similarity index 100% rename from src/3rdparty/hwloc/include/private/autogen/config.h rename to src/base/3rdparty/hwloc/include/private/autogen/config.h diff --git a/src/3rdparty/hwloc/include/private/components.h b/src/base/3rdparty/hwloc/include/private/components.h similarity index 100% rename from src/3rdparty/hwloc/include/private/components.h rename to src/base/3rdparty/hwloc/include/private/components.h diff --git a/src/3rdparty/hwloc/include/private/cpuid-x86.h b/src/base/3rdparty/hwloc/include/private/cpuid-x86.h similarity index 100% rename from src/3rdparty/hwloc/include/private/cpuid-x86.h rename to src/base/3rdparty/hwloc/include/private/cpuid-x86.h diff --git a/src/3rdparty/hwloc/include/private/debug.h b/src/base/3rdparty/hwloc/include/private/debug.h similarity index 100% rename from src/3rdparty/hwloc/include/private/debug.h rename to src/base/3rdparty/hwloc/include/private/debug.h diff --git a/src/3rdparty/hwloc/include/private/internal-components.h b/src/base/3rdparty/hwloc/include/private/internal-components.h similarity index 100% rename from src/3rdparty/hwloc/include/private/internal-components.h rename to src/base/3rdparty/hwloc/include/private/internal-components.h diff --git a/src/3rdparty/hwloc/include/private/misc.h b/src/base/3rdparty/hwloc/include/private/misc.h similarity index 100% rename from src/3rdparty/hwloc/include/private/misc.h rename to src/base/3rdparty/hwloc/include/private/misc.h diff --git a/src/3rdparty/hwloc/include/private/netloc.h b/src/base/3rdparty/hwloc/include/private/netloc.h similarity index 100% rename from src/3rdparty/hwloc/include/private/netloc.h rename to src/base/3rdparty/hwloc/include/private/netloc.h diff --git a/src/3rdparty/hwloc/include/private/private.h b/src/base/3rdparty/hwloc/include/private/private.h similarity index 100% rename from src/3rdparty/hwloc/include/private/private.h rename to src/base/3rdparty/hwloc/include/private/private.h diff --git a/src/3rdparty/hwloc/include/private/solaris-chiptype.h b/src/base/3rdparty/hwloc/include/private/solaris-chiptype.h similarity index 100% rename from src/3rdparty/hwloc/include/private/solaris-chiptype.h rename to src/base/3rdparty/hwloc/include/private/solaris-chiptype.h diff --git a/src/3rdparty/hwloc/include/private/xml.h b/src/base/3rdparty/hwloc/include/private/xml.h similarity index 100% rename from src/3rdparty/hwloc/include/private/xml.h rename to src/base/3rdparty/hwloc/include/private/xml.h diff --git a/src/3rdparty/hwloc/src/base64.c b/src/base/3rdparty/hwloc/src/base64.c similarity index 100% rename from src/3rdparty/hwloc/src/base64.c rename to src/base/3rdparty/hwloc/src/base64.c diff --git a/src/3rdparty/hwloc/src/bind.c b/src/base/3rdparty/hwloc/src/bind.c similarity index 100% rename from src/3rdparty/hwloc/src/bind.c rename to src/base/3rdparty/hwloc/src/bind.c diff --git a/src/3rdparty/hwloc/src/bitmap.c b/src/base/3rdparty/hwloc/src/bitmap.c similarity index 100% rename from src/3rdparty/hwloc/src/bitmap.c rename to src/base/3rdparty/hwloc/src/bitmap.c diff --git a/src/3rdparty/hwloc/src/components.c b/src/base/3rdparty/hwloc/src/components.c similarity index 100% rename from src/3rdparty/hwloc/src/components.c rename to src/base/3rdparty/hwloc/src/components.c diff --git a/src/3rdparty/hwloc/src/cpukinds.c b/src/base/3rdparty/hwloc/src/cpukinds.c similarity index 100% rename from src/3rdparty/hwloc/src/cpukinds.c rename to src/base/3rdparty/hwloc/src/cpukinds.c diff --git a/src/3rdparty/hwloc/src/diff.c b/src/base/3rdparty/hwloc/src/diff.c similarity index 100% rename from src/3rdparty/hwloc/src/diff.c rename to src/base/3rdparty/hwloc/src/diff.c diff --git a/src/3rdparty/hwloc/src/distances.c b/src/base/3rdparty/hwloc/src/distances.c similarity index 100% rename from src/3rdparty/hwloc/src/distances.c rename to src/base/3rdparty/hwloc/src/distances.c diff --git a/src/3rdparty/hwloc/src/memattrs.c b/src/base/3rdparty/hwloc/src/memattrs.c similarity index 100% rename from src/3rdparty/hwloc/src/memattrs.c rename to src/base/3rdparty/hwloc/src/memattrs.c diff --git a/src/3rdparty/hwloc/src/misc.c b/src/base/3rdparty/hwloc/src/misc.c similarity index 100% rename from src/3rdparty/hwloc/src/misc.c rename to src/base/3rdparty/hwloc/src/misc.c diff --git a/src/3rdparty/hwloc/src/pci-common.c b/src/base/3rdparty/hwloc/src/pci-common.c similarity index 100% rename from src/3rdparty/hwloc/src/pci-common.c rename to src/base/3rdparty/hwloc/src/pci-common.c diff --git a/src/3rdparty/hwloc/src/shmem.c b/src/base/3rdparty/hwloc/src/shmem.c similarity index 100% rename from src/3rdparty/hwloc/src/shmem.c rename to src/base/3rdparty/hwloc/src/shmem.c diff --git a/src/3rdparty/hwloc/src/static-components.h b/src/base/3rdparty/hwloc/src/static-components.h similarity index 100% rename from src/3rdparty/hwloc/src/static-components.h rename to src/base/3rdparty/hwloc/src/static-components.h diff --git a/src/3rdparty/hwloc/src/topology-noos.c b/src/base/3rdparty/hwloc/src/topology-noos.c similarity index 100% rename from src/3rdparty/hwloc/src/topology-noos.c rename to src/base/3rdparty/hwloc/src/topology-noos.c diff --git a/src/3rdparty/hwloc/src/topology-synthetic.c b/src/base/3rdparty/hwloc/src/topology-synthetic.c similarity index 100% rename from src/3rdparty/hwloc/src/topology-synthetic.c rename to src/base/3rdparty/hwloc/src/topology-synthetic.c diff --git a/src/3rdparty/hwloc/src/topology-windows.c b/src/base/3rdparty/hwloc/src/topology-windows.c similarity index 100% rename from src/3rdparty/hwloc/src/topology-windows.c rename to src/base/3rdparty/hwloc/src/topology-windows.c diff --git a/src/3rdparty/hwloc/src/topology-x86.c b/src/base/3rdparty/hwloc/src/topology-x86.c similarity index 100% rename from src/3rdparty/hwloc/src/topology-x86.c rename to src/base/3rdparty/hwloc/src/topology-x86.c diff --git a/src/3rdparty/hwloc/src/topology-xml-nolibxml.c b/src/base/3rdparty/hwloc/src/topology-xml-nolibxml.c similarity index 100% rename from src/3rdparty/hwloc/src/topology-xml-nolibxml.c rename to src/base/3rdparty/hwloc/src/topology-xml-nolibxml.c diff --git a/src/3rdparty/hwloc/src/topology-xml.c b/src/base/3rdparty/hwloc/src/topology-xml.c similarity index 100% rename from src/3rdparty/hwloc/src/topology-xml.c rename to src/base/3rdparty/hwloc/src/topology-xml.c diff --git a/src/3rdparty/hwloc/src/topology.c b/src/base/3rdparty/hwloc/src/topology.c similarity index 100% rename from src/3rdparty/hwloc/src/topology.c rename to src/base/3rdparty/hwloc/src/topology.c diff --git a/src/3rdparty/hwloc/src/traversal.c b/src/base/3rdparty/hwloc/src/traversal.c similarity index 100% rename from src/3rdparty/hwloc/src/traversal.c rename to src/base/3rdparty/hwloc/src/traversal.c diff --git a/src/3rdparty/libethash/CMakeLists.txt b/src/base/3rdparty/libethash/CMakeLists.txt similarity index 100% rename from src/3rdparty/libethash/CMakeLists.txt rename to src/base/3rdparty/libethash/CMakeLists.txt diff --git a/src/3rdparty/libethash/data_sizes.h b/src/base/3rdparty/libethash/data_sizes.h similarity index 100% rename from src/3rdparty/libethash/data_sizes.h rename to src/base/3rdparty/libethash/data_sizes.h diff --git a/src/3rdparty/libethash/endian.h b/src/base/3rdparty/libethash/endian.h similarity index 100% rename from src/3rdparty/libethash/endian.h rename to src/base/3rdparty/libethash/endian.h diff --git a/src/3rdparty/libethash/ethash.h b/src/base/3rdparty/libethash/ethash.h similarity index 100% rename from src/3rdparty/libethash/ethash.h rename to src/base/3rdparty/libethash/ethash.h diff --git a/src/3rdparty/libethash/ethash_internal.c b/src/base/3rdparty/libethash/ethash_internal.c similarity index 100% rename from src/3rdparty/libethash/ethash_internal.c rename to src/base/3rdparty/libethash/ethash_internal.c diff --git a/src/3rdparty/libethash/ethash_internal.h b/src/base/3rdparty/libethash/ethash_internal.h similarity index 100% rename from src/3rdparty/libethash/ethash_internal.h rename to src/base/3rdparty/libethash/ethash_internal.h diff --git a/src/3rdparty/libethash/fnv.h b/src/base/3rdparty/libethash/fnv.h similarity index 100% rename from src/3rdparty/libethash/fnv.h rename to src/base/3rdparty/libethash/fnv.h diff --git a/src/3rdparty/libethash/keccakf800.c b/src/base/3rdparty/libethash/keccakf800.c similarity index 100% rename from src/3rdparty/libethash/keccakf800.c rename to src/base/3rdparty/libethash/keccakf800.c diff --git a/src/3rdparty/llhttp/LICENSE-MIT b/src/base/3rdparty/llhttp/LICENSE-MIT similarity index 100% rename from src/3rdparty/llhttp/LICENSE-MIT rename to src/base/3rdparty/llhttp/LICENSE-MIT diff --git a/src/3rdparty/llhttp/README.md b/src/base/3rdparty/llhttp/README.md similarity index 100% rename from src/3rdparty/llhttp/README.md rename to src/base/3rdparty/llhttp/README.md diff --git a/src/3rdparty/llhttp/api.c b/src/base/3rdparty/llhttp/api.c similarity index 100% rename from src/3rdparty/llhttp/api.c rename to src/base/3rdparty/llhttp/api.c diff --git a/src/3rdparty/llhttp/api.h b/src/base/3rdparty/llhttp/api.h similarity index 100% rename from src/3rdparty/llhttp/api.h rename to src/base/3rdparty/llhttp/api.h diff --git a/src/3rdparty/llhttp/http.c b/src/base/3rdparty/llhttp/http.c similarity index 100% rename from src/3rdparty/llhttp/http.c rename to src/base/3rdparty/llhttp/http.c diff --git a/src/3rdparty/llhttp/llhttp.c b/src/base/3rdparty/llhttp/llhttp.c similarity index 100% rename from src/3rdparty/llhttp/llhttp.c rename to src/base/3rdparty/llhttp/llhttp.c diff --git a/src/3rdparty/llhttp/llhttp.h b/src/base/3rdparty/llhttp/llhttp.h similarity index 100% rename from src/3rdparty/llhttp/llhttp.h rename to src/base/3rdparty/llhttp/llhttp.h diff --git a/src/3rdparty/rapidjson/allocators.h b/src/base/3rdparty/rapidjson/allocators.h similarity index 100% rename from src/3rdparty/rapidjson/allocators.h rename to src/base/3rdparty/rapidjson/allocators.h diff --git a/src/3rdparty/rapidjson/cursorstreamwrapper.h b/src/base/3rdparty/rapidjson/cursorstreamwrapper.h similarity index 100% rename from src/3rdparty/rapidjson/cursorstreamwrapper.h rename to src/base/3rdparty/rapidjson/cursorstreamwrapper.h diff --git a/src/3rdparty/rapidjson/document.h b/src/base/3rdparty/rapidjson/document.h similarity index 100% rename from src/3rdparty/rapidjson/document.h rename to src/base/3rdparty/rapidjson/document.h diff --git a/src/3rdparty/rapidjson/encodedstream.h b/src/base/3rdparty/rapidjson/encodedstream.h similarity index 100% rename from src/3rdparty/rapidjson/encodedstream.h rename to src/base/3rdparty/rapidjson/encodedstream.h diff --git a/src/3rdparty/rapidjson/encodings.h b/src/base/3rdparty/rapidjson/encodings.h similarity index 100% rename from src/3rdparty/rapidjson/encodings.h rename to src/base/3rdparty/rapidjson/encodings.h diff --git a/src/3rdparty/rapidjson/error/en.h b/src/base/3rdparty/rapidjson/error/en.h similarity index 100% rename from src/3rdparty/rapidjson/error/en.h rename to src/base/3rdparty/rapidjson/error/en.h diff --git a/src/3rdparty/rapidjson/error/error.h b/src/base/3rdparty/rapidjson/error/error.h similarity index 100% rename from src/3rdparty/rapidjson/error/error.h rename to src/base/3rdparty/rapidjson/error/error.h diff --git a/src/3rdparty/rapidjson/filereadstream.h b/src/base/3rdparty/rapidjson/filereadstream.h similarity index 100% rename from src/3rdparty/rapidjson/filereadstream.h rename to src/base/3rdparty/rapidjson/filereadstream.h diff --git a/src/3rdparty/rapidjson/filewritestream.h b/src/base/3rdparty/rapidjson/filewritestream.h similarity index 100% rename from src/3rdparty/rapidjson/filewritestream.h rename to src/base/3rdparty/rapidjson/filewritestream.h diff --git a/src/3rdparty/rapidjson/fwd.h b/src/base/3rdparty/rapidjson/fwd.h similarity index 100% rename from src/3rdparty/rapidjson/fwd.h rename to src/base/3rdparty/rapidjson/fwd.h diff --git a/src/3rdparty/rapidjson/internal/biginteger.h b/src/base/3rdparty/rapidjson/internal/biginteger.h similarity index 100% rename from src/3rdparty/rapidjson/internal/biginteger.h rename to src/base/3rdparty/rapidjson/internal/biginteger.h diff --git a/src/3rdparty/rapidjson/internal/clzll.h b/src/base/3rdparty/rapidjson/internal/clzll.h similarity index 100% rename from src/3rdparty/rapidjson/internal/clzll.h rename to src/base/3rdparty/rapidjson/internal/clzll.h diff --git a/src/3rdparty/rapidjson/internal/diyfp.h b/src/base/3rdparty/rapidjson/internal/diyfp.h similarity index 100% rename from src/3rdparty/rapidjson/internal/diyfp.h rename to src/base/3rdparty/rapidjson/internal/diyfp.h diff --git a/src/3rdparty/rapidjson/internal/dtoa.h b/src/base/3rdparty/rapidjson/internal/dtoa.h similarity index 100% rename from src/3rdparty/rapidjson/internal/dtoa.h rename to src/base/3rdparty/rapidjson/internal/dtoa.h diff --git a/src/3rdparty/rapidjson/internal/ieee754.h b/src/base/3rdparty/rapidjson/internal/ieee754.h similarity index 100% rename from src/3rdparty/rapidjson/internal/ieee754.h rename to src/base/3rdparty/rapidjson/internal/ieee754.h diff --git a/src/3rdparty/rapidjson/internal/itoa.h b/src/base/3rdparty/rapidjson/internal/itoa.h similarity index 100% rename from src/3rdparty/rapidjson/internal/itoa.h rename to src/base/3rdparty/rapidjson/internal/itoa.h diff --git a/src/3rdparty/rapidjson/internal/meta.h b/src/base/3rdparty/rapidjson/internal/meta.h similarity index 100% rename from src/3rdparty/rapidjson/internal/meta.h rename to src/base/3rdparty/rapidjson/internal/meta.h diff --git a/src/3rdparty/rapidjson/internal/pow10.h b/src/base/3rdparty/rapidjson/internal/pow10.h similarity index 100% rename from src/3rdparty/rapidjson/internal/pow10.h rename to src/base/3rdparty/rapidjson/internal/pow10.h diff --git a/src/3rdparty/rapidjson/internal/regex.h b/src/base/3rdparty/rapidjson/internal/regex.h similarity index 100% rename from src/3rdparty/rapidjson/internal/regex.h rename to src/base/3rdparty/rapidjson/internal/regex.h diff --git a/src/3rdparty/rapidjson/internal/stack.h b/src/base/3rdparty/rapidjson/internal/stack.h similarity index 100% rename from src/3rdparty/rapidjson/internal/stack.h rename to src/base/3rdparty/rapidjson/internal/stack.h diff --git a/src/3rdparty/rapidjson/internal/strfunc.h b/src/base/3rdparty/rapidjson/internal/strfunc.h similarity index 100% rename from src/3rdparty/rapidjson/internal/strfunc.h rename to src/base/3rdparty/rapidjson/internal/strfunc.h diff --git a/src/3rdparty/rapidjson/internal/strtod.h b/src/base/3rdparty/rapidjson/internal/strtod.h similarity index 100% rename from src/3rdparty/rapidjson/internal/strtod.h rename to src/base/3rdparty/rapidjson/internal/strtod.h diff --git a/src/3rdparty/rapidjson/internal/swap.h b/src/base/3rdparty/rapidjson/internal/swap.h similarity index 100% rename from src/3rdparty/rapidjson/internal/swap.h rename to src/base/3rdparty/rapidjson/internal/swap.h diff --git a/src/3rdparty/rapidjson/istreamwrapper.h b/src/base/3rdparty/rapidjson/istreamwrapper.h similarity index 100% rename from src/3rdparty/rapidjson/istreamwrapper.h rename to src/base/3rdparty/rapidjson/istreamwrapper.h diff --git a/src/3rdparty/rapidjson/license.txt b/src/base/3rdparty/rapidjson/license.txt similarity index 100% rename from src/3rdparty/rapidjson/license.txt rename to src/base/3rdparty/rapidjson/license.txt diff --git a/src/3rdparty/rapidjson/memorybuffer.h b/src/base/3rdparty/rapidjson/memorybuffer.h similarity index 100% rename from src/3rdparty/rapidjson/memorybuffer.h rename to src/base/3rdparty/rapidjson/memorybuffer.h diff --git a/src/3rdparty/rapidjson/memorystream.h b/src/base/3rdparty/rapidjson/memorystream.h similarity index 100% rename from src/3rdparty/rapidjson/memorystream.h rename to src/base/3rdparty/rapidjson/memorystream.h diff --git a/src/3rdparty/rapidjson/msinttypes/inttypes.h b/src/base/3rdparty/rapidjson/msinttypes/inttypes.h similarity index 100% rename from src/3rdparty/rapidjson/msinttypes/inttypes.h rename to src/base/3rdparty/rapidjson/msinttypes/inttypes.h diff --git a/src/3rdparty/rapidjson/msinttypes/stdint.h b/src/base/3rdparty/rapidjson/msinttypes/stdint.h similarity index 100% rename from src/3rdparty/rapidjson/msinttypes/stdint.h rename to src/base/3rdparty/rapidjson/msinttypes/stdint.h diff --git a/src/3rdparty/rapidjson/ostreamwrapper.h b/src/base/3rdparty/rapidjson/ostreamwrapper.h similarity index 100% rename from src/3rdparty/rapidjson/ostreamwrapper.h rename to src/base/3rdparty/rapidjson/ostreamwrapper.h diff --git a/src/3rdparty/rapidjson/pointer.h b/src/base/3rdparty/rapidjson/pointer.h similarity index 100% rename from src/3rdparty/rapidjson/pointer.h rename to src/base/3rdparty/rapidjson/pointer.h diff --git a/src/3rdparty/rapidjson/prettywriter.h b/src/base/3rdparty/rapidjson/prettywriter.h similarity index 100% rename from src/3rdparty/rapidjson/prettywriter.h rename to src/base/3rdparty/rapidjson/prettywriter.h diff --git a/src/3rdparty/rapidjson/rapidjson.h b/src/base/3rdparty/rapidjson/rapidjson.h similarity index 100% rename from src/3rdparty/rapidjson/rapidjson.h rename to src/base/3rdparty/rapidjson/rapidjson.h diff --git a/src/3rdparty/rapidjson/reader.h b/src/base/3rdparty/rapidjson/reader.h similarity index 100% rename from src/3rdparty/rapidjson/reader.h rename to src/base/3rdparty/rapidjson/reader.h diff --git a/src/3rdparty/rapidjson/readme.md b/src/base/3rdparty/rapidjson/readme.md similarity index 100% rename from src/3rdparty/rapidjson/readme.md rename to src/base/3rdparty/rapidjson/readme.md diff --git a/src/3rdparty/rapidjson/schema.h b/src/base/3rdparty/rapidjson/schema.h similarity index 100% rename from src/3rdparty/rapidjson/schema.h rename to src/base/3rdparty/rapidjson/schema.h diff --git a/src/3rdparty/rapidjson/stream.h b/src/base/3rdparty/rapidjson/stream.h similarity index 100% rename from src/3rdparty/rapidjson/stream.h rename to src/base/3rdparty/rapidjson/stream.h diff --git a/src/3rdparty/rapidjson/stringbuffer.h b/src/base/3rdparty/rapidjson/stringbuffer.h similarity index 100% rename from src/3rdparty/rapidjson/stringbuffer.h rename to src/base/3rdparty/rapidjson/stringbuffer.h diff --git a/src/3rdparty/rapidjson/uri.h b/src/base/3rdparty/rapidjson/uri.h similarity index 100% rename from src/3rdparty/rapidjson/uri.h rename to src/base/3rdparty/rapidjson/uri.h diff --git a/src/3rdparty/rapidjson/writer.h b/src/base/3rdparty/rapidjson/writer.h similarity index 100% rename from src/3rdparty/rapidjson/writer.h rename to src/base/3rdparty/rapidjson/writer.h diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt new file mode 100644 index 00000000..ecff388c --- /dev/null +++ b/src/base/CMakeLists.txt @@ -0,0 +1,345 @@ +cmake_minimum_required(VERSION 3.1) +project(base LANGUAGES C CXX) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +find_package(UV REQUIRED) +include_directories(${UV_INCLUDE_DIR}) +set(LIBS ${UV_LIBRARIES}) + +set(HEADERS + 3rdparty/epee/span.h + crypto/Algorithm.h + crypto/Coin.h + crypto/keccak.h + crypto/sha3.h + io/Async.h + io/Console.h + io/Env.h + io/json/Json.h + io/json/JsonChain.h + io/json/JsonRequest.h + io/log/backends/ConsoleLog.h + io/log/backends/FileLog.h + io/log/FileLogWriter.h + io/log/Log.h + io/log/Tags.h + io/Signals.h + io/Watcher.h + kernel/Base.h + kernel/config/BaseConfig.h + kernel/config/BaseTransform.h + kernel/config/Title.h + kernel/constants.h + kernel/Entry.h + kernel/interfaces/IAsyncListener.h + kernel/interfaces/IBaseListener.h + kernel/interfaces/IClient.h + kernel/interfaces/IClientListener.h + kernel/interfaces/IConfig.h + kernel/interfaces/IConfigListener.h + kernel/interfaces/IConsoleListener.h + kernel/interfaces/IDnsBackend.h + kernel/interfaces/IDnsListener.h + kernel/interfaces/IHttpListener.h + kernel/interfaces/IJsonReader.h + kernel/interfaces/ILineListener.h + kernel/interfaces/ILogBackend.h + kernel/interfaces/ISignalListener.h + kernel/interfaces/IStrategy.h + kernel/interfaces/IStrategyListener.h + kernel/interfaces/ITcpServerListener.h + kernel/interfaces/ITimerListener.h + kernel/interfaces/IWatcherListener.h + kernel/Platform.h + kernel/Process.h + kernel/Versions.h + net/dns/Dns.h + net/dns/DnsConfig.h + net/dns/DnsRecord.h + net/dns/DnsRecords.h + net/dns/DnsRequest.h + net/dns/DnsUvBackend.h + net/http/Http.h + net/stratum/BaseClient.h + net/stratum/Client.h + net/stratum/Job.h + net/stratum/NetworkState.h + net/stratum/Pool.h + net/stratum/Pools.h + net/stratum/ProxyUrl.h + net/stratum/Socks5.h + net/stratum/strategies/FailoverStrategy.h + net/stratum/strategies/SinglePoolStrategy.h + net/stratum/SubmitResult.h + net/stratum/Url.h + net/tools/LineReader.h + net/tools/MemPool.h + net/tools/NetBuffer.h + net/tools/Storage.h + tools/Arguments.h + tools/Baton.h + tools/bswap_64.h + tools/Buffer.h + tools/Chrono.h + tools/Cvt.h + tools/Handle.h + tools/Object.h + tools/Span.h + tools/String.h + tools/Timer.h + ) + +set(SOURCES + 3rdparty/fmt/format.cc + crypto/Algorithm.cpp + crypto/Coin.cpp + crypto/keccak.cpp + crypto/sha3.cpp + io/Async.cpp + io/Console.cpp + io/Env.cpp + io/json/Json.cpp + io/json/JsonChain.cpp + io/json/JsonRequest.cpp + io/log/backends/ConsoleLog.cpp + io/log/backends/FileLog.cpp + io/log/FileLogWriter.cpp + io/log/Log.cpp + io/log/Tags.cpp + io/Signals.cpp + io/Watcher.cpp + kernel/Base.cpp + kernel/config/BaseConfig.cpp + kernel/config/BaseTransform.cpp + kernel/config/Title.cpp + kernel/Entry.cpp + kernel/Platform.cpp + kernel/Process.cpp + kernel/Versions.cpp + net/dns/Dns.cpp + net/dns/DnsConfig.cpp + net/dns/DnsRecord.cpp + net/dns/DnsRecords.cpp + net/dns/DnsUvBackend.cpp + net/http/Http.cpp + net/stratum/BaseClient.cpp + net/stratum/Client.cpp + net/stratum/Job.cpp + net/stratum/NetworkState.cpp + net/stratum/Pool.cpp + net/stratum/Pools.cpp + net/stratum/ProxyUrl.cpp + net/stratum/Socks5.cpp + net/stratum/strategies/FailoverStrategy.cpp + net/stratum/strategies/SinglePoolStrategy.cpp + net/stratum/Url.cpp + net/tools/LineReader.cpp + net/tools/NetBuffer.cpp + tools/Arguments.cpp + tools/Cvt.cpp + tools/String.cpp + tools/Timer.cpp + ) + +if (XMRIG_OS_WIN) + list(APPEND SOURCES + io/json/Json_win.cpp + kernel/Platform_win.cpp + kernel/Process_win.cpp + ) + + list(APPEND LIBS ws2_32 psapi iphlpapi userenv) +elseif (XMRIG_OS_APPLE) + list(APPEND SOURCES + io/json/Json_unix.cpp + kernel/Platform_mac.cpp + kernel/Process_unix.cpp + ) + + find_library(IOKIT_LIBRARY IOKit) + find_library(CORESERVICES_LIBRARY CoreServices) + list(APPEND LIBS ${IOKIT_LIBRARY} ${CORESERVICES_LIBRARY}) +else() + list(APPEND SOURCES + io/json/Json_unix.cpp + kernel/Platform_unix.cpp + kernel/Process_unix.cpp + ) + + list(APPEND LIBS pthread) + + if (XMRIG_OS_ANDROID) + list(APPEND LIBS rt dl log) + elseif (XMRIG_OS_LINUX) + list(APPEND LIBS rt dl) + elseif (XMRIG_OS_FREEBSD) + list(APPEND LIBS kvm) + endif() +endif() + +if (HAVE_SYSLOG_H) + list(APPEND HEADERS io/log/backends/SysLog.h) + list(APPEND SOURCES io/log/backends/SysLog.cpp) +endif() + +if (WITH_HTTP) + list(APPEND HEADERS + 3rdparty/llhttp/llhttp.h + api/Api.h + api/Httpd.h + api/interfaces/IApiRequest.h + api/requests/ApiRequest.h + api/requests/HttpApiRequest.h + net/http/Fetch.h + net/http/HttpApiResponse.h + net/http/HttpClient.h + net/http/HttpContext.h + net/http/HttpData.h + net/http/HttpListener.h + net/http/HttpResponse.h + net/stratum/DaemonClient.h + net/stratum/SelfSelectClient.h + net/tools/TcpServer.h + ) + + list(APPEND SOURCES + 3rdparty/llhttp/api.c + 3rdparty/llhttp/http.c + 3rdparty/llhttp/llhttp.c + api/Api.cpp + api/Httpd.cpp + api/requests/ApiRequest.cpp + api/requests/HttpApiRequest.cpp + net/http/Fetch.cpp + net/http/HttpApiResponse.cpp + net/http/HttpClient.cpp + net/http/HttpContext.cpp + net/http/HttpData.cpp + net/http/HttpListener.cpp + net/http/HttpResponse.cpp + net/stratum/DaemonClient.cpp + net/stratum/SelfSelectClient.cpp + net/tools/TcpServer.cpp + ) +endif() + +if (WITH_TLS) + list(APPEND HEADERS + net/stratum/Tls.h + net/tls/ServerTls.h + net/tls/TlsConfig.h + net/tls/TlsContext.h + net/tls/TlsGen.h + ) + + list(APPEND SOURCES + net/stratum/Tls.cpp + net/tls/ServerTls.cpp + net/tls/TlsConfig.cpp + net/tls/TlsContext.cpp + net/tls/TlsGen.cpp + ) + + if (WITH_HTTP) + list(APPEND HEADERS + net/https/HttpsClient.h + net/https/HttpsContext.h + net/https/HttpsServer.h + ) + + list(APPEND SOURCES + net/https/HttpsClient.cpp + net/https/HttpsContext.cpp + net/https/HttpsServer.cpp + ) + endif() +endif() + +if (WITH_HTTP AND NOT WITH_TLS) + list(APPEND HEADERS net/http/HttpServer.h) + list(APPEND SOURCES net/http/HttpServer.cpp) +endif() + +if (WITH_CRYPTONOTE) + list(APPEND HEADERS + tools/cryptonote/BlobReader.h + tools/cryptonote/BlockTemplate.h + tools/cryptonote/umul128.h + tools/cryptonote/WalletAddress.h + ) + + list(APPEND SOURCES + tools/cryptonote/BlockTemplate.cpp + tools/cryptonote/WalletAddress.cpp + ) +endif() + +if (WITH_CRYPTO_OPS) + list(APPEND HEADERS + 3rdparty/cryptonote/crypto-ops.h + tools/cryptonote/Signatures.h + ) + + list(APPEND SOURCES + 3rdparty/cryptonote/crypto-ops.c + 3rdparty/cryptonote/crypto-ops-data.c + tools/cryptonote/Signatures.cpp + ) +endif() + +if (WITH_KAWPOW) + list(APPEND HEADERS + 3rdparty/libethash/endian.h + net/stratum/AutoClient.h + net/stratum/EthStratumClient.h + ) + + list(APPEND SOURCES + net/stratum/AutoClient.cpp + net/stratum/EthStratumClient.cpp + ) +endif() + +if (WITH_BENCHMARK) + list(APPEND HEADERS + net/stratum/benchmark/BenchClient.h + net/stratum/benchmark/BenchConfig.h + ) + + list(APPEND SOURCES + net/stratum/benchmark/BenchClient.cpp + net/stratum/benchmark/BenchConfig.cpp + ) +endif() + +if (WITH_HWLOC) + list(APPEND SOURCES kernel/Platform_hwloc.cpp) +endif() + +add_library(${PROJECT_NAME} ${HEADERS} ${SOURCES}) + +if (WITH_TLS) + target_include_directories(${PROJECT_NAME} PUBLIC ${OPENSSL_INCLUDE_DIR}) + list(INSERT LIBS 1 ${OPENSSL_LIBRARIES}) + + if (XMRIG_OS_WIN) + list(APPEND LIBS crypt32) + endif() +endif() + +if (WITH_HWLOC) + target_include_directories(${PROJECT_NAME} PUBLIC ${HWLOC_INCLUDE_DIR}) + list(APPEND LIBS ${HWLOC_LIBRARY}) +endif() + +if (WITH_SODIUM) + target_include_directories(${PROJECT_NAME} PUBLIC ${SODIUM_INCLUDE_DIRS}) + list(APPEND LIBS ${SODIUM_LIBRARIES}) +endif() + +target_link_libraries(${PROJECT_NAME} ${LIBS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ${UV_INCLUDE_DIR}) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/src) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/base/base.cmake b/src/base/base.cmake deleted file mode 100644 index 09138cea..00000000 --- a/src/base/base.cmake +++ /dev/null @@ -1,274 +0,0 @@ -set(HEADERS_BASE - src/3rdparty/epee/span.h - src/base/api/interfaces/IApiListener.h - src/base/crypto/Algorithm.h - src/base/crypto/Coin.h - src/base/crypto/keccak.h - src/base/crypto/sha3.h - src/base/io/Async.h - src/base/io/Console.h - src/base/io/Env.h - src/base/io/json/Json.h - src/base/io/json/JsonChain.h - src/base/io/json/JsonRequest.h - src/base/io/log/backends/ConsoleLog.h - src/base/io/log/backends/FileLog.h - src/base/io/log/FileLogWriter.h - src/base/io/log/Log.h - src/base/io/log/Tags.h - src/base/io/Signals.h - src/base/io/Watcher.h - src/base/kernel/Base.h - src/base/kernel/config/BaseConfig.h - src/base/kernel/config/BaseTransform.h - src/base/kernel/config/Title.h - src/base/kernel/constants.h - src/base/kernel/Entry.h - src/base/kernel/interfaces/IAsyncListener.h - src/base/kernel/interfaces/IBaseListener.h - src/base/kernel/interfaces/IClient.h - src/base/kernel/interfaces/IClientListener.h - src/base/kernel/interfaces/IConfig.h - src/base/kernel/interfaces/IConfigListener.h - src/base/kernel/interfaces/IConfigTransform.h - src/base/kernel/interfaces/IConsoleListener.h - src/base/kernel/interfaces/IDnsBackend.h - src/base/kernel/interfaces/IDnsListener.h - src/base/kernel/interfaces/ILineListener.h - src/base/kernel/interfaces/ILogBackend.h - src/base/kernel/interfaces/ISignalListener.h - src/base/kernel/interfaces/IStrategy.h - src/base/kernel/interfaces/IStrategyListener.h - src/base/kernel/interfaces/ITimerListener.h - src/base/kernel/interfaces/IWatcherListener.h - src/base/kernel/Platform.h - src/base/kernel/Process.h - src/base/net/dns/Dns.h - src/base/net/dns/DnsConfig.h - src/base/net/dns/DnsRecord.h - src/base/net/dns/DnsRecords.h - src/base/net/dns/DnsRequest.h - src/base/net/dns/DnsUvBackend.h - src/base/net/http/Http.h - src/base/net/http/HttpListener.h - src/base/net/stratum/BaseClient.h - src/base/net/stratum/Client.h - src/base/net/stratum/Job.h - src/base/net/stratum/NetworkState.h - src/base/net/stratum/Pool.h - src/base/net/stratum/Pools.h - src/base/net/stratum/ProxyUrl.h - src/base/net/stratum/Socks5.h - src/base/net/stratum/strategies/FailoverStrategy.h - src/base/net/stratum/strategies/SinglePoolStrategy.h - src/base/net/stratum/strategies/StrategyProxy.h - src/base/net/stratum/SubmitResult.h - src/base/net/stratum/Url.h - src/base/net/tools/LineReader.h - src/base/net/tools/MemPool.h - src/base/net/tools/NetBuffer.h - src/base/net/tools/Storage.h - src/base/tools/Arguments.h - src/base/tools/Baton.h - src/base/tools/bswap_64.h - src/base/tools/Buffer.h - src/base/tools/Chrono.h - src/base/tools/cryptonote/BlobReader.h - src/base/tools/cryptonote/BlockTemplate.h - src/3rdparty/cryptonote/crypto-ops.h - src/base/tools/cryptonote/Signatures.h - src/base/tools/cryptonote/umul128.h - src/base/tools/cryptonote/WalletAddress.h - src/base/tools/Cvt.h - src/base/tools/Handle.h - src/base/tools/Span.h - src/base/tools/String.h - src/base/tools/Timer.h - ) - -set(SOURCES_BASE - src/3rdparty/fmt/format.cc - src/base/crypto/Algorithm.cpp - src/base/crypto/Coin.cpp - src/base/crypto/keccak.cpp - src/base/crypto/sha3.cpp - src/base/io/Async.cpp - src/base/io/Console.cpp - src/base/io/Env.cpp - src/base/io/json/Json.cpp - src/base/io/json/JsonChain.cpp - src/base/io/json/JsonRequest.cpp - src/base/io/log/backends/ConsoleLog.cpp - src/base/io/log/backends/FileLog.cpp - src/base/io/log/FileLogWriter.cpp - src/base/io/log/Log.cpp - src/base/io/log/Tags.cpp - src/base/io/Signals.cpp - src/base/io/Watcher.cpp - src/base/kernel/Base.cpp - src/base/kernel/config/BaseConfig.cpp - src/base/kernel/config/BaseTransform.cpp - src/base/kernel/config/Title.cpp - src/base/kernel/Entry.cpp - src/base/kernel/Platform.cpp - src/base/kernel/Process.cpp - src/base/net/dns/Dns.cpp - src/base/net/dns/DnsConfig.cpp - src/base/net/dns/DnsRecord.cpp - src/base/net/dns/DnsRecords.cpp - src/base/net/dns/DnsUvBackend.cpp - src/base/net/http/Http.cpp - src/base/net/stratum/BaseClient.cpp - src/base/net/stratum/Client.cpp - src/base/net/stratum/Job.cpp - src/base/net/stratum/NetworkState.cpp - src/base/net/stratum/Pool.cpp - src/base/net/stratum/Pools.cpp - src/base/net/stratum/ProxyUrl.cpp - src/base/net/stratum/Socks5.cpp - src/base/net/stratum/strategies/FailoverStrategy.cpp - src/base/net/stratum/strategies/SinglePoolStrategy.cpp - src/base/net/stratum/Url.cpp - src/base/net/tools/LineReader.cpp - src/base/net/tools/NetBuffer.cpp - src/base/tools/Arguments.cpp - src/base/tools/cryptonote/BlockTemplate.cpp - src/3rdparty/cryptonote/crypto-ops-data.c - src/3rdparty/cryptonote/crypto-ops.c - src/base/tools/cryptonote/Signatures.cpp - src/base/tools/cryptonote/WalletAddress.cpp - src/base/tools/Cvt.cpp - src/base/tools/String.cpp - src/base/tools/Timer.cpp - ) - - -if (WIN32) - set(SOURCES_OS - src/base/io/json/Json_win.cpp - src/base/kernel/Platform_win.cpp - src/base/kernel/Process_win.cpp - ) -elseif (APPLE) - set(SOURCES_OS - src/base/io/json/Json_unix.cpp - src/base/kernel/Platform_mac.cpp - src/base/kernel/Process_unix.cpp - ) -else() - set(SOURCES_OS - src/base/io/json/Json_unix.cpp - src/base/kernel/Platform_unix.cpp - src/base/kernel/Process_unix.cpp - ) -endif() - - -if (WITH_HWLOC) - list(APPEND SOURCES_OS - src/base/kernel/Platform_hwloc.cpp - ) -endif() - - -if (NOT WIN32) - CHECK_INCLUDE_FILE (syslog.h HAVE_SYSLOG_H) - if (HAVE_SYSLOG_H) - add_definitions(/DHAVE_SYSLOG_H) - set(SOURCES_SYSLOG src/base/io/log/backends/SysLog.h src/base/io/log/backends/SysLog.cpp) - endif() -endif() - - -if (WITH_HTTP) - set(HEADERS_BASE_HTTP - src/3rdparty/llhttp/llhttp.h - src/base/api/Api.h - src/base/api/Httpd.h - src/base/api/interfaces/IApiRequest.h - src/base/api/requests/ApiRequest.h - src/base/api/requests/HttpApiRequest.h - src/base/kernel/interfaces/IHttpListener.h - src/base/kernel/interfaces/IJsonReader.h - src/base/kernel/interfaces/ITcpServerListener.h - src/base/net/http/Fetch.h - src/base/net/http/HttpApiResponse.h - src/base/net/http/HttpClient.h - src/base/net/http/HttpContext.h - src/base/net/http/HttpData.h - src/base/net/http/HttpResponse.h - src/base/net/stratum/DaemonClient.h - src/base/net/stratum/SelfSelectClient.h - src/base/net/tools/TcpServer.h - ) - - set(SOURCES_BASE_HTTP - src/3rdparty/llhttp/llhttp.c - src/3rdparty/llhttp/api.c - src/3rdparty/llhttp/http.c - src/base/api/Api.cpp - src/base/api/Httpd.cpp - src/base/api/requests/ApiRequest.cpp - src/base/api/requests/HttpApiRequest.cpp - src/base/net/http/Fetch.cpp - src/base/net/http/HttpApiResponse.cpp - src/base/net/http/HttpClient.cpp - src/base/net/http/HttpContext.cpp - src/base/net/http/HttpData.cpp - src/base/net/http/HttpListener.cpp - src/base/net/http/HttpResponse.cpp - src/base/net/stratum/DaemonClient.cpp - src/base/net/stratum/SelfSelectClient.cpp - src/base/net/tools/TcpServer.cpp - ) - - add_definitions(/DXMRIG_FEATURE_HTTP) - add_definitions(/DXMRIG_FEATURE_API) -else() - set(HEADERS_BASE_HTTP "") - set(SOURCES_BASE_HTTP "") - remove_definitions(/DXMRIG_FEATURE_HTTP) - remove_definitions(/DXMRIG_FEATURE_API) -endif() - - -if (WITH_ENV_VARS AND CMAKE_CXX_COMPILER_ID MATCHES GNU AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) - set(WITH_ENV_VARS OFF) -endif() - - -if (WITH_ENV_VARS) - add_definitions(/DXMRIG_FEATURE_ENV) -else() - remove_definitions(/DXMRIG_FEATURE_ENV) -endif() - - -if (WITH_KAWPOW) - list(APPEND HEADERS_BASE - src/base/net/stratum/AutoClient.h - src/base/net/stratum/EthStratumClient.h - ) - - list(APPEND SOURCES_BASE - src/base/net/stratum/AutoClient.cpp - src/base/net/stratum/EthStratumClient.cpp - ) -endif() - - -if (WITH_RANDOMX AND WITH_BENCHMARK) - add_definitions(/DXMRIG_FEATURE_BENCHMARK) - - list(APPEND HEADERS_BASE - src/base/net/stratum/benchmark/BenchClient.h - src/base/net/stratum/benchmark/BenchConfig.h - ) - - list(APPEND SOURCES_BASE - src/base/net/stratum/benchmark/BenchClient.cpp - src/base/net/stratum/benchmark/BenchConfig.cpp - ) -else() - remove_definitions(/DXMRIG_FEATURE_BENCHMARK) -endif() diff --git a/cmake/FindHWLOC.cmake b/src/base/cmake/FindHWLOC.cmake similarity index 100% rename from cmake/FindHWLOC.cmake rename to src/base/cmake/FindHWLOC.cmake diff --git a/src/base/cmake/FindSodium.cmake b/src/base/cmake/FindSodium.cmake new file mode 100644 index 00000000..b45570d7 --- /dev/null +++ b/src/base/cmake/FindSodium.cmake @@ -0,0 +1,25 @@ +find_path( + sodium_INCLUDE_DIR + NAMES sodium.h + PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS" + PATH_SUFFIXES "include" + NO_DEFAULT_PATH +) + +find_path(sodium_INCLUDE_DIR NAMES sodium.h) + +find_library( + sodium_LIBRARY + NAMES libsodium.a sodium libsodium + PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS" + PATH_SUFFIXES "lib" + NO_DEFAULT_PATH +) + +find_library(sodium_LIBRARY NAMES libsodium.a sodium libsodium) + +set(SODIUM_LIBRARIES ${sodium_LIBRARY}) +set(SODIUM_INCLUDE_DIRS ${sodium_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Sodium DEFAULT_MSG sodium_LIBRARY sodium_INCLUDE_DIR) diff --git a/cmake/FindUV.cmake b/src/base/cmake/FindUV.cmake similarity index 100% rename from cmake/FindUV.cmake rename to src/base/cmake/FindUV.cmake diff --git a/src/base/cmake/base.cmake b/src/base/cmake/base.cmake new file mode 100644 index 00000000..836509fd --- /dev/null +++ b/src/base/cmake/base.cmake @@ -0,0 +1,40 @@ +#option(WITH_HWLOC "Enable hwloc support" ON) +#option(WITH_TLS "Enable TLS (Transport Layer Security) support" ON) +#option(WITH_HTTP "Enable HTTP protocol support (client/server)" ON) +#option(WITH_SODIUM "Enable libsodium support" ON) +#option(WITH_DEBUG_LOG "Enable debug log output" OFF) +#option(WITH_CRYPTONOTE "Enable basic CryptoNote tools (block template and wallet address parsers)" ON) +#option(WITH_CRYPTO_OPS "Enable miner signatures support (Wownero)" ON) +#option(WITH_CN_LITE "Enable CryptoNight-Lite algorithms family" ON) +#option(WITH_CN_HEAVY "Enable CryptoNight-Heavy algorithms family" ON) +#option(WITH_CN_PICO "Enable CryptoNight-Pico algorithm" ON) +#option(WITH_CN_FEMTO "Enable CryptoNight-UPX2 algorithm" ON) +#option(WITH_RANDOMX "Enable RandomX algorithms family" ON) +#option(WITH_ARGON2 "Enable Argon2 algorithms family" ON) +#option(WITH_ASTROBWT "Enable AstroBWT algorithms family" ON) +#option(WITH_KAWPOW "Enable KawPow algorithms family" ON) +#option(WITH_ENV_VARS "Enable environment variables support in config file" ON) +#option(WITH_BENCHMARK "Enable builtin RandomX benchmark and stress test" OFF) +#option(WITH_SECURE_JIT "Enable secure access to JIT memory" OFF) +#option(BUILD_STATIC "Build static binary" OFF) +#option(HWLOC_DEBUG "Enable hwloc debug helpers and log" OFF) + +add_definitions(-D__STDC_FORMAT_MACROS -DUNICODE -D_FILE_OFFSET_BITS=64 -DXMRIG_JSON_SINGLE_LINE_ARRAY) + +if (WITH_DEBUG_LOG) + add_definitions(-DAPP_DEBUG) +endif() + +include(CheckIncludeFile) +include(cpu) +include(os) +include(flags) +include(option/tls) +include(option/http) +include(option/hwloc) +include(option/sodium) +include(option/cryptonote) +include(option/algorithms) +include(option/benchmark) +include(option/env) +include(option/syslog) diff --git a/cmake/cpu.cmake b/src/base/cmake/cpu.cmake similarity index 100% rename from cmake/cpu.cmake rename to src/base/cmake/cpu.cmake diff --git a/cmake/flags.cmake b/src/base/cmake/flags.cmake similarity index 100% rename from cmake/flags.cmake rename to src/base/cmake/flags.cmake diff --git a/src/base/cmake/option/algorithms.cmake b/src/base/cmake/option/algorithms.cmake new file mode 100644 index 00000000..5ca2b8c4 --- /dev/null +++ b/src/base/cmake/option/algorithms.cmake @@ -0,0 +1,44 @@ +if (WITH_RANDOMX AND NOT WITH_ARGON2) + set(WITH_ARGON2 ON) +endif() + +message(STATUS "WITH_CN_LITE\t= ${WITH_CN_LITE}") +message(STATUS "WITH_CN_HEAVY\t= ${WITH_CN_HEAVY}") +message(STATUS "WITH_CN_PICO\t= ${WITH_CN_PICO}") +message(STATUS "WITH_CN_FEMTO\t= ${WITH_CN_FEMTO}") +message(STATUS "WITH_RANDOMX\t= ${WITH_RANDOMX}") +message(STATUS "WITH_ARGON2\t= ${WITH_ARGON2}") +message(STATUS "WITH_ASTROBWT\t= ${WITH_ASTROBWT}") +message(STATUS "WITH_KAWPOW\t= ${WITH_KAWPOW}") + +if (WITH_CN_LITE) + add_definitions(-DXMRIG_ALGO_CN_LITE) +endif() + +if (WITH_CN_HEAVY) + add_definitions(-DXMRIG_ALGO_CN_HEAVY) +endif() + +if (WITH_CN_PICO) + add_definitions(-DXMRIG_ALGO_CN_PICO) +endif() + +if (WITH_CN_FEMTO) + add_definitions(-DXMRIG_ALGO_CN_FEMTO) +endif() + +if (WITH_RANDOMX) + add_definitions(-DXMRIG_ALGO_RANDOMX) +endif() + +if (WITH_ARGON2) + add_definitions(-DXMRIG_ALGO_ARGON2) +endif() + +if (WITH_ASTROBWT) + add_definitions(-DXMRIG_ALGO_ASTROBWT) +endif() + +if (WITH_KAWPOW) + add_definitions(-DXMRIG_ALGO_KAWPOW) +endif() diff --git a/src/base/cmake/option/benchmark.cmake b/src/base/cmake/option/benchmark.cmake new file mode 100644 index 00000000..9b3d69d5 --- /dev/null +++ b/src/base/cmake/option/benchmark.cmake @@ -0,0 +1,9 @@ +if (NOT WITH_RANDOMX) + set(WITH_BENCHMARK OFF) +endif() + +message(STATUS "WITH_BENCHMARK\t= ${WITH_BENCHMARK}") + +if (WITH_BENCHMARK) + add_definitions(-DXMRIG_FEATURE_BENCHMARK) +endif() diff --git a/src/base/cmake/option/cryptonote.cmake b/src/base/cmake/option/cryptonote.cmake new file mode 100644 index 00000000..46035b41 --- /dev/null +++ b/src/base/cmake/option/cryptonote.cmake @@ -0,0 +1,10 @@ +message(STATUS "WITH_CRYPTONOTE\t= ${WITH_CRYPTONOTE}") +message(STATUS "WITH_CRYPTO_OPS\t= ${WITH_CRYPTO_OPS}") + +if (WITH_CRYPTONOTE) + add_definitions(-DXMRIG_FEATURE_CRYPTONOTE) +endif() + +if (WITH_CRYPTO_OPS) + add_definitions(-DXMRIG_FEATURE_CRYPTO_OPS) +endif() diff --git a/src/base/cmake/option/env.cmake b/src/base/cmake/option/env.cmake new file mode 100644 index 00000000..546e5962 --- /dev/null +++ b/src/base/cmake/option/env.cmake @@ -0,0 +1,9 @@ +if (WITH_ENV_VARS AND CMAKE_CXX_COMPILER_ID MATCHES GNU AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) + set(WITH_ENV_VARS OFF) +endif() + +message(STATUS "WITH_ENV_VARS\t= ${WITH_ENV_VARS}") + +if (WITH_ENV_VARS) + add_definitions(-DXMRIG_FEATURE_ENV) +endif() diff --git a/src/base/cmake/option/http.cmake b/src/base/cmake/option/http.cmake new file mode 100644 index 00000000..520a45f0 --- /dev/null +++ b/src/base/cmake/option/http.cmake @@ -0,0 +1,5 @@ +message(STATUS "WITH_HTTP\t= ${WITH_HTTP}") + +if (WITH_HTTP) + add_definitions(-DXMRIG_FEATURE_HTTP -DXMRIG_FEATURE_API) +endif() diff --git a/src/base/cmake/option/hwloc.cmake b/src/base/cmake/option/hwloc.cmake new file mode 100644 index 00000000..85d1973c --- /dev/null +++ b/src/base/cmake/option/hwloc.cmake @@ -0,0 +1,18 @@ +message(STATUS "WITH_HWLOC\t= ${WITH_HWLOC} (DEBUG=${HWLOC_DEBUG})") + + +if (WITH_HWLOC) + if (CMAKE_CXX_COMPILER_ID MATCHES MSVC) + add_subdirectory(src/base/3rdparty/hwloc) + set(HWLOC_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/base/3rdparty/hwloc/include) + set(HWLOC_LIBRARY hwloc) + else() + find_package(HWLOC REQUIRED) + endif() + + add_definitions(-DXMRIG_FEATURE_HWLOC) + + if (HWLOC_DEBUG) + add_definitions(-DXMRIG_HWLOC_DEBUG) + endif() +endif() diff --git a/src/base/cmake/option/sodium.cmake b/src/base/cmake/option/sodium.cmake new file mode 100644 index 00000000..54141864 --- /dev/null +++ b/src/base/cmake/option/sodium.cmake @@ -0,0 +1,7 @@ +message(STATUS "WITH_SODIUM\t= ${WITH_SODIUM}") + +if (WITH_SODIUM) + find_package(Sodium REQUIRED) + + add_definitions(-DXMRIG_FEATURE_SODIUM) +endif() diff --git a/src/base/cmake/option/syslog.cmake b/src/base/cmake/option/syslog.cmake new file mode 100644 index 00000000..d8ea22a0 --- /dev/null +++ b/src/base/cmake/option/syslog.cmake @@ -0,0 +1,6 @@ +if (NOT XMRIG_OS_WIN) + CHECK_INCLUDE_FILE(syslog.h HAVE_SYSLOG_H) + if (HAVE_SYSLOG_H) + add_definitions(-DHAVE_SYSLOG_H) + endif() +endif() diff --git a/src/base/cmake/option/tls.cmake b/src/base/cmake/option/tls.cmake new file mode 100644 index 00000000..b0313f9f --- /dev/null +++ b/src/base/cmake/option/tls.cmake @@ -0,0 +1,26 @@ +if (WITH_TLS) + set(OPENSSL_ROOT_DIR ${XMRIG_DEPS}) + + if (WIN32) + set(OPENSSL_USE_STATIC_LIBS TRUE) + set(OPENSSL_MSVC_STATIC_RT TRUE) + elseif (APPLE) + set(OPENSSL_USE_STATIC_LIBS TRUE) + endif() + + if (BUILD_STATIC) + set(OPENSSL_USE_STATIC_LIBS TRUE) + endif() + + find_package(OpenSSL) + + if (NOT OPENSSL_FOUND) + message(FATAL_ERROR "OpenSSL NOT found: use `-DWITH_TLS=OFF` to build without TLS support") + endif() + + add_definitions(-DXMRIG_FEATURE_TLS) + + message(STATUS "WITH_TLS\t= ON (v${OPENSSL_VERSION})") +else() + message(STATUS "WITH_TLS\t= ${WITH_TLS}") +endif() diff --git a/cmake/os.cmake b/src/base/cmake/os.cmake similarity index 100% rename from cmake/os.cmake rename to src/base/cmake/os.cmake diff --git a/src/base/io/log/Tags.cpp b/src/base/io/log/Tags.cpp index 23ef63d7..aa046b0f 100644 --- a/src/base/io/log/Tags.cpp +++ b/src/base/io/log/Tags.cpp @@ -54,14 +54,6 @@ const char *xmrig::Tags::signal() #ifdef XMRIG_MINER_PROJECT -const char *xmrig::Tags::cpu() -{ - static const char *tag = CYAN_BG_BOLD(WHITE_BOLD_S " cpu "); - - return tag; -} - - const char *xmrig::Tags::miner() { static const char *tag = MAGENTA_BG_BOLD(WHITE_BOLD_S " miner "); @@ -101,26 +93,6 @@ const char *xmrig::Tags::proxy() #endif -#ifdef XMRIG_FEATURE_CUDA -const char *xmrig::Tags::nvidia() -{ - static const char *tag = GREEN_BG_BOLD(WHITE_BOLD_S " nvidia "); - - return tag; -} -#endif - - -#ifdef XMRIG_FEATURE_OPENCL -const char *xmrig::Tags::opencl() -{ - static const char *tag = MAGENTA_BG_BOLD(WHITE_BOLD_S " opencl "); - - return tag; -} -#endif - - #ifdef XMRIG_FEATURE_PROFILING const char* xmrig::Tags::profiler() { diff --git a/src/base/io/log/Tags.h b/src/base/io/log/Tags.h index 07312d4e..d3d217e7 100644 --- a/src/base/io/log/Tags.h +++ b/src/base/io/log/Tags.h @@ -36,7 +36,6 @@ public: static const char *signal(); # ifdef XMRIG_MINER_PROJECT - static const char *cpu(); static const char *miner(); # ifdef XMRIG_ALGO_RANDOMX static const char *randomx(); @@ -50,14 +49,6 @@ public: static const char *proxy(); # endif -# ifdef XMRIG_FEATURE_CUDA - static const char *nvidia(); -# endif - -# ifdef XMRIG_FEATURE_OPENCL - static const char *opencl(); -# endif - # ifdef XMRIG_FEATURE_PROFILING static const char* profiler(); # endif diff --git a/src/base/kernel/Versions.cpp b/src/base/kernel/Versions.cpp new file mode 100644 index 00000000..f622facd --- /dev/null +++ b/src/base/kernel/Versions.cpp @@ -0,0 +1,122 @@ +/* XMRig + * Copyright (c) 2018-2021 SChernykh + * Copyright (c) 2016-2021 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "base/kernel/Versions.h" +#include "3rdparty/fmt/core.h" +#include "3rdparty/rapidjson/document.h" +#include "base/kernel/version.h" + + +#include + + +#ifdef XMRIG_FEATURE_HTTP +# include "3rdparty/llhttp/llhttp.h" +#endif + +#ifdef XMRIG_FEATURE_TLS +# include +#endif + +#ifdef XMRIG_FEATURE_SODIUM +# include +#endif + +#ifdef XMRIG_FEATURE_SQLITE +# include "3rdparty/sqlite/sqlite3.h" +#endif + +#ifdef XMRIG_FEATURE_HWLOC +# include "backend/cpu/Cpu.h" +#endif + +#ifdef XMRIG_FEATURE_POSTGRESQL +# include +#endif + + +namespace xmrig { + + +std::map Versions::m_data; + + +} // namespace xmrig + + +const std::map &xmrig::Versions::get() +{ + if (m_data.empty()) { + m_data.insert({ "base", BASE_VERSION }); + m_data.insert({ "uv", uv_version_string() }); + m_data.insert({ "rapidjson", RAPIDJSON_VERSION_STRING }); + m_data.insert({ "fmt", fmt::format("{}.{}.{}", FMT_VERSION / 10000, FMT_VERSION / 100 % 100, FMT_VERSION % 100).c_str() }); + +# ifdef XMRIG_FEATURE_HTTP + m_data.insert({ "llhttp", XMRIG_TOSTRING(LLHTTP_VERSION_MAJOR.LLHTTP_VERSION_MINOR.LLHTTP_VERSION_PATCH) }); +# endif + +# ifdef XMRIG_FEATURE_TLS +# if defined(LIBRESSL_VERSION_TEXT) + m_data.insert({ "libressl", String(LIBRESSL_VERSION_TEXT).split(' ')[1] }); +# elif defined(OPENSSL_VERSION_TEXT) + m_data.insert({ "openssl", String(OPENSSL_VERSION_TEXT).split(' ')[1] }); +# endif +# endif + +# ifdef XMRIG_FEATURE_SODIUM + m_data.insert({ "sodium", sodium_version_string() }); +# endif + +# ifdef XMRIG_FEATURE_SQLITE + m_data.insert({ "sqlite", sqlite3_libversion() }); +# endif + +# ifdef XMRIG_FEATURE_HWLOC + m_data.insert({ "hwloc", String(Cpu::info()->backend()).split('/')[1] }); +# endif + +# ifdef XMRIG_FEATURE_POSTGRESQL + m_data.insert({ "pq", fmt::format("{}.{}", PQlibVersion() / 10000, PQlibVersion() % 100).c_str() }); +# endif + } + + return m_data; +} + + +rapidjson::Value xmrig::Versions::toJSON(rapidjson::Document &doc) +{ + using namespace rapidjson; + + Value out(kObjectType); + toJSON(out, doc); + + return out; +} + + +void xmrig::Versions::toJSON(rapidjson::Value &out, rapidjson::Document &doc) +{ + auto &allocator = doc.GetAllocator(); + const auto &data = get(); + + for (const auto &kv : data) { + out.AddMember(kv.first.toJSON(), kv.second.toJSON(), allocator); + } +} diff --git a/src/base/kernel/Versions.h b/src/base/kernel/Versions.h new file mode 100644 index 00000000..0ad0e48f --- /dev/null +++ b/src/base/kernel/Versions.h @@ -0,0 +1,47 @@ +/* XMRig + * Copyright (c) 2018-2021 SChernykh + * Copyright (c) 2016-2021 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef XMRIG_VERSIONS_H +#define XMRIG_VERSIONS_H + + +#include "base/tools/String.h" + + +#include + + +namespace xmrig { + + +class Versions +{ +public: + static const std::map &get(); + static rapidjson::Value toJSON(rapidjson::Document &doc); + static void toJSON(rapidjson::Value &out, rapidjson::Document &doc); + +private: + static std::map m_data; +}; + + +} /* namespace xmrig */ + + +#endif /* XMRIG_VERSIONS_H */ diff --git a/src/base/kernel/version.h b/src/base/kernel/version.h new file mode 100644 index 00000000..94155b5a --- /dev/null +++ b/src/base/kernel/version.h @@ -0,0 +1,33 @@ +/* XMRig + * Copyright (c) 2018-2021 SChernykh + * Copyright (c) 2016-2021 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef XMRIG_BASE_VERSION_H +#define XMRIG_BASE_VERSION_H + + +#define BASE_VER_MAJOR 0 +#define BASE_VER_MINOR 1 +#define BASE_VER_PATCH 0 + +#define XMRIG_STRINGIFY(x) #x +#define XMRIG_TOSTRING(x) XMRIG_STRINGIFY(x) + +#define BASE_VERSION XMRIG_TOSTRING(BASE_VER_MAJOR.BASE_VER_MINOR.BASE_VER_PATCH) + + +#endif // XMRIG_BASE_VERSION_H diff --git a/src/hw/api/api.cmake b/src/hw/api/api.cmake index 94b22470..7c12a2bd 100644 --- a/src/hw/api/api.cmake +++ b/src/hw/api/api.cmake @@ -1,11 +1,6 @@ if (WITH_HTTP) - add_definitions(/DXMRIG_FEATURE_DMI) + add_definitions(-DXMRIG_FEATURE_DMI) - list(APPEND HEADERS - src/hw/api/HwApi.h - ) - - list(APPEND SOURCES - src/hw/api/HwApi.cpp - ) + list(APPEND HEADERS src/hw/api/HwApi.h) + list(APPEND SOURCES src/hw/api/HwApi.cpp) endif() diff --git a/src/hw/dmi/dmi.cmake b/src/hw/dmi/dmi.cmake index 27c2f7d3..a03928a6 100644 --- a/src/hw/dmi/dmi.cmake +++ b/src/hw/dmi/dmi.cmake @@ -5,7 +5,7 @@ else() endif() if (WITH_DMI) - add_definitions(/DXMRIG_FEATURE_DMI) + add_definitions(-DXMRIG_FEATURE_DMI) list(APPEND HEADERS src/hw/dmi/DmiBoard.h @@ -28,6 +28,6 @@ if (WITH_DMI) elseif(XMRIG_OS_MACOS) list(APPEND SOURCES src/hw/dmi/DmiReader_mac.cpp) endif() -else() - remove_definitions(/DXMRIG_FEATURE_DMI) endif() + +message(STATUS "WITH_DMI\t= ${WITH_DMI}")