- Add DragonX coin and rx/hush algorithm support - Update branding to XMRig-HAC / dragonx.is - Update repository URLs to git.hush.is - Replace example wallet addresses with placeholders - Update .gitignore for build directories - Document fork changes in README and CHANGELOG
113 lines
3.1 KiB
Bash
Executable File
113 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# XMRig Windows Cross-Compilation Build Script
|
|
# Builds xmrig for Windows using MinGW-w64 on Linux
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
XMRIG_DIR="$(dirname "$SCRIPT_DIR")"
|
|
BUILD_DIR="$XMRIG_DIR/build-windows"
|
|
DEPS_DIR="$XMRIG_DIR/deps-windows"
|
|
OPENSSL_VERSION="1.1.1w"
|
|
|
|
echo "=== XMRig Windows Build ==="
|
|
echo "Source: $XMRIG_DIR"
|
|
echo "Build: $BUILD_DIR"
|
|
echo "Deps: $DEPS_DIR"
|
|
|
|
# Check for MinGW-w64
|
|
if ! command -v x86_64-w64-mingw32-gcc-posix &> /dev/null; then
|
|
echo "Error: MinGW-w64 not found. Install with:"
|
|
echo " sudo apt install mingw-w64"
|
|
exit 1
|
|
fi
|
|
|
|
# Create directories
|
|
mkdir -p "$BUILD_DIR"
|
|
mkdir -p "$DEPS_DIR/include"
|
|
mkdir -p "$DEPS_DIR/lib"
|
|
|
|
# Build OpenSSL if needed
|
|
if [ ! -f "$DEPS_DIR/lib/libssl.a" ]; then
|
|
echo "=== Building OpenSSL $OPENSSL_VERSION ==="
|
|
cd "$DEPS_DIR"
|
|
|
|
if [ ! -f "openssl-${OPENSSL_VERSION}.tar.gz" ]; then
|
|
wget "https://openssl.org/source/old/1.1.1/openssl-${OPENSSL_VERSION}.tar.gz"
|
|
fi
|
|
|
|
if [ ! -d "openssl-${OPENSSL_VERSION}" ]; then
|
|
tar -xzf "openssl-${OPENSSL_VERSION}.tar.gz"
|
|
fi
|
|
|
|
cd "openssl-${OPENSSL_VERSION}"
|
|
|
|
# Configure for Windows cross-compilation
|
|
./Configure mingw64 \
|
|
--cross-compile-prefix=x86_64-w64-mingw32- \
|
|
no-shared \
|
|
no-asm \
|
|
no-zlib \
|
|
no-comp \
|
|
--prefix="$DEPS_DIR"
|
|
|
|
make -j$(nproc)
|
|
make install_sw
|
|
cd "$DEPS_DIR"
|
|
fi
|
|
|
|
# Build libuv if needed
|
|
if [ ! -f "$DEPS_DIR/lib/libuv.a" ]; then
|
|
echo "=== Building libuv dependency ==="
|
|
cd "$DEPS_DIR"
|
|
|
|
if [ ! -d "libuv-v1.51.0" ]; then
|
|
if [ ! -f "libuv.tar.gz" ]; then
|
|
curl -L -o libuv.tar.gz https://github.com/libuv/libuv/archive/refs/tags/v1.51.0.tar.gz
|
|
fi
|
|
tar -xzf libuv.tar.gz
|
|
fi
|
|
|
|
cd libuv-v1.51.0
|
|
mkdir -p build && cd build
|
|
cmake .. \
|
|
-DCMAKE_TOOLCHAIN_FILE="$XMRIG_DIR/cmake/mingw-w64-toolchain.cmake" \
|
|
-DCMAKE_INSTALL_PREFIX="$DEPS_DIR" \
|
|
-DLIBUV_BUILD_SHARED=OFF \
|
|
-DBUILD_TESTING=OFF
|
|
make -j$(nproc)
|
|
make install
|
|
fi
|
|
|
|
cd "$BUILD_DIR"
|
|
|
|
echo "=== Configuring XMRig ==="
|
|
cmake "$XMRIG_DIR" \
|
|
-DCMAKE_TOOLCHAIN_FILE="$XMRIG_DIR/cmake/mingw-w64-toolchain.cmake" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_STATIC=ON \
|
|
-DWITH_TLS=ON \
|
|
-DWITH_HWLOC=OFF \
|
|
-DWITH_OPENCL=OFF \
|
|
-DWITH_CUDA=OFF \
|
|
-DXMRIG_DEPS="$DEPS_DIR" \
|
|
-DOPENSSL_ROOT_DIR:PATH="$DEPS_DIR" \
|
|
-DOPENSSL_INCLUDE_DIR:PATH="$DEPS_DIR/include" \
|
|
-DOPENSSL_CRYPTO_LIBRARY:FILEPATH="$DEPS_DIR/lib/libcrypto.a" \
|
|
-DOPENSSL_SSL_LIBRARY:FILEPATH="$DEPS_DIR/lib/libssl.a" \
|
|
-DOPENSSL_LIBRARIES="$DEPS_DIR/lib/libssl.a;$DEPS_DIR/lib/libcrypto.a" \
|
|
-DUV_INCLUDE_DIR="$DEPS_DIR/include" \
|
|
-DUV_LIBRARY="$DEPS_DIR/lib/libuv.a"
|
|
|
|
echo "=== Building XMRig ==="
|
|
make -j$(nproc)
|
|
|
|
# Strip the executable
|
|
x86_64-w64-mingw32-strip xmrig.exe 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "=== Build Complete ==="
|
|
ls -la *.exe 2>/dev/null || echo "Executable not found"
|
|
echo ""
|
|
echo "Copy the .exe and WinRing0x64.sys to Windows to run"
|