diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7186d049c..990f6ee3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,7 @@ jobs: - x86_64-linux-nowallet - x86_64-macos - x86_64-win + - x86_64-win-experimental - x86_64-linux-experimental include: - name: i686-linux @@ -150,6 +151,24 @@ jobs: dep-opts: "" config-opts: "--enable-gui=qt5" goal: install + - name: x86_64-win-experimental + host: x86_64-w64-mingw32 + arch: "i386" + os: ubuntu-18.04 + packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt + postinstall: | + sudo dpkg -s mono-runtime && sudo apt-get remove mono-runtime || echo "Very nothing to uninstall." + sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix + sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix + sudo update-binfmts --import /usr/share/binfmts/wine + run-bench: false + test-script: | + make check $MAKEJOBS VERBOSE=1 + check-security: true + check-symbols: false + dep-opts: "AVX2=1 MINGW=1" + config-opts: "--with-intel-avx2 --enable-gui=qt5" + goal: install - name: x86_64-macos host: x86_64-apple-darwin11 os: ubuntu-18.04 @@ -164,7 +183,7 @@ jobs: sdk: 10.11 sdk-shasum: "bec9d089ebf2e2dd59b1a811a38ec78ebd5da18cbbcd6ab39d1e59f64ac5033f" - name: x86_64-linux-experimental - host: x86_64-unknown-linux-gnu + host: x86_64-linux-gnu os: ubuntu-18.04 packages: bc python3-zmq run-bench: true diff --git a/configure.ac b/configure.ac index ad26d3050..badc9ccc6 100644 --- a/configure.ac +++ b/configure.ac @@ -725,16 +725,6 @@ BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRA fi -if test x$intel_avx2 = xyes; then - case $host in - x86_64-*-linux*) - AC_CHECK_LIB([IPSec_MB],[sha1_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) - AC_CHECK_LIB([IPSec_MB],[sha256_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) - AC_CHECK_LIB([IPSec_MB],[sha512_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) - AC_DEFINE(USE_AVX2, 1, [Define this symbol if intel axv2 works]) -esac -fi - if test x$armv8_crypto = xyes; then AC_MSG_CHECKING([whether to build with armv8 crypto]) AC_MSG_RESULT(yes) @@ -822,6 +812,43 @@ else fi fi +if test x$intel_avx2 = xyes; then + case $host in + x86_64-*-linux*) + AC_CHECK_LIB([IPSec_MB],[sha1_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) + AC_CHECK_LIB([IPSec_MB],[sha256_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) + AC_CHECK_LIB([IPSec_MB],[sha512_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) + AC_DEFINE(USE_AVX2, 1, [Define this symbol if intel axv2 works]) +;; + *mingw*) + AC_CHECK_LIB([IPSec_MB],[sha1_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) + AC_CHECK_LIB([IPSec_MB],[sha256_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) + AC_CHECK_LIB([IPSec_MB],[sha512_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing)) + AC_CHECK_LIB([Qt5PlatformSupport],[main],LIBS+=" -lQt5PlatformSupport", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([mingwthrd], [main],LIBS+=" -lmingwthrd", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([kernel32], [main],LIBS+=" -lkernel32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([user32], [main],LIBS+=" -luser32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([gdi32], [main],LIBS+=" -lgdi32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([comdlg32], [main],LIBS+=" -lcomdlg32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([winspool], [main],LIBS+=" -lwinspool", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([winmm], [main],LIBS+=" -lwinmm", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([shell32], [main],LIBS+=" -lshell32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([comctl32], [main],LIBS+=" -lcomctl32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([ole32], [main],LIBS+=" -lole32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([oleaut32], [main],LIBS+=" -loleaut32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([uuid], [main],LIBS+=" -luuid", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([rpcrt4], [main],LIBS+=" -lrpcrt4", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([advapi32], [main],LIBS+=" -ladvapi32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([ws2_32], [main],LIBS+=" -lws2_32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([mswsock], [main],LIBS+=" -lmswsock", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([shlwapi], [main],LIBS+=" -lshlwapi", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([iphlpapi], [main],LIBS+=" -liphlpapi", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([crypt32], [main],LIBS+=" -lcrypt32", AC_MSG_ERROR(lib missing)) + AC_CHECK_LIB([ssp], [main],LIBS+=" -lssp", AC_MSG_ERROR(lib missing)) + AC_DEFINE(USE_AVX2, 1, [Define this symbol if intel axv2 works]) +esac +fi + save_CXXFLAGS="${CXXFLAGS}" CXXFLAGS="${CXXFLAGS} ${CRYPTO_CFLAGS} ${SSL_CFLAGS}" AC_CHECK_DECLS([EVP_MD_CTX_new],,,[AC_INCLUDES_DEFAULT diff --git a/depends/packages/intel-ipsec-mb.mk b/depends/packages/intel-ipsec-mb.mk index 881803fb1..29013eb37 100644 --- a/depends/packages/intel-ipsec-mb.mk +++ b/depends/packages/intel-ipsec-mb.mk @@ -1,19 +1,20 @@ package=intel-ipsec-mb -$(package)_version=1.0 +$(package)_version=1.2 $(package)_download_path=https://github.com/intel/intel-ipsec-mb/archive/refs/tags $(package)_file_name=v$($(package)_version).tar.gz -$(package)_sha256_hash=03501aea472d3c8fdf8f1f207816eefeaf5e4ebbdc71d88dcb26b2519841bb74 +$(package)_sha256_hash=f680b28369d02dc0978eb9b4bee6da9a132d66c666298e087a2b3e247548d99e $(package)_patches=remove_digest_init.patch $(package)_dependencies=native_nasm +define $(package)_set_vars +$(package)_build_opts=CC=$(host)-gcc +$(package)_build_opts+=LDFLAGS="-fstack-protector" +endef + define $(package)_preprocess_cmds patch -p1 < $($(package)_patch_dir)/remove_digest_init.patch endef -define $(package)_build_cmds - $(MAKE) NASM=$(build_prefix)/bin/nasm -endef - define $(package)_stage_cmds - $(MAKE) NASM=$(build_prefix)/bin/nasm PREFIX=$($(package)_staging_prefix_dir) SHARED=n NOLDCONFIG=y install + $(MAKE) NASM=$(build_prefix)/bin/nasm PREFIX=$($(package)_staging_prefix_dir) SHARED=n NOLDCONFIG=y install $($(package)_build_opts) endef diff --git a/depends/packages/native_nasm.mk b/depends/packages/native_nasm.mk index b205279f3..fd256e1cb 100644 --- a/depends/packages/native_nasm.mk +++ b/depends/packages/native_nasm.mk @@ -17,5 +17,5 @@ define $(package)_stage_cmds endef define $(package)_postprocess_cmds - rm -rf share + rm -rf share endef diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index ceab33045..30557bb72 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -16,6 +16,7 @@ upnp_packages=miniupnpc avx2_native_packages:=native_nasm avx2_x86_64_linux_packages:=intel-ipsec-mb +avx2_x86_64_mingw32_packages:=intel-ipsec-mb darwin_native_packages = native_biplist native_ds_store native_mac_alias diff --git a/src/crypto/sha1.cpp b/src/crypto/sha1.cpp index 7680279a5..fcd510e40 100644 --- a/src/crypto/sha1.cpp +++ b/src/crypto/sha1.cpp @@ -10,7 +10,7 @@ #include #if (defined(__ia64__) || defined(__x86_64__)) && \ - (defined(__linux__) && !defined(__APPLE__)) && \ + !defined(__APPLE__) && \ (defined(USE_AVX2)) #include #endif diff --git a/src/crypto/sha256.cpp b/src/crypto/sha256.cpp index dbdc1eb48..bd61c3858 100644 --- a/src/crypto/sha256.cpp +++ b/src/crypto/sha256.cpp @@ -10,7 +10,7 @@ #include #if (defined(__ia64__) || defined(__x86_64__)) && \ - (defined(__linux__) && !defined(__APPLE__)) && \ + !defined(__APPLE__) && \ (defined(USE_AVX2)) #include #endif diff --git a/src/crypto/sha512.cpp b/src/crypto/sha512.cpp index 26a0ff117..c911ed312 100644 --- a/src/crypto/sha512.cpp +++ b/src/crypto/sha512.cpp @@ -10,7 +10,7 @@ #include #if (defined(__ia64__) || defined(__x86_64__)) && \ - (defined(__linux__) && !defined(__APPLE__)) && \ + !defined(__APPLE__) && \ (defined(USE_AVX2)) #include #endif