This commit is contained in:
Jay D Dee
2024-12-16 19:17:19 -05:00
parent 06624a0ff2
commit 2b1037a7c7
7 changed files with 1034 additions and 790 deletions

View File

@@ -292,10 +292,6 @@ cpuminer_LDADD = @LIBCURL@ @JANSSON_LIBS@ @PTHREAD_LIBS@ @WS2_LIBS@ -lgmp
cpuminer_CPPFLAGS = @LIBCURL_CPPFLAGS@ $(ALL_INCLUDES) cpuminer_CPPFLAGS = @LIBCURL_CPPFLAGS@ $(ALL_INCLUDES)
cpuminer_CFLAGS = -Wno-pointer-sign -Wno-pointer-to-int-cast $(disable_flags) cpuminer_CFLAGS = -Wno-pointer-sign -Wno-pointer-to-int-cast $(disable_flags)
if HAVE_WINDOWS
cpuminer_CFLAGS += -Wl,--stack,10485760
endif
if HAVE_WINDOWS if HAVE_WINDOWS
# use to profile an object # use to profile an object
# gprof_cflags = -pg -g3 # gprof_cflags = -pg -g3

View File

@@ -75,6 +75,10 @@ If not what makes it happen or not happen?
Change Log Change Log
---------- ----------
v24.7
ARM: compile works for Windows using MSys2 & MingW, see wiki for details.
v24.6 v24.6
ARM: Fixed scryptn2, x16*, broken in v24.2. ARM: Fixed scryptn2, x16*, broken in v24.2.

