Post
Topic
Board Mining (Altcoins)
Re: [ANN]: cpuminer-opt v3.7.6, open source optimized multi-algo CPU miner
by
joblo
on 18/12/2017, 19:31:45 UTC

since then i compiled it all to a script:
Code:
#!/bin/bash
OPENSSL_VER='1.1.0g'
CURL_VER='7.56.1'
GMP_VER='6.1.2'
DIR=$(pwd)
CORES=$(grep -c ^processor /proc/cpuinfo)

sudo apt-get install build-essential libz-mingw-w64-dev libz-mingw-w64 git autoconf -y

[[ -f openssl-${OPENSSL_VER}.tar.gz ]] || wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz
[[ -d openssl-${OPENSSL_VER} ]] || tar xvfz openssl-${OPENSSL_VER}.tar.gz
cd openssl-${OPENSSL_VER}
./Configure mingw64 shared --cross-compile-prefix=x86_64-w64-mingw32- || exit 1
make -j ${CORES} || exit 1

cd ${DIR}
[[ -f curl-${CURL_VER}.tar.bz2 ]] || wget https://curl.haxx.se/download/curl-${CURL_VER}.tar.bz2
[[ -d curl-${CURL_VER} ]] || tar xvfj curl-${CURL_VER}.tar.bz2
cd curl-${CURL_VER}
./configure --with-winssl --with-winidn --host=x86_64-w64-mingw32 || exit 1
make -j ${CORES} || exit 1

cd ${DIR}
[[ -f gmp-${GMP_VER}.tar.bz2 ]] || wget https://gmplib.org/download/gmp/gmp-${GMP_VER}.tar.bz2
[[ -d gmp-${GMP_VER} ]] || tar xvfj gmp-${GMP_VER}.tar.bz2
cd gmp-${GMP_VER}
./configure --host=x86_64-w64-mingw32 || exit 1
make -j ${CORES} || exit 1

cd ${DIR}
[[ -d cpuminer-opt ]] || git clone https://github.com/JayDDee/cpuminer-opt.git
cd cpuminer-opt
ln -s ../gmp-${GMP_VER}/gmp.h

cat > winbuild-cross.sh << EOF
#!/bin/bash

export LDFLAGS="-L${DIR}/curl-${CURL_VER}/lib/.libs -L${DIR}/gmp-${GMP_VER}/.libs -L${DIR}/openssl-${OPENSSL_VER}"
F="--with-curl=${DIR}/curl-${CURL_VER} --with-crypto=${DIR}/openssl-${OPENSSL_VER} --host=x86_64-w64-mingw32"

sed -i 's/"-lpthread"/"-lpthreadGC2"/g' configure.ac


mkdir release
cp /usr/x86_64-w64-mingw32/lib/zlib1.dll release/
cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll release/
cp /usr/lib/gcc/x86_64-w64-mingw32/6.2-win32/libstdc++-6.dll release/
cp /usr/lib/gcc/x86_64-w64-mingw32/6.2-win32/libgcc_s_seh-1.dll release/
cp ${DIR}/openssl-${OPENSSL_VER}/libcrypto-1_1-x64.dll release/
cp ${DIR}/curl-${CURL_VER}/lib/.libs/libcurl-4.dll release/


make distclean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -march=core-avx2 -Wall -DFOUR_WAY" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-4way.exe

make clean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -march=core-avx2 -Wall" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-aes-avx2.exe

make clean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -march=znver1 -Wall" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-aes-sha.exe

make clean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -march=corei7-avx -Wall" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-aes-avx.exe

make clean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -maes -msse4.2 -Wall" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-aes-sse42.exe

make clean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -march=corei7 -Wall" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-sse42.exe

make clean || echo clean
rm -f config.status
./autogen.sh || echo done
CFLAGS="-O3 -march=core2 -Wall" ./configure \$F
make -j ${CORES}
strip -s cpuminer.exe
mv cpuminer.exe release/cpuminer-sse2.exe

EOF

chmod a+x winbuild-cross.sh
./winbuild-cross.sh

This is perfect. It's exactly what I needed. Since 4way is somewhat stalled right now I tried it out in a Ubuntu-16.04 VM.
I ran the script manually, had to make adjustments for compiler version, and lack or "znver1" arch but I built a 4way with sha.
I just can't run it anywhere.

I just need to tweak a few things and the next release should have the full suite of binaries, with the addition of AVX2-SHA
and 4WAY-SHA.