Skip to content

Commit d55fa27

Browse files
committed
Upgrade to 2.5.1-hide-2.0.0
1 parent c4400d1 commit d55fa27

File tree

154 files changed

+8331
-2796
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+8331
-2796
lines changed

.gitignore

+13
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,16 @@ config-debug.txt
1717
# KDevelop files
1818
.kdev4/
1919
xmr-stak.kdev4
20+
21+
# Idea/Clion project files
22+
cmake-build-release/
23+
cmake-build-debug/
24+
\.idea/
25+
26+
# MacOS files
27+
.DS_Store
28+
.AppleDouble
29+
.LSOverride
30+
31+
# Thumbnails
32+
._*

.travis.yml

+17-2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,22 @@ matrix:
5555
- CMAKE_C_COMPILER=gcc-6
5656
- XMRSTAK_CMAKE_FLAGS="-DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF"
5757

58+
# test with disabled HWLOC, MICROHTTPD, OpenSSL and no accelerators
59+
- os: linux
60+
compiler: gcc
61+
addons:
62+
apt:
63+
sources:
64+
- ubuntu-toolchain-r-test
65+
packages:
66+
- *default_packages
67+
- gcc-6
68+
- g++-6
69+
env:
70+
- CMAKE_CXX_COMPILER=g++-6
71+
- CMAKE_C_COMPILER=gcc-6
72+
- XMRSTAK_CMAKE_FLAGS="-DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF -DHWLOC_ENABLE=OFF -DOpenSSL_ENABLE=OFF -DMICROHTTPD_ENABLE=OFF"
73+
5874
- os: linux
5975
compiler: gcc
6076
addons:
@@ -77,9 +93,8 @@ matrix:
7793

7894
before_install:
7995
- . CI/checkPRBranch
80-
- if [ $TRAVIS_OS_NAME = osx ]; then
96+
- if [ $TRAVIS_OS_NAME = osx ] ; then
8197
brew update;
82-
brew tap homebrew/science;
8398
fi
8499
- export PATH=$CUDA_ROOT/bin:$PATH
85100

CMakeLists.txt

+73-41
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
project(xmr-stak)
22

3-
cmake_minimum_required(VERSION 3.1.0)
3+
cmake_minimum_required(VERSION 3.4.0)
44

55
# enforce C++11
66
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -36,10 +36,6 @@ if(NOT CMAKE_BUILD_TYPE)
3636
endif()
3737
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${BUILD_TYPE}")
3838

39-
set(XMR-STAK_CURRENCY "all" CACHE STRING "select miner currency")
40-
set_property(CACHE XMR-STAK_CURRENCY PROPERTY STRINGS "all;monero;aeon")
41-
42-
4339
set(XMR-STAK_COMPILE "native" CACHE STRING "select CPU compute architecture")
4440
set_property(CACHE XMR-STAK_COMPILE PROPERTY STRINGS "native;generic")
4541
if(XMR-STAK_COMPILE STREQUAL "native")
@@ -53,16 +49,6 @@ else()
5349
message(FATAL_ERROR "XMR-STAK_COMPILE is set to an unknown value '${XMR-STAK_COMPILE}'")
5450
endif()
5551

56-
if(XMR-STAK_CURRENCY STREQUAL "all")
57-
message(STATUS "Set miner currency to 'monero' and 'aeon'")
58-
elseif(XMR-STAK_CURRENCY STREQUAL "aeon")
59-
message(STATUS "Set miner currency to 'aeon'")
60-
add_definitions("-DCONF_NO_MONERO=1")
61-
elseif(XMR-STAK_CURRENCY STREQUAL "monero")
62-
message(STATUS "Set miner currency to 'monero'")
63-
add_definitions("-DCONF_NO_AEON=1")
64-
endif()
65-
6652
# option to add static libgcc and libstdc++
6753
option(CMAKE_LINK_STATIC "link as much as possible libraries static" OFF)
6854

@@ -114,6 +100,11 @@ if(CUDA_ENABLE)
114100
list(APPEND DEFAULT_CUDA_ARCH "70")
115101
endif()
116102
endif()
103+
# add Turing support for CUDA >= 10.0
104+
if(NOT CUDA_VERSION VERSION_LESS 10.0)
105+
list(APPEND DEFAULT_CUDA_ARCH "75")
106+
endif()
107+
117108
set(CUDA_ARCH "${DEFAULT_CUDA_ARCH}" CACHE STRING "Set GPU architecture (semicolon separated list, e.g. '-DCUDA_ARCH=20;35;60')")
118109

119110
# generate comma separated list with architectures
@@ -155,13 +146,17 @@ if(CUDA_ENABLE)
155146
# set flags to create device code for the given architectures
156147
set(CLANG_BUILD_FLAGS "${CLANG_BUILD_FLAGS} --cuda-gpu-arch=sm_${CUDA_ARCH_ELEM}")
157148
endforeach()
158-
159149
elseif(CUDA_COMPILER STREQUAL "nvcc")
160150
# add c++11 for cuda
161151
if(NOT CMAKE_CXX_FLAGS MATCHES "-std=c\\+\\+11")
162152
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11")
163153
endif()
164154

155+
# avoid that nvcc in CUDA 8 complains about sm_20 pending removal
156+
if(CUDA_VERSION VERSION_EQUAL 8.0)
157+
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -Wno-deprecated-gpu-targets")
158+
endif()
159+
165160
# avoid that nvcc in CUDA < 8 tries to use libc `memcpy` within the kernel
166161
if(CUDA_VERSION VERSION_LESS 8.0)
167162
add_definitions(-D_FORCE_INLINES)
@@ -189,14 +184,17 @@ if(CUDA_ENABLE)
189184
if(CUDA_KEEP_FILES)
190185
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}" --keep --keep-dir "${PROJECT_BINARY_DIR}")
191186
endif(CUDA_KEEP_FILES)
192-
187+
193188
if(CUDA_VERSION VERSION_LESS 8.0)
194189
# for CUDA 7.5 fix compile error: https://github.com/fireice-uk/xmr-stak/issues/34
195190
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}" "-D_MWAITXINTRIN_H_INCLUDED")
196191
endif()
197192

198193
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" AND
199-
(CUDA_VERSION VERSION_EQUAL 9.0 OR CUDA_VERSION VERSION_EQUAL 9.1)
194+
(CUDA_VERSION VERSION_EQUAL 9.0 OR
195+
CUDA_VERSION VERSION_EQUAL 9.1 OR
196+
CUDA_VERSION VERSION_EQUAL 9.2 OR
197+
CUDA_VERSION VERSION_EQUAL 10.0)
200198
)
201199
# workaround find_package(CUDA) is using the wrong path to the CXX host compiler
202200
# overwrite the CUDA host compiler variable with the used CXX MSVC
@@ -241,7 +239,7 @@ if(OpenCL_ENABLE)
241239
"AMD APP/include")
242240

243241
find_library(OpenCL_LIBRARY
244-
NAMES
242+
NAMES
245243
OpenCL
246244
OpenCL.lib
247245
NO_DEFAULT_PATH
@@ -293,7 +291,7 @@ endif()
293291
# Find microhttpd
294292
################################################################################
295293

296-
option(MICROHTTPD_ENABLE "Enable or disable the requirement of microhttp (http deamon)" ON)
294+
option(MICROHTTPD_ENABLE "Enable or disable the requirement of microhttp (http daemon)" ON)
297295
if(MICROHTTPD_ENABLE)
298296
find_path(MTHD_INCLUDE_DIR
299297
NAMES
@@ -316,7 +314,7 @@ if(MICROHTTPD_ENABLE)
316314
PATH_SUFFIXES
317315
lib)
318316
if(MHTD STREQUAL "MHTD-NOTFOUND")
319-
message(FATAL_ERROR "microhttpd NOT found: use `-DMICROHTTPD_ENABLE=OFF` to build without http deamon support")
317+
message(FATAL_ERROR "microhttpd NOT found: use `-DMICROHTTPD_ENABLE=OFF` to build without http daemon support")
320318
else()
321319
set(LIBS ${LIBS} ${MHTD})
322320
include_directories(AFTER ${MTHD_INCLUDE_DIR})
@@ -408,10 +406,10 @@ execute_process(
408406
)
409407

410408
if(NOT GIT_COMMIT_HASH STREQUAL "")
411-
add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
409+
add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
412410
endif()
413411
if(NOT GIT_BRANCH STREQUAL "")
414-
add_definitions("-DGIT_BRANCH=${GIT_BRANCH}")
412+
add_definitions("-DGIT_BRANCH=${GIT_BRANCH}")
415413
endif()
416414

417415
# generate backend string
@@ -435,7 +433,19 @@ else()
435433
# activate sse2 and aes-ni
436434
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -maes")
437435
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -maes")
436+
endif()
438437

438+
# add -Wall for debug builds with gcc
439+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
440+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
441+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
442+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
443+
endif()
444+
endif()
445+
446+
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
447+
set(CMAKE_CXX_FLAGS "-Wl,-z,noexecstack ${CMAKE_CXX_FLAGS}")
448+
set(CMAKE_C_FLAGS "-Wl,-z,noexecstack ${CMAKE_C_FLAGS}")
439449
endif()
440450

441451
# activate static libgcc and libstdc++ linking
@@ -448,6 +458,27 @@ if(CMAKE_LINK_STATIC)
448458
endif()
449459
endif()
450460

461+
if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
462+
# asm optimized monero v8 code
463+
enable_language(ASM_MASM)
464+
set_property(SOURCE "xmrstak/backend/cpu/crypto/asm/cryptonight_v8_main_loop.asm" PROPERTY ASM_MASM)
465+
add_library(xmr-stak-asm
466+
STATIC
467+
"xmrstak/backend/cpu/crypto/asm/cryptonight_v8_main_loop.asm"
468+
)
469+
else()
470+
# asm optimized monero v8 code
471+
enable_language(ASM)
472+
set_property(SOURCE "xmrstak/backend/cpu/crypto/asm/cryptonight_v8_main_loop.S" PROPERTY CPP)
473+
set_source_files_properties("xmrstak/backend/cpu/crypto/asm/cryptonight_v8_main_loop.S" PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")
474+
add_library(xmr-stak-asm
475+
STATIC
476+
"xmrstak/backend/cpu/crypto/asm/cryptonight_v8_main_loop.S"
477+
)
478+
endif()
479+
480+
set_property(TARGET xmr-stak-asm PROPERTY LINKER_LANGUAGE C)
481+
451482
# compile C files
452483
file(GLOB SRCFILES_C "xmrstak/backend/cpu/crypto/*.c")
453484

@@ -459,7 +490,7 @@ set_property(TARGET xmr-stak-c PROPERTY C_STANDARD 99)
459490
if(MICROHTTPD_ENABLE)
460491
target_link_libraries(xmr-stak-c ${MHTD})
461492
endif()
462-
target_link_libraries(xmr-stak-c ${LIBS})
493+
target_link_libraries(xmr-stak-c ${LIBS} xmr-stak-asm)
463494

464495
# compile generic backend files
465496
file(GLOB BACKEND_CPP
@@ -475,11 +506,11 @@ add_library(xmr-stak-backend
475506
STATIC
476507
${BACKEND_CPP}
477508
)
478-
target_link_libraries(xmr-stak-backend xmr-stak-c ${CMAKE_DL_LIBS})
509+
target_link_libraries(xmr-stak-backend xmr-stak-c ${CMAKE_DL_LIBS} xmr-stak-asm)
479510

480511
# compile CUDA backend
481512
if(CUDA_FOUND)
482-
file(GLOB CUDASRCFILES
513+
file(GLOB CUDASRCFILES
483514
"xmrstak/backend/nvidia/nvcc_code/*.cu"
484515
"xmrstak/backend/nvidia/*.cpp")
485516

@@ -502,60 +533,61 @@ if(CUDA_FOUND)
502533
)
503534
endif()
504535
target_link_libraries(xmrstak_cuda_backend ${CUDA_LIBRARIES})
505-
target_link_libraries(xmrstak_cuda_backend xmr-stak-backend)
536+
target_link_libraries(xmrstak_cuda_backend xmr-stak-backend xmr-stak-asm)
506537
endif()
507538

508539
# compile AMD backend
509540
if(OpenCL_FOUND)
510-
file(GLOB OPENCLSRCFILES
541+
file(GLOB OPENCLSRCFILES
511542
"xmrstak/backend/amd/amd_gpu/*.cpp"
512543
"xmrstak/backend/amd/*.cpp")
513544
add_library(xmrstak_opencl_backend
514545
SHARED
515546
${OPENCLSRCFILES}
516547
)
517548
target_link_libraries(xmrstak_opencl_backend ${OpenCL_LIBRARY} )
518-
target_link_libraries(xmrstak_opencl_backend xmr-stak-backend)
549+
target_link_libraries(xmrstak_opencl_backend xmr-stak-backend xmr-stak-asm)
519550
endif()
520551

521552
# compile final binary
522553
file(GLOB SRCFILES_CPP "xmrstak/cli/*.cpp")
523554
set_source_files_properties(${SRCFILES_CPP} PROPERTIES LANGUAGE CXX)
524555

525-
add_executable(xmr-stak
526-
${SRCFILES_CPP}
527-
)
556+
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
557+
add_executable(xmr-stak ${SRCFILES_CPP} xmrstak/cli/xmr-stak.manifest)
558+
else()
559+
add_executable(xmr-stak ${SRCFILES_CPP})
560+
endif()
528561

529-
set(EXECUTABLE_OUTPUT_PATH "bin")
530-
set(LIBRARY_OUTPUT_PATH "bin")
562+
set(EXECUTABLE_OUTPUT_PATH "bin" CACHE STRING "Path to place executables relative to ${CMAKE_INSTALL_PREFIX}")
563+
set(LIBRARY_OUTPUT_PATH "bin" CACHE STRING "Path to place libraries relative to ${CMAKE_INSTALL_PREFIX}")
531564

532-
target_link_libraries(xmr-stak ${LIBS} xmr-stak-c xmr-stak-backend)
565+
target_link_libraries(xmr-stak ${LIBS} xmr-stak-c xmr-stak-backend xmr-stak-asm)
533566

534567
################################################################################
535568
# Install
536569
################################################################################
537570

538-
539571
# do not install the binary if the project and install are equal
540572
if( NOT CMAKE_INSTALL_PREFIX STREQUAL PROJECT_BINARY_DIR )
541573
install(TARGETS xmr-stak
542-
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
574+
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_OUTPUT_PATH}")
543575
if(CUDA_FOUND)
544576
if(WIN32)
545577
install(TARGETS xmrstak_cuda_backend
546-
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
578+
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/${LIBRARY_OUTPUT_PATH}")
547579
else()
548580
install(TARGETS xmrstak_cuda_backend
549-
LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
581+
LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/${LIBRARY_OUTPUT_PATH}")
550582
endif()
551583
endif()
552584
if(OpenCL_FOUND)
553585
if(WIN32)
554586
install(TARGETS xmrstak_opencl_backend
555-
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
587+
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/${LIBRARY_OUTPUT_PATH}")
556588
else()
557589
install(TARGETS xmrstak_opencl_backend
558-
LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
590+
LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/${LIBRARY_OUTPUT_PATH}")
559591
endif()
560592
endif()
561593
else()

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ ENV XMRSTAK_CMAKE_FLAGS -DXMR-STAK_COMPILE=generic -DCUDA_ENABLE=ON -DOpenCL_ENA
88
# Innstall packages
99
RUN apt-get update \
1010
&& set -x \
11-
&& apt-get install -qq --no-install-recommends -y ca-certificates cmake cuda-core-9-0 git cuda-cudart-dev-9-0 libhwloc-dev libmicrohttpd-dev libssl-dev \
11+
&& apt-get install -qq --no-install-recommends -y build-essential ca-certificates cmake cuda-core-9-0 git cuda-cudart-dev-9-0 libhwloc-dev libmicrohttpd-dev libssl-dev \
1212
&& git clone $GIT_REPOSITORY \
1313
&& cd /xmr-stak \
1414
&& cmake ${XMRSTAK_CMAKE_FLAGS} . \
1515
&& make \
1616
&& cd - \
1717
&& mv /xmr-stak/bin/* /usr/local/bin/ \
1818
&& rm -rf /xmr-stak \
19-
&& apt-get purge -y -qq cmake cuda-core-9-0 git cuda-cudart-dev-9-0 libhwloc-dev libmicrohttpd-dev libssl-dev \
19+
&& apt-get purge -y -qq build-essential cmake cuda-core-9-0 git cuda-cudart-dev-9-0 libhwloc-dev libmicrohttpd-dev libssl-dev \
2020
&& apt-get clean -qq
2121

2222
VOLUME /mnt

0 commit comments

Comments
 (0)