228
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for cpuminer-opt 24.6. # Generated by GNU Autoconf 2.71 for cpuminer-opt 24.7.
# #
# #
# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -608,8 +608,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='cpuminer-opt' PACKAGE_NAME='cpuminer-opt'
PACKAGE_TARNAME='cpuminer-opt' PACKAGE_TARNAME='cpuminer-opt'
PACKAGE_VERSION='24.6' PACKAGE_VERSION='24.7'
PACKAGE_STRING='cpuminer-opt 24.6' PACKAGE_STRING='cpuminer-opt 24.7'
PACKAGE_BUGREPORT='' PACKAGE_BUGREPORT=''
PACKAGE_URL='' PACKAGE_URL=''
@@ -1360,7 +1360,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures cpuminer-opt 24.6 to adapt to many kinds of systems. \`configure' configures cpuminer-opt 24.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1432,7 +1432,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of cpuminer-opt 24.6:";; short | recursive ) echo "Configuration of cpuminer-opt 24.7:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1538,7 +1538,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
cpuminer-opt configure 24.6 cpuminer-opt configure 24.7
generated by GNU Autoconf 2.71 generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc. Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1985,7 +1985,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by cpuminer-opt $as_me 24.6, which was It was created by cpuminer-opt $as_me 24.7, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw $ $0$ac_configure_args_raw
@@ -3593,7 +3593,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='cpuminer-opt' PACKAGE='cpuminer-opt'
VERSION='24.6' VERSION='24.7'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6502,34 +6502,33 @@ then :
fi fi
MINGW_TARGET=`$CC -dumpmachine 2>&1` case $target in
case $MINGW_TARGET in
arm*-*-*)
have_arm=true
;;
i*86-*-mingw*)
have_x86=true
have_win32=true
CFLAGS="-Icompat/pthreads $CFLAGS"
PTHREAD_LDFLAGS="-Lcompat/pthreads/x86"
WS2_LIBS="-lws2_32"
;;
x86_64-*-mingw*|amd64-*-mingw*)
have_x86_64=true
have_win32=true
CFLAGS="-Icompat/pthreads $CFLAGS"
PTHREAD_LDFLAGS="-Lcompat/pthreads/x64"
# SHOULD BE AT END! after -lcrypto #
WS2_LIBS="-L/mingw/x86_64-w64-mingw32/lib -lws2_32"
;;
i*86-*-*) i*86-*-*)
have_x86=true have_x86=true
;; ;;
x86_64-*-*|amd64-*-*) x86_64-*-*|amd64-*-*)
have_x86_64=true have_x86_64=true
;; ;;
arm*-*-*)
have_arm=true
;;
powerpc*-*-*)
have_ppc=true
;;
esac esac
PTHREAD_FLAGS="-pthread"
WS2_LIBS=""
case $target in
*-*-mingw*)
have_win32=true
PTHREAD_FLAGS=""
WS2_LIBS="-lws2_32"
;;
esac
# Check whether --enable-assembly was given. # Check whether --enable-assembly was given.
if test ${enable_assembly+y} if test ${enable_assembly+y}
then : then :
@@ -6705,50 +6704,6 @@ else $as_nop
fi fi
# GC2 for GNU static
if test "x$have_win32" = "xtrue" ; then
# MinGW
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
printf %s "checking for pthread_create in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_create+y}
then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
char pthread_create ();
int
main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_pthread_pthread_create=yes
else $as_nop
ac_cv_lib_pthread_pthread_create=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5
printf "%s\n" "$ac_cv_lib_pthread_pthread_create" >&6; }
if test "x$ac_cv_lib_pthread_pthread_create" = xyes
then :
PTHREAD_LIBS="-lpthreadGC2"
fi
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
printf %s "checking for pthread_create in -lpthread... " >&6; } printf %s "checking for pthread_create in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_create+y} if test ${ac_cv_lib_pthread_pthread_create+y}
@@ -6787,11 +6742,134 @@ printf "%s\n" "$ac_cv_lib_pthread_pthread_create" >&6; }
if test "x$ac_cv_lib_pthread_pthread_create" = xyes if test "x$ac_cv_lib_pthread_pthread_create" = xyes
then : then :
PTHREAD_LIBS="-lpthread" PTHREAD_LIBS="-lpthread"
else $as_nop
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreadGC2" >&5
printf %s "checking for pthread_create in -lpthreadGC2... " >&6; }
if test ${ac_cv_lib_pthreadGC2_pthread_create+y}
then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthreadGC2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
char pthread_create ();
int
main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_pthreadGC2_pthread_create=yes
else $as_nop
ac_cv_lib_pthreadGC2_pthread_create=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreadGC2_pthread_create" >&5
printf "%s\n" "$ac_cv_lib_pthreadGC2_pthread_create" >&6; }
if test "x$ac_cv_lib_pthreadGC2_pthread_create" = xyes
then :
PTHREAD_LIBS="-lpthreadGC2"
else $as_nop
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreadGC1" >&5
printf %s "checking for pthread_create in -lpthreadGC1... " >&6; }
if test ${ac_cv_lib_pthreadGC1_pthread_create+y}
then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthreadGC1 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
char pthread_create ();
int
main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_pthreadGC1_pthread_create=yes
else $as_nop
ac_cv_lib_pthreadGC1_pthread_create=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreadGC1_pthread_create" >&5
printf "%s\n" "$ac_cv_lib_pthreadGC1_pthread_create" >&6; }
if test "x$ac_cv_lib_pthreadGC1_pthread_create" = xyes
then :
PTHREAD_LIBS="-lpthreadGC1"
else $as_nop
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreadGC" >&5
printf %s "checking for pthread_create in -lpthreadGC... " >&6; }
if test ${ac_cv_lib_pthreadGC_pthread_create+y}
then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthreadGC $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
char pthread_create ();
int
main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_pthreadGC_pthread_create=yes
else $as_nop
ac_cv_lib_pthreadGC_pthread_create=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreadGC_pthread_create" >&5
printf "%s\n" "$ac_cv_lib_pthreadGC_pthread_create" >&6; }
if test "x$ac_cv_lib_pthreadGC_pthread_create" = xyes
then :
PTHREAD_LIBS="-lpthreadGC"
fi
fi fi
fi fi
LDFLAGS="$PTHREAD_LDFLAGS $LDFLAGS" fi
#LDFLAGS="$PTHREAD_LDFLAGS $LDFLAGS"
# PTHREAD_LIBS="$PTHREAD_LIBS" # PTHREAD_LIBS="$PTHREAD_LIBS"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __uint128_t is supported" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __uint128_t is supported" >&5
@@ -7508,7 +7586,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by cpuminer-opt $as_me 24.6, which was This file was extended by cpuminer-opt $as_me 24.7, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -7576,7 +7654,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped' ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\ ac_cs_version="\\
cpuminer-opt config.status 24.6 cpuminer-opt config.status 24.7
configured by $0, generated by GNU Autoconf 2.71, configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@@ -1,4 +1,4 @@
AC_INIT([cpuminer-opt], [24.6]) AC_INIT([cpuminer-opt], [24.7])
AC_PREREQ([2.59c]) AC_PREREQ([2.59c])
AC_CANONICAL_SYSTEM AC_CANONICAL_SYSTEM
@@ -41,34 +41,33 @@ AC_CHECK_DECLS([be32dec, le32dec, be32enc, le32enc, le16dec, le16enc], [], [],
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
AC_CHECK_FUNCS([getopt_long]) AC_CHECK_FUNCS([getopt_long])
MINGW_TARGET=`$CC -dumpmachine 2>&1` case $target in
case $MINGW_TARGET in
arm*-*-*)
have_arm=true
;;
i*86-*-mingw*)
have_x86=true
have_win32=true
CFLAGS="-Icompat/pthreads $CFLAGS"
PTHREAD_LDFLAGS="-Lcompat/pthreads/x86"
WS2_LIBS="-lws2_32"
;;
x86_64-*-mingw*|amd64-*-mingw*)
have_x86_64=true
have_win32=true
CFLAGS="-Icompat/pthreads $CFLAGS"
PTHREAD_LDFLAGS="-Lcompat/pthreads/x64"
# SHOULD BE AT END! after -lcrypto #
WS2_LIBS="-L/mingw/x86_64-w64-mingw32/lib -lws2_32"
;;
i*86-*-*) i*86-*-*)
have_x86=true have_x86=true
;; ;;
x86_64-*-*|amd64-*-*) x86_64-*-*|amd64-*-*)
have_x86_64=true have_x86_64=true
;; ;;
arm*-*-*)
have_arm=true
;;
powerpc*-*-*)
have_ppc=true
;;
esac esac
PTHREAD_FLAGS="-pthread"
WS2_LIBS=""
case $target in
*-*-mingw*)
have_win32=true
PTHREAD_FLAGS=""
WS2_LIBS="-lws2_32"
;;
esac
AC_ARG_ENABLE([assembly], AC_ARG_ENABLE([assembly],
AS_HELP_STRING([--disable-assembly], [disable assembly-language routines])) AS_HELP_STRING([--disable-assembly], [disable assembly-language routines]))
if test x$enable_assembly != xno; then if test x$enable_assembly != xno; then
@@ -113,15 +112,13 @@ fi
AC_CHECK_LIB(jansson, json_loads, request_jansson=false, request_jansson=true) AC_CHECK_LIB(jansson, json_loads, request_jansson=false, request_jansson=true)
# GC2 for GNU static AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",
if test "x$have_win32" = "xtrue" ; then AC_CHECK_LIB([pthreadGC2], [pthread_create], PTHREAD_LIBS="-lpthreadGC2",
# MinGW AC_CHECK_LIB([pthreadGC1], [pthread_create], PTHREAD_LIBS="-lpthreadGC1",
AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthreadGC2",[]) AC_CHECK_LIB([pthreadGC], [pthread_create], PTHREAD_LIBS="-lpthreadGC"
else ))))
AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",[])
fi
LDFLAGS="$PTHREAD_LDFLAGS $LDFLAGS" #LDFLAGS="$PTHREAD_LDFLAGS $LDFLAGS"
# PTHREAD_LIBS="$PTHREAD_LIBS" # PTHREAD_LIBS="$PTHREAD_LIBS"
AC_MSG_CHECKING(whether __uint128_t is supported) AC_MSG_CHECKING(whether __uint128_t is supported)

1512
configure~

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,12 @@
#include "miner.h" #include "miner.h"
#include "simd-utils.h" #include "simd-utils.h"
#if defined(__aarch64__) // missing on mingw on arm
#if defined(__aarch64__) && !defined(WIN32)
#define ARM_AUXV
#endif
#if defined(ARM_AUXV)
// for arm's "cpuid" // for arm's "cpuid"
#include <sys/auxv.h> #include <sys/auxv.h>
#include <asm/hwcap.h> #include <asm/hwcap.h>
@@ -309,7 +314,7 @@ static inline void cpuid( unsigned int leaf, unsigned int subleaf,
#endif #endif
} }
#elif defined(__aarch64__) #elif defined(ARM_AUXV)
// Always test if HWCAP variable is defined in the kernel before attempting // Always test if HWCAP variable is defined in the kernel before attempting
// to compile it. If not defined the feature can't be tested and won't be // to compile it. If not defined the feature can't be tested and won't be
@@ -963,7 +968,7 @@ static inline unsigned int avx10_vector_length()
// ARM SVE vector register length // ARM SVE vector register length
static inline int sve_vector_length() static inline int sve_vector_length()
{ {
#if defined(__aarch64__) #if defined(ARM_AUXV)
if ( has_sve() ) if ( has_sve() )
return prctl( (PR_SVE_GET_VL & PR_SVE_VL_LEN_MASK) * 8 ); return prctl( (PR_SVE_GET_VL & PR_SVE_VL_LEN_MASK) * 8 );
#endif #endif

6
util.c
View File

@@ -1414,6 +1414,12 @@ static bool send_line( struct stratum_ctx *sctx, char *s )
int n; int n;
fd_set wd; fd_set wd;
// Something nasty going on With Windows on aarch64. This hack prevents
// corrupting the sctx pointer. This only works if placed inside the while loop.
#if defined(__aarch64__) && defined(WIN32) && defined(ARM_WIN_HACK)
printf("");
#endif
FD_ZERO( &wd ); FD_ZERO( &wd );
FD_SET( sctx->sock, &wd ); FD_SET( sctx->sock, &wd );
if ( select( (int) ( sctx->sock + 1 ), NULL, &wd, NULL, &timeout ) < 1 ) if ( select( (int) ( sctx->sock + 1 ), NULL, &wd, NULL, &timeout ) < 1 )