From 627321b6cc28d8bb9c12d2bc07199fb043c9baaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ben=20Gr=C3=A4f?= Date: Tue, 24 Oct 2017 14:24:29 -0700 Subject: [PATCH] Fixed windows build --- CMakeLists.txt | 4 ++-- appveyor.yml | 32 ++++++++++++++++++++++++++++++++ src/App.cpp | 13 +++++++++---- src/Console.cpp | 1 - src/Options.cpp | 1 - src/cc/CCClient.cpp | 39 +++++++++++++++++++++++++-------------- src/cc/CCClient.h | 2 ++ src/cc/ControlCommand.h | 1 - src/xmrigd.cpp | 19 ++++++++++++++----- 9 files changed, 84 insertions(+), 28 deletions(-) create mode 100644 appveyor.yml diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a33cc92..17808763 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -255,7 +255,7 @@ if (WITH_CC) if (CURL_FOUND) include_directories(${CURL_INCLUDE_DIRS}) else() - message(FATAL_ERROR "microhttpd NOT found: use `-DWITH_CC=OFF` to build without CC Server support") + message(FATAL_ERROR "curl NOT found: use `-DWITH_CC=OFF` to build without CC Server support") endif() set(HEADERS_CC_COMMON @@ -295,7 +295,7 @@ include_directories(${UV_INCLUDE_DIR}) add_executable(xmrigMiner ${HEADERS} ${SOURCES} ${HEADERS_COMMON} ${SOURCES_COMMON} ${SOURCES_OS} ${SOURCES_CPUID} ${HEADERS_CRYPTO} ${SOURCES_CRYPTO} ${SOURCES_SYSLOG} ${HTTPD_SOURCES} ${SOURCES_CC_COMMON} ${HEADERS_CC_COMMON} ${SOURCES_CC_CLIENT} ${HEADERS_CC_CLIENT}) target_link_libraries(xmrigMiner ${UV_LIBRARIES} ${MHD_LIBRARY} ${CURL_LIBRARY} ${EXTRA_LIBS} ${CPUID_LIB}) -add_executable(xmrigDaemon src/xmrigd.cpp) +add_executable(xmrigDaemon src/xmrigd.cpp res/app.rc) if (WITH_CC AND MHD_FOUND AND CURL_FOUND) add_executable(xmrigCCServer ${HEADERS_COMMON} ${SOURCES_COMMON} ${SOURCES_OS} ${SOURCES_CPUID} ${SOURCES_SYSLOG} ${SOURCES_CC_COMMON} ${HEADERS_CC_COMMON} ${SOURCES_CC_SERVER} ${HEADERS_CC_SERVER}) diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..5c9f25cd --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,32 @@ +# image +image: Visual Studio 2017 + +# build platform +platform: x64 +configuration: Release + +# clone directory +clone_folder: c:\xmrigCC + +install: + - mkdir c:\xmrigCC-deps + - curl -sL https://github.com/xmrig/xmrig-deps/releases/download/v2/xmrig-deps-v2.zip -o xmrigCC-deps-v2.zip + - 7z x xmrigCC-deps-v2.zip -o"c:\xmrigCC-deps" -y > nul + - vcpkg install curl:x64-windows + +build_script: + - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsMSBuildCmd.bat" + - cd c:\xmrigCC + - mkdir build + - cd build + - set CMAKE_PREFIX_PATH=c:\xmrigCC-deps\msvc2017\libuv\x64\;c:\xmrigCC-deps\msvc2017\libmicrohttpd\x64\;C:\Tools\vcpkg\installed\x64-windows\ + - cmake -G "Visual Studio 15 2017 Win64" -T v141,host=x64 .. + - msbuild xmrig.sln /p:Configuration=Release + +after_build: +- cd c:\xmrigCC +- cmd: 7z a xmrigCC.zip "c:\xmrigCC\build\Release\*.*" "c:\xmrigCC\src\*config*" "C:\Tools\vcpkg\installed\x64-windows\lib\*.dll" "c:\xmrigCC\index.html" +- cmd: dir + +artifacts: +- path: xmrigCC.zip diff --git a/src/App.cpp b/src/App.cpp index 96b69549..431b3aac 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -25,7 +25,6 @@ #include #include -#include #include "api/Api.h" #include "App.h" @@ -111,7 +110,9 @@ App::~App() # endif # ifndef XMRIG_NO_CC - delete m_ccclient; + if (m_ccclient) { + delete m_ccclient; + } # endif } @@ -146,7 +147,11 @@ int App::start() # endif # ifndef XMRIG_NO_CC - m_ccclient = new CCClient(m_options); + if (m_options->ccUrl()) { + m_ccclient = new CCClient(m_options); + } else { + LOG_WARN("Please configure CC-Url and restart. CC feature is now deactivated."); + } # endif Workers::start(m_options->affinity(), m_options->priority()); @@ -156,7 +161,7 @@ int App::start() const int r = uv_run(uv_default_loop(), UV_RUN_DEFAULT); uv_loop_close(uv_default_loop()); - return m_restart ? ERESTART : r; + return m_restart ? EINTR : r; } void App::onConsoleCommand(char command) diff --git a/src/Console.cpp b/src/Console.cpp index 221d8d62..befd4c68 100644 --- a/src/Console.cpp +++ b/src/Console.cpp @@ -22,7 +22,6 @@ */ -#include #include "Console.h" #include "interfaces/IConsoleListener.h" diff --git a/src/Options.cpp b/src/Options.cpp index f3b4f209..0130aca3 100644 --- a/src/Options.cpp +++ b/src/Options.cpp @@ -307,7 +307,6 @@ Options::Options(int argc, char **argv) : return; } #else - #ifndef XMRIG_NO_CC if (!m_daemonized) { fprintf(stderr, "\"" APP_ID "\" is compiled with CC support, please start the daemon instead.\n"); diff --git a/src/cc/CCClient.cpp b/src/cc/CCClient.cpp index f8c69a7e..8b2e2aac 100644 --- a/src/cc/CCClient.cpp +++ b/src/cc/CCClient.cpp @@ -22,11 +22,16 @@ * along with this program. If not, see . */ -#include #include #include <3rdparty/rapidjson/stringbuffer.h> #include <3rdparty/rapidjson/prettywriter.h> +#if _WIN32 +# include "winsock2.h" +#else +# include "unistd.h" +#endif + #include "CCClient.h" #include "App.h" #include "ControlCommand.h" @@ -42,6 +47,8 @@ uv_mutex_t CCClient::m_mutex; CCClient::CCClient(const Options *options) : m_options(options) { + uv_mutex_init(&m_mutex); + m_self = this; std::string clientId; @@ -75,10 +82,12 @@ void CCClient::updateHashrate(const Hashrate *hashrate) { uv_mutex_lock(&m_mutex); - m_self->m_clientStatus.setHashrateShort(hashrate->calc(Hashrate::ShortInterval)); - m_self->m_clientStatus.setHashrateMedium(hashrate->calc(Hashrate::MediumInterval)); - m_self->m_clientStatus.setHashrateLong(hashrate->calc(Hashrate::LargeInterval)); - m_self->m_clientStatus.setHashrateHighest(hashrate->highest()); + if (m_self) { + m_self->m_clientStatus.setHashrateShort(hashrate->calc(Hashrate::ShortInterval)); + m_self->m_clientStatus.setHashrateMedium(hashrate->calc(Hashrate::MediumInterval)); + m_self->m_clientStatus.setHashrateLong(hashrate->calc(Hashrate::LargeInterval)); + m_self->m_clientStatus.setHashrateHighest(hashrate->highest()); + } uv_mutex_unlock(&m_mutex); } @@ -88,13 +97,14 @@ void CCClient::updateNetworkState(const NetworkState &network) { uv_mutex_lock(&m_mutex); - m_self->m_clientStatus.setCurrentStatus(Workers::isEnabled() ? ClientStatus::RUNNING : ClientStatus::PAUSED); - m_self->m_clientStatus.setCurrentPool(network.pool); - m_self->m_clientStatus.setSharesGood(network.accepted); - m_self->m_clientStatus.setSharesTotal(network.accepted + network.rejected); - m_self->m_clientStatus.setHashesTotal(network.total); - m_self->m_clientStatus.setAvgTime(network.avgTime()); - + if (m_self) { + m_self->m_clientStatus.setCurrentStatus(Workers::isEnabled() ? ClientStatus::RUNNING : ClientStatus::PAUSED); + m_self->m_clientStatus.setCurrentPool(network.pool); + m_self->m_clientStatus.setSharesGood(network.accepted); + m_self->m_clientStatus.setSharesTotal(network.accepted + network.rejected); + m_self->m_clientStatus.setHashesTotal(network.total); + m_self->m_clientStatus.setAvgTime(network.avgTime()); + } uv_mutex_unlock(&m_mutex); } @@ -210,7 +220,9 @@ CURLcode CCClient::performCurl(const std::string& requestUrl, const std::string& void CCClient::onReport(uv_timer_t *handle) { - m_self->publishClientStatusReport(); + if (m_self) { + m_self->publishClientStatusReport(); + } } int CCClient::onResponse(char* data, size_t size, size_t nmemb, std::string* responseBuffer) @@ -224,4 +236,3 @@ int CCClient::onResponse(char* data, size_t size, size_t nmemb, std::string* res return result; } - diff --git a/src/cc/CCClient.h b/src/cc/CCClient.h index e4b20178..4dd70a72 100644 --- a/src/cc/CCClient.h +++ b/src/cc/CCClient.h @@ -25,6 +25,7 @@ #ifndef __CC_CLIENT_H__ #define __CC_CLIENT_H__ +#ifndef XMRIG_NO_CC #include #include @@ -68,4 +69,5 @@ private: }; +#endif #endif /* __CC_CLIENT_H__ */ diff --git a/src/cc/ControlCommand.h b/src/cc/ControlCommand.h index 820b7917..13b9b6e3 100644 --- a/src/cc/ControlCommand.h +++ b/src/cc/ControlCommand.h @@ -26,7 +26,6 @@ #define __CONTROL_COMMAND_H__ #include -#include #include "rapidjson/document.h" class ControlCommand diff --git a/src/xmrigd.cpp b/src/xmrigd.cpp index 9ed9eebf..50c17e56 100644 --- a/src/xmrigd.cpp +++ b/src/xmrigd.cpp @@ -24,12 +24,19 @@ #include #include -#include - +#ifdef WIN32 + #define WIN32_LEAN_AND_MEAN /* avoid including junk */ + #include + #include +#endif int main(int argc, char **argv) { + std::string ownPath(argv[0]); - std::string xmrigMinerPath = std::regex_replace(ownPath, std::regex(program_invocation_short_name), "xmrigMiner"); + std::string xmrigDaemon("xmrigDaemon"); + std::string xmrigMiner("xmrigMiner"); + + std::string xmrigMinerPath = ownPath.replace(ownPath.rfind(xmrigDaemon),xmrigDaemon.size(), xmrigMiner); for (int i=1; i < argc; i++){ xmrigMinerPath += " "; @@ -40,7 +47,9 @@ int main(int argc, char **argv) { int status = 0; - do { + //do { status = system(xmrigMinerPath.c_str()); - } while (WEXITSTATUS(status) == ERESTART); + + printf("Status: %d", status); + //} while (WEXITSTATUS(status) == EINTR); }