43
43
CXXFLAGS_overridden=no
44
44
fi
45
45
AC_PROG_CXX
46
+ AM_PROG_AS
46
47
47
48
dnl By default, libtool for mingw refuses to link static libs into a dll for
48
49
dnl fear of mixing pic/non-pic objects, and import/export complications. Since
@@ -179,6 +180,41 @@ if test "x$use_asm" = xyes; then
179
180
AC_DEFINE ( USE_ASM , 1 , [ Define this symbol to build in assembly routines] )
180
181
fi
181
182
183
+ BUILD_TARGET=`$CC -dumpmachine 2>&1`
184
+ case $BUILD_TARGET in
185
+ x86_64-*-*|amd64-*-*)
186
+ have_x86_64=true
187
+ ;;
188
+ esac
189
+
190
+ if test x$enable_assembly != xno -a x$have_x86_64 = xtrue
191
+ then
192
+ AC_MSG_CHECKING ( whether we can compile AVX code )
193
+ AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( ,[ asm ("vmovdqa %ymm0, %ymm1");] ) ] ,
194
+ AC_DEFINE ( ENABLE_AVX , 1 , [ Define to 1 if AVX assembly is available.] )
195
+ AC_MSG_RESULT ( yes )
196
+ AC_MSG_CHECKING ( whether we can compile XOP code )
197
+ AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( ,[ asm ("vprotd \$7 , %xmm0, %xmm1");] ) ] ,
198
+ AC_DEFINE ( ENABLE_XOP , 1 , [ Define to 1 if XOP assembly is available.] )
199
+ AC_MSG_RESULT ( yes )
200
+ ,
201
+ AC_MSG_RESULT ( no )
202
+ AC_MSG_WARN ( [ The assembler does not support the XOP instruction set.] )
203
+ )
204
+ AC_MSG_CHECKING ( whether we can compile AVX2 code )
205
+ AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( ,[ asm ("vpaddd %ymm0, %ymm1, %ymm2");] ) ] ,
206
+ AC_DEFINE ( enable_avx2=yes; ENABLE_AVX2 , 1 , [ Define to 1 if AVX2 assembly is available.] )
207
+ AC_MSG_RESULT ( yes )
208
+ ,
209
+ AC_MSG_RESULT ( no )
210
+ AC_MSG_WARN ( [ The assembler does not support the AVX2 instruction set.] )
211
+ )
212
+ ,
213
+ AC_MSG_RESULT ( no )
214
+ AC_MSG_WARN ( [ The assembler does not support the AVX instruction set.] )
215
+ )
216
+ fi
217
+
182
218
# Enable debug
183
219
AC_ARG_ENABLE ( [ debug] ,
184
220
[ AS_HELP_STRING ( [ --enable-debug] ,
@@ -290,25 +326,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
290
326
)
291
327
CXXFLAGS="$TEMP_CXXFLAGS"
292
328
293
- TEMP_CXXFLAGS="$CXXFLAGS"
294
- CXXFLAGS="$CXXFLAGS $AVX2_CXXFLAGS"
295
- AC_MSG_CHECKING ( for AVX2 intrinsics )
296
- AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( [ [
297
- #include <stdint.h>
298
- #if defined(_MSC_VER)
299
- #include <immintrin.h>
300
- #elif defined(__GNUC__) && defined(__AVX2__)
301
- #include <x86intrin.h>
302
- #endif
303
- ] ] ,[ [
304
- __m256i l = _mm256_set1_epi32(0);
305
- return _mm256_extract_epi32(l, 7);
306
- ] ] ) ] ,
307
- [ AC_MSG_RESULT ( yes ) ; enable_avx2=yes; AC_DEFINE ( ENABLE_AVX2 , 1 , [ Define this symbol to build code that uses AVX2 intrinsics] ) ] ,
308
- [ AC_MSG_RESULT ( no ) ]
309
- )
310
- CXXFLAGS="$TEMP_CXXFLAGS"
311
-
312
329
TEMP_CXXFLAGS="$CXXFLAGS"
313
330
CXXFLAGS="$CXXFLAGS $SHANI_CXXFLAGS"
314
331
AC_MSG_CHECKING ( for SHA-NI intrinsics )
@@ -1141,7 +1158,6 @@ if test x$build_bitcoin_utils$build_bitcoin_libs$build_gridcoinresearchd$bitcoin
1141
1158
AC_MSG_ERROR ( [ No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests] )
1142
1159
fi
1143
1160
1144
-
1145
1161
AM_CONDITIONAL([ TARGET_DARWIN] , [ test x$TARGET_OS = xdarwin] )
1146
1162
AM_CONDITIONAL([ BUILD_DARWIN] , [ test x$BUILD_OS = xdarwin] )
1147
1163
AM_CONDITIONAL([ TARGET_WINDOWS] , [ test x$TARGET_OS = xwindows] )
@@ -1159,6 +1175,9 @@ AM_CONDITIONAL([ENABLE_SSE41],[test x$enable_sse41 = xyes])
1159
1175
AM_CONDITIONAL([ ENABLE_AVX2] ,[ test x$enable_avx2 = xyes] )
1160
1176
AM_CONDITIONAL([ ENABLE_SHANI] ,[ test x$enable_shani = xyes] )
1161
1177
AM_CONDITIONAL([ USE_ASM] ,[ test x$use_asm = xyes] )
1178
+ AM_CONDITIONAL([ ARCH_x86] , [ test x$have_x86 = xtrue] )
1179
+ AM_CONDITIONAL([ ARCH_x86_64] , [ test x$have_x86_64 = xtrue] )
1180
+ AM_CONDITIONAL([ ARCH_ARM] , [ test x$have_arm = xtrue] )
1162
1181
1163
1182
AC_DEFINE ( CLIENT_VERSION_MAJOR , _CLIENT_VERSION_MAJOR , [ Major version] )
1164
1183
AC_DEFINE ( CLIENT_VERSION_MINOR , _CLIENT_VERSION_MINOR , [ Minor version] )
@@ -1285,4 +1304,6 @@ echo " CPPFLAGS = $CPPFLAGS"
1285
1304
echo " CXX = $CXX"
1286
1305
echo " CXXFLAGS = $CXXFLAGS"
1287
1306
echo " LDFLAGS = $LDFLAGS"
1307
+ echo " AS = $CCAS"
1308
+ echo " ASFLAGS = $CCASFLAGS"
1288
1309
echo
0 commit comments