Skip to content

Instantly share code, notes, and snippets.

@xmrig
Created September 11, 2017 19:59
Show Gist options
  • Save xmrig/8a63dc63877bcc01ed82e4911e269fb6 to your computer and use it in GitHub Desktop.
Save xmrig/8a63dc63877bcc01ed82e4911e269fb6 to your computer and use it in GitHub Desktop.
cmake_minimum_required(VERSION 3.0)
project(xmrig-proxy)
option(WITH_GOOGLE_BREAKPAD "Use Google Breakpad" OFF)
include (CheckIncludeFile)
set(HEADERS
src/3rdparty/align.h
src/App.h
src/Console.h
src/interfaces/IClientListener.h
src/interfaces/IConsoleListener.h
src/interfaces/ILogBackend.h
src/interfaces/IMinerListener.h
src/interfaces/IServerListener.h
src/interfaces/ISplitter.h
src/interfaces/IStrategy.h
src/interfaces/IStrategyListener.h
src/log/ConsoleLog.h
src/log/FileLog.h
src/log/Log.h
src/net/Client.h
src/net/Job.h
src/net/strategies/FailoverStrategy.h
src/net/strategies/SinglePoolStrategy.h
src/net/Url.h
src/Options.h
src/Platform.h
src/proxy/Addr.h
src/proxy/Counters.h
src/proxy/Hashrate.h
src/proxy/JobResult.h
src/proxy/JobResult.h
src/proxy/Miner.h
src/proxy/Miners.h
src/proxy/Proxy.h
src/proxy/Server.h
src/proxy/splitters/NonceMapper.h
src/proxy/splitters/NonceSplitter.h
src/proxy/splitters/NonceStorage.h
src/proxy/Uuid.h
src/Summary.h
src/version.h
)
set(SOURCES
src/App.cpp
src/Console.cpp
src/log/ConsoleLog.cpp
src/log/FileLog.cpp
src/log/Log.cpp
src/net/Client.cpp
src/net/Job.cpp
src/net/strategies/FailoverStrategy.cpp
src/net/strategies/SinglePoolStrategy.cpp
src/net/Url.cpp
src/Options.cpp
src/Platform.cpp
src/proxy/Counters.cpp
src/proxy/Hashrate.cpp
src/proxy/JobResult.cpp
src/proxy/LoginRequest.cpp
src/proxy/Miner.cpp
src/proxy/Miners.cpp
src/proxy/Proxy.cpp
src/proxy/Server.cpp
src/proxy/splitters/NonceMapper.cpp
src/proxy/splitters/NonceSplitter.cpp
src/proxy/splitters/NonceStorage.cpp
src/Summary.cpp
src/xmrig.cpp
)
if (WIN32)
set(SOURCES_OS
res/app.rc
src/App_win.cpp
src/Platform_win.cpp
src/proxy/Uuid_win.cpp
)
add_definitions(/DWIN32)
set(EXTRA_LIBS ws2_32 psapi iphlpapi userenv)
elseif (APPLE)
set(SOURCES_OS
src/App_unix.cpp
src/Platform_mac.cpp
src/proxy/Uuid_mac.cpp
)
find_library(CFLIB CoreFoundation)
set(EXTRA_LIBS ${CFLIB})
else()
set(SOURCES_OS
src/App_unix.cpp
src/Platform_unix.cpp
src/proxy/Uuid_unix.cpp
)
set(EXTRA_LIBS pthread uuid)
endif()
add_definitions(/DXMRIG_PROXY_PROJECT)
add_definitions(/DUNICODE)
add_definitions(/D__STDC_FORMAT_MACROS)
add_definitions(/DAPP_DEVEL)
#add_definitions(/DAPP_DEBUG)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
find_package(UV REQUIRED)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE Release)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 11)
# https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html
if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
if (WIN32)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif()
add_definitions(/D_GNU_SOURCE)
#set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -gdwarf-2")
if (WITH_GOOGLE_BREAKPAD)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -g")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g")
endif()
elseif (CMAKE_CXX_COMPILER_ID MATCHES MSVC)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Ox /Ot /Oi /MT /GL")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ox /Ot /Oi /MT /GL")
add_definitions(/D_CRT_SECURE_NO_WARNINGS)
add_definitions(/D_CRT_NONSTDC_NO_WARNINGS)
elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes -Wall")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast -funroll-loops -fmerge-all-constants")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes -Wall -std=c++14 -fno-exceptions -fno-rtti")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast")
endif()
CHECK_INCLUDE_FILE (syslog.h HAVE_SYSLOG_H)
if (HAVE_SYSLOG_H)
add_definitions(/DHAVE_SYSLOG_H)
set(SOURCES_SYSLOG src/log/SysLog.h src/log/SysLog.cpp)
endif()
if (WITH_GOOGLE_BREAKPAD)
include_directories(/usr/local/include/breakpad)
set(GOOGLE_BREAKPAD_LIBS breakpad_client)
else()
add_definitions(/DXMRIG_NO_GOOGLE_BREAKPAD)
endif()
include_directories(src)
include_directories(src/3rdparty)
include_directories(src/3rdparty/jansson)
include_directories(${UV_INCLUDE_DIR})
add_subdirectory(src/3rdparty/jansson)
add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES} ${SOURCES_OS} ${SOURCES_SYSLOG})
target_link_libraries(${CMAKE_PROJECT_NAME} jansson ${UV_LIBRARIES} ${EXTRA_LIBS} ${GOOGLE_BREAKPAD_LIBS})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment