Merge branch 'master' into dev
This commit is contained in:
commit
2e503f7f8c
13 changed files with 49 additions and 82 deletions
|
@ -4,13 +4,13 @@ project(xmrig)
|
||||||
option(WITH_LIBCPUID "Use Libcpuid" ON)
|
option(WITH_LIBCPUID "Use Libcpuid" ON)
|
||||||
option(WITH_AEON "CryptoNight-Lite support" ON)
|
option(WITH_AEON "CryptoNight-Lite support" ON)
|
||||||
option(WITH_HTTPD "HTTP REST API" ON)
|
option(WITH_HTTPD "HTTP REST API" ON)
|
||||||
|
option(BUILD_STATIC "Build static binary" OFF)
|
||||||
|
|
||||||
include (CheckIncludeFile)
|
include (CheckIncludeFile)
|
||||||
include (cmake/cpu.cmake)
|
include (cmake/cpu.cmake)
|
||||||
|
|
||||||
|
|
||||||
set(HEADERS
|
set(HEADERS
|
||||||
src/3rdparty/align.h
|
|
||||||
src/api/Api.h
|
src/api/Api.h
|
||||||
src/api/ApiState.h
|
src/api/ApiState.h
|
||||||
src/api/NetworkState.h
|
src/api/NetworkState.h
|
||||||
|
@ -206,5 +206,9 @@ include_directories(src)
|
||||||
include_directories(src/3rdparty)
|
include_directories(src/3rdparty)
|
||||||
include_directories(${UV_INCLUDE_DIR})
|
include_directories(${UV_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if (BUILD_STATIC)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS " -static")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_executable(xmrig ${HEADERS} ${SOURCES} ${SOURCES_OS} ${SOURCES_CPUID} ${HEADERS_CRYPTO} ${SOURCES_CRYPTO} ${SOURCES_SYSLOG} ${HTTPD_SOURCES})
|
add_executable(xmrig ${HEADERS} ${SOURCES} ${SOURCES_OS} ${SOURCES_CPUID} ${HEADERS_CRYPTO} ${SOURCES_CRYPTO} ${SOURCES_SYSLOG} ${HTTPD_SOURCES})
|
||||||
target_link_libraries(xmrig ${UV_LIBRARIES} ${MHD_LIBRARY} ${EXTRA_LIBS} ${CPUID_LIB})
|
target_link_libraries(xmrig ${UV_LIBRARIES} ${MHD_LIBRARY} ${EXTRA_LIBS} ${CPUID_LIB})
|
||||||
|
|
10
README.md
10
README.md
|
@ -23,6 +23,7 @@ Originally based on cpuminer-multi with heavy optimizations/rewrites and removin
|
||||||
* [Common Issues](#common-issues)
|
* [Common Issues](#common-issues)
|
||||||
* [Other information](#other-information)
|
* [Other information](#other-information)
|
||||||
* [Donations](#donations)
|
* [Donations](#donations)
|
||||||
|
* [Release checksums](#release-checksums)
|
||||||
* [Contacts](#contacts)
|
* [Contacts](#contacts)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
@ -115,6 +116,15 @@ Please note performance is highly dependent on system load. The numbers above ar
|
||||||
* XMR: `48edfHu7V9Z84YzzMa6fUueoELZ9ZRXq9VetWzYGzKt52XU5xvqgzYnDK9URnRoJMk1j8nLwEVsaSWJ4fhdUyZijBGUicoD`
|
* XMR: `48edfHu7V9Z84YzzMa6fUueoELZ9ZRXq9VetWzYGzKt52XU5xvqgzYnDK9URnRoJMk1j8nLwEVsaSWJ4fhdUyZijBGUicoD`
|
||||||
* BTC: `1P7ujsXeX7GxQwHNnJsRMgAdNkFZmNVqJT`
|
* BTC: `1P7ujsXeX7GxQwHNnJsRMgAdNkFZmNVqJT`
|
||||||
|
|
||||||
|
## Release checksums
|
||||||
|
### SHA-256
|
||||||
|
```
|
||||||
|
232ea929f7219c8de81c7e6fcae7437d40d8128cf55b597a6e1fca0cd77f9f5b xmrig-2.5.0-xenial-amd64.tar.gz/xmrig-2.5.0/xmrig
|
||||||
|
6149ffed21e740cac12aa61b2fdd17248cbd3e51bab2289d2766aad1d29df910 xmrig-2.5.0-gcc-win32.zip/xmrig.exe
|
||||||
|
9c89f80e21db906439a7a1b333b8215dbe07d8e42f98a63f6c10c954288a7108 xmrig-2.5.0-gcc-win64.zip/xmrig.exe
|
||||||
|
b50773c5a74ca9921597a1152e2469ec266cc89eb9765038db7e876f0bcece73 xmrig-2.5.0-msvc-win64.zip/xmrig.exe
|
||||||
|
```
|
||||||
|
|
||||||
## Contacts
|
## Contacts
|
||||||
* support@xmrig.com
|
* support@xmrig.com
|
||||||
* [reddit](https://www.reddit.com/user/XMRig/)
|
* [reddit](https://www.reddit.com/user/XMRig/)
|
||||||
|
|
|
@ -11,16 +11,22 @@ find_path(
|
||||||
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
||||||
PATH_SUFFIXES "include"
|
PATH_SUFFIXES "include"
|
||||||
DOC "microhttpd include dir"
|
DOC "microhttpd include dir"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
find_path(MHD_INCLUDE_DIR NAMES microhttpd.h)
|
||||||
|
|
||||||
find_library(
|
find_library(
|
||||||
MHD_LIBRARY
|
MHD_LIBRARY
|
||||||
NAMES microhttpd libmicrohttpd
|
NAMES libmicrohttpd.a microhttpd libmicrohttpd
|
||||||
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
||||||
PATH_SUFFIXES "lib"
|
PATH_SUFFIXES "lib"
|
||||||
DOC "microhttpd library"
|
DOC "microhttpd library"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
find_library(MHD_LIBRARY NAMES microhttpd libmicrohttpd)
|
||||||
|
|
||||||
set(MHD_INCLUDE_DIRS ${MHD_INCLUDE_DIR})
|
set(MHD_INCLUDE_DIRS ${MHD_INCLUDE_DIR})
|
||||||
set(MHD_LIBRARIES ${MHD_LIBRARY})
|
set(MHD_LIBRARIES ${MHD_LIBRARY})
|
||||||
|
|
||||||
|
|
|
@ -3,15 +3,21 @@ find_path(
|
||||||
NAMES uv.h
|
NAMES uv.h
|
||||||
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
||||||
PATH_SUFFIXES "include"
|
PATH_SUFFIXES "include"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
find_path(UV_INCLUDE_DIR NAMES uv.h)
|
||||||
|
|
||||||
find_library(
|
find_library(
|
||||||
UV_LIBRARY
|
UV_LIBRARY
|
||||||
NAMES libuv.a uv libuv
|
NAMES libuv.a uv libuv
|
||||||
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
PATHS "${XMRIG_DEPS}" ENV "XMRIG_DEPS"
|
||||||
PATH_SUFFIXES "lib"
|
PATH_SUFFIXES "lib"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
find_library(UV_LIBRARY NAMES libuv.a uv libuv)
|
||||||
|
|
||||||
set(UV_LIBRARIES ${UV_LIBRARY})
|
set(UV_LIBRARIES ${UV_LIBRARY})
|
||||||
set(UV_INCLUDE_DIRS ${UV_INCLUDE_DIR})
|
set(UV_INCLUDE_DIRS ${UV_INCLUDE_DIR})
|
||||||
|
|
||||||
|
|
33
src/3rdparty/align.h
vendored
33
src/3rdparty/align.h
vendored
|
@ -1,33 +0,0 @@
|
||||||
/* XMRig
|
|
||||||
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com>
|
|
||||||
* Copyright 2012-2014 pooler <pooler@litecoinpool.org>
|
|
||||||
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
|
||||||
* Copyright 2016-2017 XMRig <support@xmrig.com>
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ALIGN_H__
|
|
||||||
#define __ALIGN_H__
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# define VAR_ALIGN(x, decl) __declspec(align(x)) decl
|
|
||||||
#else
|
|
||||||
# define VAR_ALIGN(x, decl) decl __attribute__ ((aligned(x)))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ALIGN_H__ */
|
|
|
@ -38,7 +38,7 @@ int Mem::m_flags = 0;
|
||||||
int Mem::m_threads = 0;
|
int Mem::m_threads = 0;
|
||||||
size_t Mem::m_offset = 0;
|
size_t Mem::m_offset = 0;
|
||||||
size_t Mem::m_size = 0;
|
size_t Mem::m_size = 0;
|
||||||
uint8_t *Mem::m_memory = nullptr;
|
alignas(16) uint8_t *Mem::m_memory = nullptr;
|
||||||
|
|
||||||
|
|
||||||
cryptonight_ctx *Mem::create(int threadId)
|
cryptonight_ctx *Mem::create(int threadId)
|
||||||
|
|
|
@ -30,9 +30,6 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
#include "align.h"
|
|
||||||
|
|
||||||
|
|
||||||
struct cryptonight_ctx;
|
struct cryptonight_ctx;
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +60,7 @@ private:
|
||||||
static int m_threads;
|
static int m_threads;
|
||||||
static size_t m_offset;
|
static size_t m_offset;
|
||||||
static size_t m_size;
|
static size_t m_size;
|
||||||
VAR_ALIGN(16, static uint8_t *m_memory);
|
alignas(16) static uint8_t *m_memory;
|
||||||
|
|
||||||
# ifndef XMRIG_NO_AEON
|
# ifndef XMRIG_NO_AEON
|
||||||
static cryptonight_ctx *createLite(int threadId);
|
static cryptonight_ctx *createLite(int threadId);
|
||||||
|
|
|
@ -30,8 +30,6 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
#include "align.h"
|
|
||||||
|
|
||||||
#define AEON_MEMORY 1048576
|
#define AEON_MEMORY 1048576
|
||||||
#define AEON_MASK 0xFFFF0
|
#define AEON_MASK 0xFFFF0
|
||||||
#define AEON_ITER 0x40000
|
#define AEON_ITER 0x40000
|
||||||
|
@ -42,9 +40,9 @@
|
||||||
|
|
||||||
|
|
||||||
struct cryptonight_ctx {
|
struct cryptonight_ctx {
|
||||||
VAR_ALIGN(16, uint8_t state0[200]);
|
alignas(16) uint8_t state0[200];
|
||||||
VAR_ALIGN(16, uint8_t state1[200]);
|
alignas(16) uint8_t state1[200];
|
||||||
VAR_ALIGN(16, uint8_t* memory);
|
alignas(16) uint8_t* memory;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,9 @@ namespace xmrig {
|
||||||
class Id
|
class Id
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline Id()
|
inline Id() :
|
||||||
|
m_data()
|
||||||
{
|
{
|
||||||
memset(m_data, 0, sizeof(m_data));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -58,29 +58,31 @@ static inline char hf_bin2hex(unsigned char c)
|
||||||
|
|
||||||
Job::Job() :
|
Job::Job() :
|
||||||
m_nicehash(false),
|
m_nicehash(false),
|
||||||
|
m_coin(),
|
||||||
m_algo(xmrig::ALGO_CRYPTONIGHT),
|
m_algo(xmrig::ALGO_CRYPTONIGHT),
|
||||||
m_poolId(-2),
|
m_poolId(-2),
|
||||||
m_threadId(-1),
|
m_threadId(-1),
|
||||||
m_variant(xmrig::VARIANT_AUTO),
|
m_variant(xmrig::VARIANT_AUTO),
|
||||||
m_size(0),
|
m_size(0),
|
||||||
m_diff(0),
|
m_diff(0),
|
||||||
m_target(0)
|
m_target(0),
|
||||||
|
m_blob()
|
||||||
{
|
{
|
||||||
memset(m_coin, 0, sizeof(m_coin));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Job::Job(int poolId, bool nicehash, int algo, int variant) :
|
Job::Job(int poolId, bool nicehash, int algo, int variant) :
|
||||||
m_nicehash(nicehash),
|
m_nicehash(nicehash),
|
||||||
|
m_coin(),
|
||||||
m_algo(algo),
|
m_algo(algo),
|
||||||
m_poolId(poolId),
|
m_poolId(poolId),
|
||||||
m_threadId(-1),
|
m_threadId(-1),
|
||||||
m_variant(variant),
|
m_variant(variant),
|
||||||
m_size(0),
|
m_size(0),
|
||||||
m_diff(0),
|
m_diff(0),
|
||||||
m_target(0)
|
m_target(0),
|
||||||
|
m_blob()
|
||||||
{
|
{
|
||||||
memset(m_coin, 0, sizeof(m_coin));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,11 +115,6 @@ bool Job::setBlob(const char *blob)
|
||||||
m_nicehash = true;
|
m_nicehash = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef XMRIG_PROXY_PROJECT
|
|
||||||
memset(m_rawBlob, 0, sizeof(m_rawBlob));
|
|
||||||
memcpy(m_rawBlob, blob, m_size * 2);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,11 +151,6 @@ bool Job::setTarget(const char *target)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef XMRIG_PROXY_PROJECT
|
|
||||||
memset(m_rawTarget, 0, sizeof(m_rawTarget));
|
|
||||||
memcpy(m_rawTarget, target, len);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
m_diff = toDiff(m_target);
|
m_diff = toDiff(m_target);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
#include "align.h"
|
|
||||||
#include "net/Id.h"
|
#include "net/Id.h"
|
||||||
#include "xmrig.h"
|
#include "xmrig.h"
|
||||||
|
|
||||||
|
@ -64,11 +63,6 @@ public:
|
||||||
inline void setNicehash(bool nicehash) { m_nicehash = nicehash; }
|
inline void setNicehash(bool nicehash) { m_nicehash = nicehash; }
|
||||||
inline void setThreadId(int threadId) { m_threadId = threadId; }
|
inline void setThreadId(int threadId) { m_threadId = threadId; }
|
||||||
|
|
||||||
# ifdef XMRIG_PROXY_PROJECT
|
|
||||||
inline char *rawBlob() { return m_rawBlob; }
|
|
||||||
inline const char *rawTarget() const { return m_rawTarget; }
|
|
||||||
# endif
|
|
||||||
|
|
||||||
static bool fromHex(const char* in, unsigned int len, unsigned char* out);
|
static bool fromHex(const char* in, unsigned int len, unsigned char* out);
|
||||||
static inline uint32_t *nonce(uint8_t *blob) { return reinterpret_cast<uint32_t*>(blob + 39); }
|
static inline uint32_t *nonce(uint8_t *blob) { return reinterpret_cast<uint32_t*>(blob + 39); }
|
||||||
static inline uint64_t toDiff(uint64_t target) { return 0xFFFFFFFFFFFFFFFFULL / target; }
|
static inline uint64_t toDiff(uint64_t target) { return 0xFFFFFFFFFFFFFFFFULL / target; }
|
||||||
|
@ -77,8 +71,6 @@ public:
|
||||||
bool operator==(const Job &other) const;
|
bool operator==(const Job &other) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VAR_ALIGN(16, uint8_t m_blob[84]); // Max blob size is 84 (75 fixed + 9 variable), aligned to 96. https://github.com/xmrig/xmrig/issues/1 Thanks fireice-uk.
|
|
||||||
|
|
||||||
bool m_nicehash;
|
bool m_nicehash;
|
||||||
char m_coin[5];
|
char m_coin[5];
|
||||||
int m_algo;
|
int m_algo;
|
||||||
|
@ -88,12 +80,8 @@ private:
|
||||||
size_t m_size;
|
size_t m_size;
|
||||||
uint64_t m_diff;
|
uint64_t m_diff;
|
||||||
uint64_t m_target;
|
uint64_t m_target;
|
||||||
|
uint8_t m_blob[96]; // Max blob size is 84 (75 fixed + 9 variable), aligned to 96. https://github.com/xmrig/xmrig/issues/1 Thanks fireice-uk.
|
||||||
xmrig::Id m_id;
|
xmrig::Id m_id;
|
||||||
|
|
||||||
# ifdef XMRIG_PROXY_PROJECT
|
|
||||||
VAR_ALIGN(16, char m_rawBlob[169]);
|
|
||||||
VAR_ALIGN(16, char m_rawTarget[17]);
|
|
||||||
# endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __JOB_H__ */
|
#endif /* __JOB_H__ */
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#define APP_ID "xmrig"
|
#define APP_ID "xmrig"
|
||||||
#define APP_NAME "XMRig"
|
#define APP_NAME "XMRig"
|
||||||
#define APP_DESC "XMRig CPU miner"
|
#define APP_DESC "XMRig CPU miner"
|
||||||
#define APP_VERSION "2.5.0-dev"
|
#define APP_VERSION "2.5.0"
|
||||||
#define APP_DOMAIN "xmrig.com"
|
#define APP_DOMAIN "xmrig.com"
|
||||||
#define APP_SITE "www.xmrig.com"
|
#define APP_SITE "www.xmrig.com"
|
||||||
#define APP_COPYRIGHT "Copyright (C) 2016-2018 xmrig.com"
|
#define APP_COPYRIGHT "Copyright (C) 2016-2018 xmrig.com"
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#define __DOUBLEWORKER_H__
|
#define __DOUBLEWORKER_H__
|
||||||
|
|
||||||
|
|
||||||
#include "align.h"
|
|
||||||
#include "net/Job.h"
|
#include "net/Job.h"
|
||||||
#include "net/JobResult.h"
|
#include "net/JobResult.h"
|
||||||
#include "workers/Worker.h"
|
#include "workers/Worker.h"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue