summaryrefslogtreecommitdiffstats
path: root/doc/compile.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/compile.md')
-rw-r--r--doc/compile.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/doc/compile.md b/doc/compile.md
new file mode 100644
index 0000000..04b1fe4
--- /dev/null
+++ b/doc/compile.md
@@ -0,0 +1,81 @@
+# Compile xmr-stak
+
+## Content Overview
+* [Build System](#build-system)
+* [Generic Build Options](#generic-build-options)
+* [CPU Build Options](#cpu-build-options)
+* [AMD Build Options](#amd-build-options)
+* [NVIDIA Build Options](#nvidia-build-options)
+* [Compile in Windows](compile_Windows.md)
+* [Compile in Linux](compile_Linux.md)
+* [Compile in FreeBSD](compile_FreeBSD.md)
+
+## Build System
+
+The build system is CMake, if you are not familiar with CMake you can learn more [here](https://cmake.org/runningcmake/).
+
+By default the miner will be build with all dependencies. Each optional dependency can be disabled (this will reduce the miner features).
+
+There are two easy ways to set variables for `cmake` to configure *xmr-stak*
+- use the ncurses GUI
+ - `ccmake .`
+ - edit your options
+ - end the GUI by pressing the key `c`(create) and than `g`(generate)
+- set Options on the command line
+ - enable a option: `cmake . -DNAME_OF_THE_OPTION=ON`
+ - disable a option `cmake . -DNAME_OF_THE_OPTION=OFF`
+ - set a value `cmake . -DNAME_OF_THE_OPTION=value`
+
+After the configuration you need to compile the miner, follow the guide for your platform:
+* [Compile in Windows](compile_Windows.md)
+* [Compile in Linux](compile_Linux.md)
+* [Compile in FreeBSD](compile_FreeBSD.md)
+
+## Generic Build Options
+- `CMAKE_INSTALL_PREFIX` install miner to the home folder
+ - `cmake . -DCMAKE_INSTALL_PREFIX=$HOME/xmr-stak-cpu`
+ - you can find the binary and the `config.txt` file after `make install` in `$HOME/xmr-stak-cpu/bin`
+- `CMAKE_LINK_STATIC` link libgcc and libstdc++ libraries static (default OFF)
+ - disable with `cmake . -DCMAKE_LINK_STATIC=ON`
+- `CMAKE_BUILD_TYPE` set the build type
+ - valid options: `Release` or `Debug`
+ - you should always keep `Release` for your productive miners
+- `MICROHTTPD_ENABLE` allow to disable/enable the dependency *microhttpd*
+ - there is no *http* interface available if option is disabled: `cmake . -DMICROHTTPD_ENABLE=OFF`
+- `OpenSSL_ENABLE` allow to disable/enable the dependency *OpenSSL*
+ - it is not possible to connect to a *https* secured pool if option is disabled: `cmake . -DOpenSSL_ENABLE=OFF`
+
+## CPU Build Options
+
+- `CPU_ENABLE` allow to disable/enable the CPU backend of the miner
+- `HWLOC_ENABLE` allow to disable/enable the dependency *hwloc*
+ - the config suggestion is not optimal if option is disabled: `cmake . -DHWLOC_ENABLE=OFF`
+ - disabling can be reduce the miner performance
+
+## AMD Build Options
+
+- `OpenCL_ENABLE` allow to disable/enable the AMD backend of the miner
+
+## NVIDIA Build Options
+
+- `CUDA_ENABLE` allow to disable/enable the NVIDIA backend of the miner
+- `CUDA_ARCH` build for a certain compute architecture
+ - this option needs a semicolon separated list
+ - `cmake . -DCUDA_ARCH=61` or `cmake . -DCUDA_ARCH=20;61`
+ - [list](https://developer.nvidia.com/cuda-gpus) with NVIDIA compute architectures
+ - by default the miner is created for all currently available compute architectures
+- `CUDA_COMPILER` select the compiler for the device code
+ - valid options: `nvcc` or `clang` if clang 3.9+ is installed
+```
+ # compile host and device code with clang
+ export CC=/usr/bin/clang
+ export CXX=/usr/bin/clang++
+ cmake . -DCUDA_COMPILER=clang
+```
+- `XMR-STAK_LARGEGRID` use `32` or `64` bit integer for on device indices
+ - default is enabled
+ - on old GPUs it can increase the hash rate if disabled: `cmake . -DXMR-STAK_LARGEGRID=OFF`
+ - if disabled it is not allowed to use more than `1000` threads on the device
+- `XMR-STAK_THREADS` give the compiler information which value for `threads` is used at runtime
+ - default is `0` (compile time optimization)
+ - if the miner is compiled and used at runtime with the some value it can increase the hash rate: `cmake . -DXMR-STAK_THREADS=32`
OpenPOWER on IntegriCloud