]> Git Repo - secp256k1.git/blame - configure.ac
Merge #818: Add static assertion that uint32_t is unsigned int or wider
[secp256k1.git] / configure.ac
CommitLineData
78cd96b1
CF
1AC_PREREQ([2.60])
2AC_INIT([libsecp256k1],[0.1])
6fac238f 3AC_CONFIG_AUX_DIR([build-aux])
4AC_CONFIG_MACRO_DIR([build-aux/m4])
78cd96b1
CF
5AC_CANONICAL_HOST
6AH_TOP([#ifndef LIBSECP256K1_CONFIG_H])
7AH_TOP([#define LIBSECP256K1_CONFIG_H])
f735446c 8AH_BOTTOM([#endif /*LIBSECP256K1_CONFIG_H*/])
5190079e 9AM_INIT_AUTOMAKE([foreign subdir-objects])
83fb1bce 10
ca739cba
JN
11# Set -g if CFLAGS are not already set, which matches the default autoconf
12# behavior (see PROG_CC in the Autoconf manual) with the exception that we don't
13# set -O2 here because we set it in any case (see further down).
83fb1bce 14: ${CFLAGS="-g"}
78cd96b1
CF
15LT_INIT
16
53628757
CF
17dnl make the compilation flags quiet unless V=1 is used
18m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
19
78cd96b1
CF
20PKG_PROG_PKG_CONFIG
21
3ab1178d
CF
22AC_PATH_TOOL(AR, ar)
23AC_PATH_TOOL(RANLIB, ranlib)
24AC_PATH_TOOL(STRIP, strip)
fbecc38a 25AX_PROG_CC_FOR_BUILD
3ab1178d 26
ed5334a7 27AM_PROG_CC_C_O
28
f735446c
GM
29AC_PROG_CC_C89
30if test x"$ac_cv_prog_cc_c89" = x"no"; then
31 AC_MSG_ERROR([c89 compiler support required])
78cd96b1 32fi
001f1763 33AM_PROG_AS
78cd96b1 34
a86f241d 35case $host_os in
e2274c58
CF
36 *darwin*)
37 if test x$cross_compiling != xyes; then
38 AC_PATH_PROG([BREW],brew,)
39 if test x$BREW != x; then
40 dnl These Homebrew packages may be keg-only, meaning that they won't be found
41 dnl in expected paths because they may conflict with system files. Ask
42 dnl Homebrew where each one is located, then adjust paths accordingly.
43
44 openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
45 gmp_prefix=`$BREW --prefix gmp 2>/dev/null`
46 if test x$openssl_prefix != x; then
47 PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
48 export PKG_CONFIG_PATH
84b5fc5b 49 CRYPTO_CPPFLAGS="-I$openssl_prefix/include"
e2274c58
CF
50 fi
51 if test x$gmp_prefix != x; then
52 GMP_CPPFLAGS="-I$gmp_prefix/include"
53 GMP_LIBS="-L$gmp_prefix/lib"
54 fi
55 else
56 AC_PATH_PROG([PORT],port,)
57 dnl if homebrew isn't installed and macports is, add the macports default paths
58 dnl as a last resort.
59 if test x$PORT != x; then
60 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
61 LDFLAGS="$LDFLAGS -L/opt/local/lib"
62 fi
63 fi
64 fi
65 ;;
a86f241d
PD
66esac
67
ecba8138 68CFLAGS="-W $CFLAGS"
a099073a 69
e73ff309 70warn_CFLAGS="-std=c89 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wundef -Wno-unused-function -Wno-long-long -Wno-overlength-strings"
a099073a 71saved_CFLAGS="$CFLAGS"
ecba8138 72CFLAGS="$warn_CFLAGS $CFLAGS"
a099073a
GM
73AC_MSG_CHECKING([if ${CC} supports ${warn_CFLAGS}])
74AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])],
75 [ AC_MSG_RESULT([yes]) ],
76 [ AC_MSG_RESULT([no])
77 CFLAGS="$saved_CFLAGS"
78 ])
79
118cd821 80saved_CFLAGS="$CFLAGS"
ecba8138 81CFLAGS="-fvisibility=hidden $CFLAGS"
118cd821
GM
82AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden])
83AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])],
84 [ AC_MSG_RESULT([yes]) ],
85 [ AC_MSG_RESULT([no])
86 CFLAGS="$saved_CFLAGS"
87 ])
a099073a 88
78cd96b1 89AC_ARG_ENABLE(benchmark,
a61a93ff 90 AS_HELP_STRING([--enable-benchmark],[compile benchmark [default=yes]]),
78cd96b1 91 [use_benchmark=$enableval],
4afec9f1 92 [use_benchmark=yes])
78cd96b1 93
a724d729 94AC_ARG_ENABLE(coverage,
a61a93ff 95 AS_HELP_STRING([--enable-coverage],[enable compiler flags to support kcov coverage analysis [default=no]]),
a724d729
AP
96 [enable_coverage=$enableval],
97 [enable_coverage=no])
98
78cd96b1 99AC_ARG_ENABLE(tests,
a61a93ff 100 AS_HELP_STRING([--enable-tests],[compile tests [default=yes]]),
78cd96b1
CF
101 [use_tests=$enableval],
102 [use_tests=yes])
103
a9b2a5d8 104AC_ARG_ENABLE(openssl_tests,
a61a93ff 105 AS_HELP_STRING([--enable-openssl-tests],[enable OpenSSL tests [default=auto]]),
a9b2a5d8
AP
106 [enable_openssl_tests=$enableval],
107 [enable_openssl_tests=auto])
108
83221ecb 109AC_ARG_ENABLE(experimental,
a61a93ff 110 AS_HELP_STRING([--enable-experimental],[allow experimental configure options [default=no]]),
83221ecb
PW
111 [use_experimental=$enableval],
112 [use_experimental=no])
113
20b8877b 114AC_ARG_ENABLE(exhaustive_tests,
a61a93ff 115 AS_HELP_STRING([--enable-exhaustive-tests],[compile exhaustive tests [default=yes]]),
20b8877b
AP
116 [use_exhaustive_tests=$enableval],
117 [use_exhaustive_tests=yes])
118
78cd96b1 119AC_ARG_ENABLE(endomorphism,
a61a93ff 120 AS_HELP_STRING([--enable-endomorphism],[enable endomorphism [default=no]]),
78cd96b1 121 [use_endomorphism=$enableval],
0e9baf6f 122 [use_endomorphism=no])
83221ecb 123
fbecc38a 124AC_ARG_ENABLE(ecmult_static_precomputation,
a61a93ff 125 AS_HELP_STRING([--enable-ecmult-static-precomputation],[enable precomputed ecmult table for signing [default=auto]]),
fbecc38a 126 [use_ecmult_static_precomputation=$enableval],
aa0b1fd1 127 [use_ecmult_static_precomputation=auto])
78cd96b1 128
0739bbb6 129AC_ARG_ENABLE(module_ecdh,
83221ecb 130 AS_HELP_STRING([--enable-module-ecdh],[enable ECDH shared secret computation (experimental)]),
0739bbb6
AP
131 [enable_module_ecdh=$enableval],
132 [enable_module_ecdh=no])
133
9f443be0 134AC_ARG_ENABLE(module_recovery,
a61a93ff 135 AS_HELP_STRING([--enable-module-recovery],[enable ECDSA pubkey recovery module [default=no]]),
9f443be0
PW
136 [enable_module_recovery=$enableval],
137 [enable_module_recovery=no])
138
47e6618e
JN
139AC_ARG_ENABLE(module_extrakeys,
140 AS_HELP_STRING([--enable-module-extrakeys],[enable extrakeys module (experimental)]),
141 [enable_module_extrakeys=$enableval],
142 [enable_module_extrakeys=no])
143
7a703fd9
JN
144AC_ARG_ENABLE(module_schnorrsig,
145 AS_HELP_STRING([--enable-module-schnorrsig],[enable schnorrsig module (experimental)]),
146 [enable_module_schnorrsig=$enableval],
147 [enable_module_schnorrsig=no])
148
5db782e6 149AC_ARG_ENABLE(external_default_callbacks,
a467047e 150 AS_HELP_STRING([--enable-external-default-callbacks],[enable external default callback functions [default=no]]),
5db782e6
TR
151 [use_external_default_callbacks=$enableval],
152 [use_external_default_callbacks=no])
153
79f1f7a4
PW
154dnl Test-only override of the (autodetected by the C code) "widemul" setting.
155dnl Legal values are int64 (for [u]int64_t), int128 (for [unsigned] __int128), and auto (the default).
156AC_ARG_WITH([test-override-wide-multiply], [] ,[set_widemul=$withval], [set_widemul=auto])
78cd96b1 157
1ba4a60a 158AC_ARG_WITH([bignum], [AS_HELP_STRING([--with-bignum=gmp|no|auto],
a61a93ff 159[bignum implementation to use [default=auto]])],[req_bignum=$withval], [req_bignum=auto])
78cd96b1 160
a61a93ff
TR
161AC_ARG_WITH([asm], [AS_HELP_STRING([--with-asm=x86_64|arm|no|auto],
162[assembly optimizations to useĀ (experimental: arm) [default=auto]])],[req_asm=$withval], [req_asm=auto])
1ba4a60a 163
2842dc52
TR
164AC_ARG_WITH([ecmult-window], [AS_HELP_STRING([--with-ecmult-window=SIZE|auto],
165[window size for ecmult precomputation for verification, specified as integer in range [2..24].]
166[Larger values result in possibly better performance at the cost of an exponentially larger precomputed table.]
167[The table will store 2^(SIZE-2) * 64 bytes of data but can be larger in memory due to platform-specific padding and alignment.]
168[If the endomorphism optimization is enabled, two tables of this size are used instead of only one.]
169["auto" is a reasonable setting for desktop machines (currently 15). [default=auto]]
170)],
171[req_ecmult_window=$withval], [req_ecmult_window=auto])
172
dcb2e3b3 173AC_ARG_WITH([ecmult-gen-precision], [AS_HELP_STRING([--with-ecmult-gen-precision=2|4|8|auto],
174[Precision bits to tune the precomputed table size for signing.]
175[The size of the table is 32kB for 2 bits, 64kB for 4 bits, 512kB for 8 bits of precision.]
176[A larger table size usually results in possible faster signing.]
177["auto" is a reasonable setting for desktop machines (currently 4). [default=auto]]
178)],
179[req_ecmult_gen_precision=$withval], [req_ecmult_gen_precision=auto])
180
412bf874
LD
181AC_ARG_WITH([valgrind], [AS_HELP_STRING([--with-valgrind=yes|no|auto],
182[Build with extra checks for running inside Valgrind [default=auto]]
183)],
184[req_valgrind=$withval], [req_valgrind=auto])
185
186if test x"$req_valgrind" = x"no"; then
187 enable_valgrind=no
188else
189 AC_CHECK_HEADER([valgrind/memcheck.h], [enable_valgrind=yes], [
190 if test x"$req_valgrind" = x"yes"; then
191 AC_MSG_ERROR([Valgrind support explicitly requested but valgrind/memcheck.h header not available])
192 fi
193 enable_valgrind=no
194 ], [])
195fi
7b50483a
GM
196AM_CONDITIONAL([VALGRIND_ENABLED],[test "$enable_valgrind" = "yes"])
197
a724d729
AP
198if test x"$enable_coverage" = x"yes"; then
199 AC_DEFINE(COVERAGE, 1, [Define this symbol to compile out all VERIFY code])
ecba8138
JN
200 CFLAGS="-O0 --coverage $CFLAGS"
201 LDFLAGS="--coverage $LDFLAGS"
a724d729 202else
ca739cba 203 CFLAGS="-O2 $CFLAGS"
a724d729
AP
204fi
205
aa0b1fd1 206if test x"$use_ecmult_static_precomputation" != x"no"; then
2d5f4ceb 207 # Temporarily switch to an environment for the native compiler
aa0b1fd1
CF
208 save_cross_compiling=$cross_compiling
209 cross_compiling=no
2d5f4ceb 210 SAVE_CC="$CC"
aa0b1fd1 211 CC="$CC_FOR_BUILD"
2d5f4ceb
TR
212 SAVE_CFLAGS="$CFLAGS"
213 CFLAGS="$CFLAGS_FOR_BUILD"
214 SAVE_CPPFLAGS="$CPPFLAGS"
215 CPPFLAGS="$CPPFLAGS_FOR_BUILD"
216 SAVE_LDFLAGS="$LDFLAGS"
217 LDFLAGS="$LDFLAGS_FOR_BUILD"
218
219 warn_CFLAGS_FOR_BUILD="-Wall -Wextra -Wno-unused-function"
220 saved_CFLAGS="$CFLAGS"
ecba8138 221 CFLAGS="$warn_CFLAGS_FOR_BUILD $CFLAGS"
2d5f4ceb
TR
222 AC_MSG_CHECKING([if native ${CC_FOR_BUILD} supports ${warn_CFLAGS_FOR_BUILD}])
223 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])],
224 [ AC_MSG_RESULT([yes]) ],
225 [ AC_MSG_RESULT([no])
226 CFLAGS="$saved_CFLAGS"
227 ])
228
229 AC_MSG_CHECKING([for working native compiler: ${CC_FOR_BUILD}])
aa0b1fd1 230 AC_RUN_IFELSE(
2d5f4ceb 231 [AC_LANG_PROGRAM([], [])],
aa0b1fd1 232 [working_native_cc=yes],
5e8747ae 233 [working_native_cc=no],[:])
2d5f4ceb
TR
234
235 CFLAGS_FOR_BUILD="$CFLAGS"
236
237 # Restore the environment
aa0b1fd1 238 cross_compiling=$save_cross_compiling
2d5f4ceb
TR
239 CC="$SAVE_CC"
240 CFLAGS="$SAVE_CFLAGS"
241 CPPFLAGS="$SAVE_CPPFLAGS"
242 LDFLAGS="$SAVE_LDFLAGS"
aa0b1fd1
CF
243
244 if test x"$working_native_cc" = x"no"; then
2d5f4ceb 245 AC_MSG_RESULT([no])
aa0b1fd1 246 set_precomp=no
2d5f4ceb 247 m4_define([please_set_for_build], [Please set CC_FOR_BUILD, CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and/or LDFLAGS_FOR_BUILD.])
aa0b1fd1 248 if test x"$use_ecmult_static_precomputation" = x"yes"; then
2d5f4ceb 249 AC_MSG_ERROR([native compiler ${CC_FOR_BUILD} does not produce working binaries. please_set_for_build])
aa0b1fd1 250 else
2d5f4ceb 251 AC_MSG_WARN([Disabling statically generated ecmult table because the native compiler ${CC_FOR_BUILD} does not produce working binaries. please_set_for_build])
aa0b1fd1
CF
252 fi
253 else
2d5f4ceb 254 AC_MSG_RESULT([yes])
aa0b1fd1
CF
255 set_precomp=yes
256 fi
257else
258 set_precomp=no
259fi
260
1ba4a60a 261if test x"$req_asm" = x"auto"; then
0e9baf6f
CF
262 SECP_64BIT_ASM_CHECK
263 if test x"$has_64bit_asm" = x"yes"; then
1ba4a60a
PW
264 set_asm=x86_64
265 fi
266 if test x"$set_asm" = x; then
267 set_asm=no
78cd96b1 268 fi
1ba4a60a
PW
269else
270 set_asm=$req_asm
271 case $set_asm in
272 x86_64)
273 SECP_64BIT_ASM_CHECK
274 if test x"$has_64bit_asm" != x"yes"; then
275 AC_MSG_ERROR([x86_64 assembly optimization requested but not available])
276 fi
277 ;;
001f1763
WL
278 arm)
279 ;;
1ba4a60a
PW
280 no)
281 ;;
282 *)
283 AC_MSG_ERROR([invalid assembly optimization selection])
284 ;;
285 esac
286fi
78cd96b1 287
78cd96b1
CF
288if test x"$req_bignum" = x"auto"; then
289 SECP_GMP_CHECK
290 if test x"$has_gmp" = x"yes"; then
291 set_bignum=gmp
292 fi
293
78cd96b1 294 if test x"$set_bignum" = x; then
1ba4a60a 295 set_bignum=no
78cd96b1
CF
296 fi
297else
298 set_bignum=$req_bignum
299 case $set_bignum in
300 gmp)
301 SECP_GMP_CHECK
1ba4a60a
PW
302 if test x"$has_gmp" != x"yes"; then
303 AC_MSG_ERROR([gmp bignum explicitly requested but libgmp not available])
304 fi
78cd96b1 305 ;;
1ba4a60a 306 no)
78cd96b1
CF
307 ;;
308 *)
309 AC_MSG_ERROR([invalid bignum implementation selection])
310 ;;
311 esac
312fi
313
1ba4a60a 314# select assembly optimization
001f1763
WL
315use_external_asm=no
316
1ba4a60a
PW
317case $set_asm in
318x86_64)
319 AC_DEFINE(USE_ASM_X86_64, 1, [Define this symbol to enable x86_64 assembly optimizations])
320 ;;
001f1763
WL
321arm)
322 use_external_asm=yes
323 ;;
1ba4a60a
PW
324no)
325 ;;
326*)
327 AC_MSG_ERROR([invalid assembly optimizations])
328 ;;
329esac
330
79f1f7a4
PW
331# select wide multiplication implementation
332case $set_widemul in
333int128)
334 AC_DEFINE(USE_FORCE_WIDEMUL_INT128, 1, [Define this symbol to force the use of the (unsigned) __int128 based wide multiplication implementation])
78cd96b1 335 ;;
79f1f7a4
PW
336int64)
337 AC_DEFINE(USE_FORCE_WIDEMUL_INT64, 1, [Define this symbol to force the use of the (u)int64_t based wide multiplication implementation])
338 ;;
339auto)
78cd96b1
CF
340 ;;
341*)
79f1f7a4 342 AC_MSG_ERROR([invalid wide multiplication implementation])
78cd96b1
CF
343 ;;
344esac
345
346# select bignum implementation
347case $set_bignum in
348gmp)
597128d3
PW
349 AC_DEFINE(HAVE_LIBGMP, 1, [Define this symbol if libgmp is installed])
350 AC_DEFINE(USE_NUM_GMP, 1, [Define this symbol to use the gmp implementation for num])
d1502eb4
PW
351 AC_DEFINE(USE_FIELD_INV_NUM, 1, [Define this symbol to use the num-based field inverse implementation])
352 AC_DEFINE(USE_SCALAR_INV_NUM, 1, [Define this symbol to use the num-based scalar inverse implementation])
78cd96b1 353 ;;
1ba4a60a 354no)
597128d3
PW
355 AC_DEFINE(USE_NUM_NONE, 1, [Define this symbol to use no num implementation])
356 AC_DEFINE(USE_FIELD_INV_BUILTIN, 1, [Define this symbol to use the native field inverse implementation])
357 AC_DEFINE(USE_SCALAR_INV_BUILTIN, 1, [Define this symbol to use the native scalar inverse implementation])
358 ;;
78cd96b1
CF
359*)
360 AC_MSG_ERROR([invalid bignum implementation])
361 ;;
362esac
363
2842dc52
TR
364#set ecmult window size
365if test x"$req_ecmult_window" = x"auto"; then
366 set_ecmult_window=15
367else
368 set_ecmult_window=$req_ecmult_window
369fi
370
371error_window_size=['window size for ecmult precomputation not an integer in range [2..24] or "auto"']
372case $set_ecmult_window in
373''|*[[!0-9]]*)
374 # no valid integer
375 AC_MSG_ERROR($error_window_size)
376 ;;
377*)
378 if test "$set_ecmult_window" -lt 2 -o "$set_ecmult_window" -gt 24 ; then
379 # not in range
380 AC_MSG_ERROR($error_window_size)
381 fi
382 AC_DEFINE_UNQUOTED(ECMULT_WINDOW_SIZE, $set_ecmult_window, [Set window size for ecmult precomputation])
383 ;;
384esac
385
dcb2e3b3 386#set ecmult gen precision
387if test x"$req_ecmult_gen_precision" = x"auto"; then
388 set_ecmult_gen_precision=4
389else
390 set_ecmult_gen_precision=$req_ecmult_gen_precision
391fi
392
393case $set_ecmult_gen_precision in
3942|4|8)
395 AC_DEFINE_UNQUOTED(ECMULT_GEN_PREC_BITS, $set_ecmult_gen_precision, [Set ecmult gen precision bits])
396 ;;
397*)
398 AC_MSG_ERROR(['ecmult gen precision not 2, 4, 8 or "auto"'])
399 ;;
400esac
401
78cd96b1
CF
402if test x"$use_tests" = x"yes"; then
403 SECP_OPENSSL_CHECK
28ade27d 404 if test x"$has_openssl_ec" = x"yes"; then
a9b2a5d8
AP
405 if test x"$enable_openssl_tests" != x"no"; then
406 AC_DEFINE(ENABLE_OPENSSL_TESTS, 1, [Define this symbol if OpenSSL EC functions are available])
84b5fc5b 407 SECP_TEST_INCLUDES="$SSL_CFLAGS $CRYPTO_CFLAGS $CRYPTO_CPPFLAGS"
a9b2a5d8
AP
408 SECP_TEST_LIBS="$CRYPTO_LIBS"
409
410 case $host in
411 *mingw*)
412 SECP_TEST_LIBS="$SECP_TEST_LIBS -lgdi32"
413 ;;
414 esac
415 fi
416 else
417 if test x"$enable_openssl_tests" = x"yes"; then
418 AC_MSG_ERROR([OpenSSL tests requested but OpenSSL with EC support is not available])
419 fi
420 fi
421else
422 if test x"$enable_openssl_tests" = x"yes"; then
423 AC_MSG_ERROR([OpenSSL tests requested but tests are not enabled])
78cd96b1
CF
424 fi
425fi
426
7277fd76 427if test x"$set_bignum" = x"gmp"; then
78cd96b1 428 SECP_LIBS="$SECP_LIBS $GMP_LIBS"
e2274c58 429 SECP_INCLUDES="$SECP_INCLUDES $GMP_CPPFLAGS"
78cd96b1
CF
430fi
431
432if test x"$use_endomorphism" = x"yes"; then
c35ff1ea 433 AC_DEFINE(USE_ENDOMORPHISM, 1, [Define this symbol to use endomorphism optimization])
78cd96b1
CF
434fi
435
00c5d2e1 436if test x"$set_precomp" = x"yes"; then
fbecc38a
TD
437 AC_DEFINE(USE_ECMULT_STATIC_PRECOMPUTATION, 1, [Define this symbol to use a statically generated ecmult table])
438fi
439
0739bbb6
AP
440if test x"$enable_module_ecdh" = x"yes"; then
441 AC_DEFINE(ENABLE_MODULE_ECDH, 1, [Define this symbol to enable the ECDH module])
442fi
443
9f443be0
PW
444if test x"$enable_module_recovery" = x"yes"; then
445 AC_DEFINE(ENABLE_MODULE_RECOVERY, 1, [Define this symbol to enable the ECDSA pubkey recovery module])
446fi
447
7a703fd9
JN
448if test x"$enable_module_schnorrsig" = x"yes"; then
449 AC_DEFINE(ENABLE_MODULE_SCHNORRSIG, 1, [Define this symbol to enable the schnorrsig module])
450 enable_module_extrakeys=yes
451fi
452
453# Test if extrakeys is set after the schnorrsig module to allow the schnorrsig
454# module to set enable_module_extrakeys=yes
47e6618e
JN
455if test x"$enable_module_extrakeys" = x"yes"; then
456 AC_DEFINE(ENABLE_MODULE_EXTRAKEYS, 1, [Define this symbol to enable the extrakeys module])
457fi
458
001f1763
WL
459if test x"$use_external_asm" = x"yes"; then
460 AC_DEFINE(USE_EXTERNAL_ASM, 1, [Define this symbol if an external (non-inline) assembly implementation is used])
461fi
462
5db782e6
TR
463if test x"$use_external_default_callbacks" = x"yes"; then
464 AC_DEFINE(USE_EXTERNAL_DEFAULT_CALLBACKS, 1, [Define this symbol if an external implementation of the default callbacks is used])
465fi
466
83221ecb
PW
467if test x"$enable_experimental" = x"yes"; then
468 AC_MSG_NOTICE([******])
469 AC_MSG_NOTICE([WARNING: experimental build])
470 AC_MSG_NOTICE([Experimental features do not have stable APIs or properties, and may not be safe for production use.])
471 AC_MSG_NOTICE([Building ECDH module: $enable_module_ecdh])
47e6618e 472 AC_MSG_NOTICE([Building extrakeys module: $enable_module_extrakeys])
7a703fd9 473 AC_MSG_NOTICE([Building schnorrsig module: $enable_module_schnorrsig])
83221ecb
PW
474 AC_MSG_NOTICE([******])
475else
83221ecb
PW
476 if test x"$enable_module_ecdh" = x"yes"; then
477 AC_MSG_ERROR([ECDH module is experimental. Use --enable-experimental to allow.])
478 fi
47e6618e
JN
479 if test x"$enable_module_extrakeys" = x"yes"; then
480 AC_MSG_ERROR([extrakeys module is experimental. Use --enable-experimental to allow.])
481 fi
7a703fd9
JN
482 if test x"$enable_module_schnorrsig" = x"yes"; then
483 AC_MSG_ERROR([schnorrsig module is experimental. Use --enable-experimental to allow.])
484 fi
001f1763
WL
485 if test x"$set_asm" = x"arm"; then
486 AC_MSG_ERROR([ARM assembly optimization is experimental. Use --enable-experimental to allow.])
487 fi
83221ecb
PW
488fi
489
78cd96b1 490AC_CONFIG_HEADERS([src/libsecp256k1-config.h])
c7ee71f7 491AC_CONFIG_FILES([Makefile libsecp256k1.pc])
78cd96b1
CF
492AC_SUBST(SECP_INCLUDES)
493AC_SUBST(SECP_LIBS)
494AC_SUBST(SECP_TEST_LIBS)
495AC_SUBST(SECP_TEST_INCLUDES)
a724d729 496AM_CONDITIONAL([ENABLE_COVERAGE], [test x"$enable_coverage" = x"yes"])
78cd96b1 497AM_CONDITIONAL([USE_TESTS], [test x"$use_tests" != x"no"])
20b8877b 498AM_CONDITIONAL([USE_EXHAUSTIVE_TESTS], [test x"$use_exhaustive_tests" != x"no"])
8336040f 499AM_CONDITIONAL([USE_BENCHMARK], [test x"$use_benchmark" = x"yes"])
00c5d2e1 500AM_CONDITIONAL([USE_ECMULT_STATIC_PRECOMPUTATION], [test x"$set_precomp" = x"yes"])
0739bbb6 501AM_CONDITIONAL([ENABLE_MODULE_ECDH], [test x"$enable_module_ecdh" = x"yes"])
9f443be0 502AM_CONDITIONAL([ENABLE_MODULE_RECOVERY], [test x"$enable_module_recovery" = x"yes"])
7a703fd9
JN
503AM_CONDITIONAL([ENABLE_MODULE_EXTRAKEYS], [test x"$enable_module_extrakeys" = x"yes"])
504AM_CONDITIONAL([ENABLE_MODULE_SCHNORRSIG], [test x"$enable_module_schnorrsig" = x"yes"])
001f1763
WL
505AM_CONDITIONAL([USE_EXTERNAL_ASM], [test x"$use_external_asm" = x"yes"])
506AM_CONDITIONAL([USE_ASM_ARM], [test x"$set_asm" = x"arm"])
e2274c58
CF
507
508dnl make sure nothing new is exported so that we don't break the cache
509PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
510unset PKG_CONFIG_PATH
511PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
512
78cd96b1 513AC_OUTPUT
3965027c
EK
514
515echo
516echo "Build Options:"
5db782e6
TR
517echo " with endomorphism = $use_endomorphism"
518echo " with ecmult precomp = $set_precomp"
519echo " with external callbacks = $use_external_default_callbacks"
5db782e6
TR
520echo " with benchmarks = $use_benchmark"
521echo " with coverage = $enable_coverage"
522echo " module ecdh = $enable_module_ecdh"
523echo " module recovery = $enable_module_recovery"
47e6618e 524echo " module extrakeys = $enable_module_extrakeys"
7a703fd9 525echo " module schnorrsig = $enable_module_schnorrsig"
3965027c 526echo
5db782e6
TR
527echo " asm = $set_asm"
528echo " bignum = $set_bignum"
5db782e6 529echo " ecmult window size = $set_ecmult_window"
dcb2e3b3 530echo " ecmult gen prec. bits = $set_ecmult_gen_precision"
79f1f7a4
PW
531dnl Hide test-only options unless they're used.
532if test x"$set_widemul" != xauto; then
533echo " wide multiplication = $set_widemul"
534fi
3965027c 535echo
3d230225 536echo " valgrind = $enable_valgrind"
5db782e6
TR
537echo " CC = $CC"
538echo " CFLAGS = $CFLAGS"
539echo " CPPFLAGS = $CPPFLAGS"
540echo " LDFLAGS = $LDFLAGS"
3965027c 541echo
This page took 0.118653 seconds and 4 git commands to generate.