github.com/ethereum/go-ethereum@v1.16.1/crypto/secp256k1/libsecp256k1/configure.ac (about)

     1  AC_PREREQ([2.60])
     2  
     3  # The package (a.k.a. release) version is based on semantic versioning 2.0.0 of
     4  # the API. All changes in experimental modules are treated as
     5  # backwards-compatible and therefore at most increase the minor version.
     6  define(_PKG_VERSION_MAJOR, 0)
     7  define(_PKG_VERSION_MINOR, 6)
     8  define(_PKG_VERSION_PATCH, 1)
     9  define(_PKG_VERSION_IS_RELEASE, false)
    10  
    11  # The library version is based on libtool versioning of the ABI. The set of
    12  # rules for updating the version can be found here:
    13  # https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
    14  # All changes in experimental modules are treated as if they don't affect the
    15  # interface and therefore only increase the revision.
    16  define(_LIB_VERSION_CURRENT, 5)
    17  define(_LIB_VERSION_REVISION, 1)
    18  define(_LIB_VERSION_AGE, 0)
    19  
    20  AC_INIT([libsecp256k1],m4_join([.], _PKG_VERSION_MAJOR, _PKG_VERSION_MINOR, _PKG_VERSION_PATCH)m4_if(_PKG_VERSION_IS_RELEASE, [true], [], [-dev]),[https://github.com/bitcoin-core/secp256k1/issues],[libsecp256k1],[https://github.com/bitcoin-core/secp256k1])
    21  
    22  AC_CONFIG_AUX_DIR([build-aux])
    23  AC_CONFIG_MACRO_DIR([build-aux/m4])
    24  AC_CANONICAL_HOST
    25  
    26  # Require Automake 1.11.2 for AM_PROG_AR
    27  AM_INIT_AUTOMAKE([1.11.2 foreign subdir-objects])
    28  
    29  # Make the compilation flags quiet unless V=1 is used.
    30  m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
    31  
    32  if test "${CFLAGS+set}" = "set"; then
    33    CFLAGS_overridden=yes
    34  else
    35    CFLAGS_overridden=no
    36  fi
    37  AC_PROG_CC
    38  AM_PROG_AS
    39  AM_PROG_AR
    40  
    41  # Clear some cache variables as a workaround for a bug that appears due to a bad
    42  # interaction between AM_PROG_AR and LT_INIT when combining MSVC's archiver lib.exe.
    43  # https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54421
    44  AS_UNSET(ac_cv_prog_AR)
    45  AS_UNSET(ac_cv_prog_ac_ct_AR)
    46  LT_INIT([win32-dll])
    47  
    48  build_windows=no
    49  
    50  case $host_os in
    51    *darwin*)
    52       if  test x$cross_compiling != xyes; then
    53         AC_CHECK_PROG([BREW], brew, brew)
    54         if test x$BREW = xbrew; then
    55           # These Homebrew packages may be keg-only, meaning that they won't be found
    56           # in expected paths because they may conflict with system files. Ask
    57           # Homebrew where each one is located, then adjust paths accordingly.
    58           if $BREW list --versions valgrind >/dev/null; then
    59             valgrind_prefix=$($BREW --prefix valgrind 2>/dev/null)
    60             VALGRIND_CPPFLAGS="-I$valgrind_prefix/include"
    61           fi
    62         else
    63           AC_CHECK_PROG([PORT], port, port)
    64           # If homebrew isn't installed and macports is, add the macports default paths
    65           # as a last resort.
    66           if test x$PORT = xport; then
    67             CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
    68             LDFLAGS="$LDFLAGS -L/opt/local/lib"
    69           fi
    70         fi
    71       fi
    72     ;;
    73     cygwin*|mingw*)
    74       build_windows=yes
    75     ;;
    76  esac
    77  
    78  # Try if some desirable compiler flags are supported and append them to SECP_CFLAGS.
    79  #
    80  # These are our own flags, so we append them to our own SECP_CFLAGS variable (instead of CFLAGS) as
    81  # recommended in the automake manual (Section "Flag Variables Ordering"). CFLAGS belongs to the user
    82  # and we are not supposed to touch it. In the Makefile, we will need to ensure that SECP_CFLAGS
    83  # is prepended to CFLAGS when invoking the compiler so that the user always has the last word (flag).
    84  #
    85  # Another advantage of not touching CFLAGS is that the contents of CFLAGS will be picked up by
    86  # libtool for compiling helper executables. For example, when compiling for Windows, libtool will
    87  # generate entire wrapper executables (instead of simple wrapper scripts as on Unix) to ensure
    88  # proper operation of uninstalled programs linked by libtool against the uninstalled shared library.
    89  # These executables are compiled from C source file for which our flags may not be appropriate,
    90  # e.g., -std=c89 flag has lead to undesirable warnings in the past.
    91  #
    92  # TODO We should analogously not touch CPPFLAGS and LDFLAGS but currently there are no issues.
    93  AC_DEFUN([SECP_TRY_APPEND_DEFAULT_CFLAGS], [
    94      # GCC and compatible (incl. clang)
    95      if test "x$GCC" = "xyes"; then
    96        # Try to append -Werror to CFLAGS temporarily. Otherwise checks for some unsupported
    97        # flags will succeed.
    98        # Note that failure to append -Werror does not necessarily mean that -Werror is not
    99        # supported. The compiler may already be warning about something unrelated, for example
   100        # about some path issue. If that is the case, -Werror cannot be used because all
   101        # of those warnings would be turned into errors.
   102        SECP_TRY_APPEND_DEFAULT_CFLAGS_saved_CFLAGS="$CFLAGS"
   103        SECP_TRY_APPEND_CFLAGS([-Werror], CFLAGS)
   104  
   105        SECP_TRY_APPEND_CFLAGS([-std=c89 -pedantic -Wno-long-long -Wnested-externs -Wshadow -Wstrict-prototypes -Wundef], $1) # GCC >= 3.0, -Wlong-long is implied by -pedantic.
   106        SECP_TRY_APPEND_CFLAGS([-Wno-overlength-strings], $1) # GCC >= 4.2, -Woverlength-strings is implied by -pedantic.
   107        SECP_TRY_APPEND_CFLAGS([-Wall], $1) # GCC >= 2.95 and probably many other compilers
   108        SECP_TRY_APPEND_CFLAGS([-Wno-unused-function], $1) # GCC >= 3.0, -Wunused-function is implied by -Wall.
   109        SECP_TRY_APPEND_CFLAGS([-Wextra], $1) # GCC >= 3.4, this is the newer name of -W, which we don't use because older GCCs will warn about unused functions.
   110        SECP_TRY_APPEND_CFLAGS([-Wcast-align], $1) # GCC >= 2.95
   111        SECP_TRY_APPEND_CFLAGS([-Wcast-align=strict], $1) # GCC >= 8.0
   112        SECP_TRY_APPEND_CFLAGS([-Wconditional-uninitialized], $1) # Clang >= 3.0 only
   113        SECP_TRY_APPEND_CFLAGS([-Wreserved-identifier], $1) # Clang >= 13.0 only
   114        SECP_TRY_APPEND_CFLAGS([-fvisibility=hidden], $1) # GCC >= 4.0
   115  
   116        CFLAGS="$SECP_TRY_APPEND_DEFAULT_CFLAGS_saved_CFLAGS"
   117      fi
   118  
   119      # MSVC
   120      # Assume MSVC if we're building for Windows but not with GCC or compatible;
   121      # libtool makes the same assumption internally.
   122      # Note that "/opt" and "-opt" are equivalent for MSVC; we use "-opt" because "/opt" looks like a path.
   123      if test x"$GCC" != x"yes" && test x"$build_windows" = x"yes"; then
   124        SECP_TRY_APPEND_CFLAGS([-W3], $1) # Production quality warning level.
   125        SECP_TRY_APPEND_CFLAGS([-wd4146], $1) # Disable warning C4146 "unary minus operator applied to unsigned type, result still unsigned".
   126        SECP_TRY_APPEND_CFLAGS([-wd4244], $1) # Disable warning C4244 "'conversion' conversion from 'type1' to 'type2', possible loss of data".
   127        SECP_TRY_APPEND_CFLAGS([-wd4267], $1) # Disable warning C4267 "'var' : conversion from 'size_t' to 'type', possible loss of data".
   128        # Eliminate deprecation warnings for the older, less secure functions.
   129        CPPFLAGS="-D_CRT_SECURE_NO_WARNINGS $CPPFLAGS"
   130      fi
   131  ])
   132  SECP_TRY_APPEND_DEFAULT_CFLAGS(SECP_CFLAGS)
   133  
   134  ###
   135  ### Define config arguments
   136  ###
   137  
   138  # In dev mode, we enable all binaries and modules by default but individual options can still be overridden explicitly.
   139  # Check for dev mode first because SECP_SET_DEFAULT needs enable_dev_mode set.
   140  AC_ARG_ENABLE(dev_mode, [], [],
   141      [enable_dev_mode=no])
   142  
   143  AC_ARG_ENABLE(benchmark,
   144      AS_HELP_STRING([--enable-benchmark],[compile benchmark [default=yes]]), [],
   145      [SECP_SET_DEFAULT([enable_benchmark], [yes], [yes])])
   146  
   147  AC_ARG_ENABLE(coverage,
   148      AS_HELP_STRING([--enable-coverage],[enable compiler flags to support kcov coverage analysis [default=no]]), [],
   149      [SECP_SET_DEFAULT([enable_coverage], [no], [no])])
   150  
   151  AC_ARG_ENABLE(tests,
   152      AS_HELP_STRING([--enable-tests],[compile tests [default=yes]]), [],
   153      [SECP_SET_DEFAULT([enable_tests], [yes], [yes])])
   154  
   155  AC_ARG_ENABLE(ctime_tests,
   156      AS_HELP_STRING([--enable-ctime-tests],[compile constant-time tests [default=yes if valgrind enabled]]), [],
   157      [SECP_SET_DEFAULT([enable_ctime_tests], [auto], [auto])])
   158  
   159  AC_ARG_ENABLE(experimental,
   160      AS_HELP_STRING([--enable-experimental],[allow experimental configure options [default=no]]), [],
   161      [SECP_SET_DEFAULT([enable_experimental], [no], [yes])])
   162  
   163  AC_ARG_ENABLE(exhaustive_tests,
   164      AS_HELP_STRING([--enable-exhaustive-tests],[compile exhaustive tests [default=yes]]), [],
   165      [SECP_SET_DEFAULT([enable_exhaustive_tests], [yes], [yes])])
   166  
   167  AC_ARG_ENABLE(examples,
   168      AS_HELP_STRING([--enable-examples],[compile the examples [default=no]]), [],
   169      [SECP_SET_DEFAULT([enable_examples], [no], [yes])])
   170  
   171  AC_ARG_ENABLE(module_ecdh,
   172      AS_HELP_STRING([--enable-module-ecdh],[enable ECDH module [default=yes]]), [],
   173      [SECP_SET_DEFAULT([enable_module_ecdh], [yes], [yes])])
   174  
   175  AC_ARG_ENABLE(module_recovery,
   176      AS_HELP_STRING([--enable-module-recovery],[enable ECDSA pubkey recovery module [default=no]]), [],
   177      [SECP_SET_DEFAULT([enable_module_recovery], [no], [yes])])
   178  
   179  AC_ARG_ENABLE(module_extrakeys,
   180      AS_HELP_STRING([--enable-module-extrakeys],[enable extrakeys module [default=yes]]), [],
   181      [SECP_SET_DEFAULT([enable_module_extrakeys], [yes], [yes])])
   182  
   183  AC_ARG_ENABLE(module_schnorrsig,
   184      AS_HELP_STRING([--enable-module-schnorrsig],[enable schnorrsig module [default=yes]]), [],
   185      [SECP_SET_DEFAULT([enable_module_schnorrsig], [yes], [yes])])
   186  
   187  AC_ARG_ENABLE(module_musig,
   188      AS_HELP_STRING([--enable-module-musig],[enable MuSig2 module [default=yes]]), [],
   189      [SECP_SET_DEFAULT([enable_module_musig], [yes], [yes])])
   190  
   191  AC_ARG_ENABLE(module_ellswift,
   192      AS_HELP_STRING([--enable-module-ellswift],[enable ElligatorSwift module [default=yes]]), [],
   193      [SECP_SET_DEFAULT([enable_module_ellswift], [yes], [yes])])
   194  
   195  AC_ARG_ENABLE(external_default_callbacks,
   196      AS_HELP_STRING([--enable-external-default-callbacks],[enable external default callback functions [default=no]]), [],
   197      [SECP_SET_DEFAULT([enable_external_default_callbacks], [no], [no])])
   198  
   199  # Test-only override of the (autodetected by the C code) "widemul" setting.
   200  # Legal values are:
   201  #  * int64 (for [u]int64_t),
   202  #  * int128 (for [unsigned] __int128),
   203  #  * int128_struct (for int128 implemented as a structure),
   204  #  *  and auto (the default).
   205  AC_ARG_WITH([test-override-wide-multiply], [] ,[set_widemul=$withval], [set_widemul=auto])
   206  
   207  AC_ARG_WITH([asm], [AS_HELP_STRING([--with-asm=x86_64|arm32|no|auto],
   208  [assembly to use (experimental: arm32) [default=auto]])],[req_asm=$withval], [req_asm=auto])
   209  
   210  AC_ARG_WITH([ecmult-window], [AS_HELP_STRING([--with-ecmult-window=SIZE],
   211  [window size for ecmult precomputation for verification, specified as integer in range [2..24].]
   212  [Larger values result in possibly better performance at the cost of an exponentially larger precomputed table.]
   213  [The table will store 2^(SIZE-1) * 64 bytes of data but can be larger in memory due to platform-specific padding and alignment.]
   214  [A window size larger than 15 will require you delete the prebuilt precomputed_ecmult.c file so that it can be rebuilt.]
   215  [For very large window sizes, use "make -j 1" to reduce memory use during compilation.]
   216  [The default value is a reasonable setting for desktop machines (currently 15). [default=15]]
   217  )],
   218  [set_ecmult_window=$withval], [set_ecmult_window=15])
   219  
   220  AC_ARG_WITH([ecmult-gen-kb], [AS_HELP_STRING([--with-ecmult-gen-kb=2|22|86],
   221  [The size of the precomputed table for signing in multiples of 1024 bytes (on typical platforms).]
   222  [Larger values result in possibly better signing/keygeneration performance at the cost of a larger table.]
   223  [The default value is a reasonable setting for desktop machines (currently 86). [default=86]]
   224  )],
   225  [set_ecmult_gen_kb=$withval], [set_ecmult_gen_kb=86])
   226  
   227  AC_ARG_WITH([valgrind], [AS_HELP_STRING([--with-valgrind=yes|no|auto],
   228  [Build with extra checks for running inside Valgrind [default=auto]]
   229  )],
   230  [req_valgrind=$withval], [req_valgrind=auto])
   231  
   232  ###
   233  ### Handle config options (except for modules)
   234  ###
   235  
   236  if test x"$req_valgrind" = x"no"; then
   237    enable_valgrind=no
   238  else
   239    SECP_VALGRIND_CHECK
   240    if test x"$has_valgrind" != x"yes"; then
   241      if test x"$req_valgrind" = x"yes"; then
   242        AC_MSG_ERROR([Valgrind support explicitly requested but valgrind/memcheck.h header not available])
   243      fi
   244      enable_valgrind=no
   245    else
   246      enable_valgrind=yes
   247    fi
   248  fi
   249  
   250  if test x"$enable_ctime_tests" = x"auto"; then
   251      enable_ctime_tests=$enable_valgrind
   252  fi
   253  
   254  print_msan_notice=no
   255  if test x"$enable_ctime_tests" = x"yes"; then
   256    SECP_MSAN_CHECK
   257    # MSan on Clang >=16 reports uninitialized memory in function parameters and return values, even if
   258    # the uninitialized variable is never actually "used". This is called "eager" checking, and it's
   259    # sounds like good idea for normal use of MSan. However, it yields many false positives in the
   260    # ctime_tests because many return values depend on secret (i.e., "uninitialized") values, and
   261    # we're only interested in detecting branches (which count as "uses") on secret data.
   262    if test x"$msan_enabled" = x"yes"; then
   263      SECP_TRY_APPEND_CFLAGS([-fno-sanitize-memory-param-retval], SECP_CFLAGS)
   264      print_msan_notice=yes
   265    fi
   266  fi
   267  
   268  if test x"$enable_coverage" = x"yes"; then
   269      SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOVERAGE=1"
   270      SECP_CFLAGS="-O0 --coverage $SECP_CFLAGS"
   271      # If coverage is enabled, and the user has not overridden CFLAGS,
   272      # override Autoconf's value "-g -O2" with "-g". Otherwise we'd end up
   273      # with "-O0 --coverage -g -O2".
   274      if test "$CFLAGS_overridden" = "no"; then
   275        CFLAGS="-g"
   276      fi
   277      LDFLAGS="--coverage $LDFLAGS"
   278  else
   279      # Most likely the CFLAGS already contain -O2 because that is autoconf's default.
   280      # We still add it here because passing it twice is not an issue, and handling
   281      # this case would just add unnecessary complexity (see #896).
   282      SECP_CFLAGS="-O2 $SECP_CFLAGS"
   283  fi
   284  
   285  if test x"$req_asm" = x"auto"; then
   286    SECP_X86_64_ASM_CHECK
   287    if test x"$has_x86_64_asm" = x"yes"; then
   288      set_asm=x86_64
   289    fi
   290    if test x"$set_asm" = x; then
   291      set_asm=no
   292    fi
   293  else
   294    set_asm=$req_asm
   295    case $set_asm in
   296    x86_64)
   297      SECP_X86_64_ASM_CHECK
   298      if test x"$has_x86_64_asm" != x"yes"; then
   299        AC_MSG_ERROR([x86_64 assembly requested but not available])
   300      fi
   301      ;;
   302    arm32)
   303      SECP_ARM32_ASM_CHECK
   304      if test x"$has_arm32_asm" != x"yes"; then
   305        AC_MSG_ERROR([ARM32 assembly requested but not available])
   306      fi
   307      ;;
   308    no)
   309      ;;
   310    *)
   311      AC_MSG_ERROR([invalid assembly selection])
   312      ;;
   313    esac
   314  fi
   315  
   316  # Select assembly
   317  enable_external_asm=no
   318  
   319  case $set_asm in
   320  x86_64)
   321    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_ASM_X86_64=1"
   322    ;;
   323  arm32)
   324    enable_external_asm=yes
   325    ;;
   326  no)
   327    ;;
   328  *)
   329    AC_MSG_ERROR([invalid assembly selection])
   330    ;;
   331  esac
   332  
   333  if test x"$enable_external_asm" = x"yes"; then
   334    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_EXTERNAL_ASM=1"
   335  fi
   336  
   337  
   338  # Select wide multiplication implementation
   339  case $set_widemul in
   340  int128_struct)
   341    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_FORCE_WIDEMUL_INT128_STRUCT=1"
   342    ;;
   343  int128)
   344    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_FORCE_WIDEMUL_INT128=1"
   345    ;;
   346  int64)
   347    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_FORCE_WIDEMUL_INT64=1"
   348    ;;
   349  auto)
   350    ;;
   351  *)
   352    AC_MSG_ERROR([invalid wide multiplication implementation])
   353    ;;
   354  esac
   355  
   356  error_window_size=['window size for ecmult precomputation not an integer in range [2..24]']
   357  case $set_ecmult_window in
   358  ''|*[[!0-9]]*)
   359    # no valid integer
   360    AC_MSG_ERROR($error_window_size)
   361    ;;
   362  *)
   363    if test "$set_ecmult_window" -lt 2 -o "$set_ecmult_window" -gt 24 ; then
   364      # not in range
   365      AC_MSG_ERROR($error_window_size)
   366    fi
   367    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DECMULT_WINDOW_SIZE=$set_ecmult_window"
   368    ;;
   369  esac
   370  
   371  case $set_ecmult_gen_kb in
   372  2)
   373    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOMB_BLOCKS=2 -DCOMB_TEETH=5"
   374    ;;
   375  22)
   376    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOMB_BLOCKS=11 -DCOMB_TEETH=6"
   377    ;;
   378  86)
   379    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOMB_BLOCKS=43 -DCOMB_TEETH=6"
   380    ;;
   381  *)
   382    AC_MSG_ERROR(['ecmult gen table size not 2, 22 or 86'])
   383    ;;
   384  esac
   385  
   386  if test x"$enable_valgrind" = x"yes"; then
   387    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES $VALGRIND_CPPFLAGS -DVALGRIND"
   388  fi
   389  
   390  # Add -Werror and similar flags passed from the outside (for testing, e.g., in CI).
   391  # We don't want to set the user variable CFLAGS in CI because this would disable
   392  # autoconf's logic for setting default CFLAGS, which we would like to test in CI.
   393  SECP_CFLAGS="$SECP_CFLAGS $WERROR_CFLAGS"
   394  
   395  ###
   396  ### Handle module options
   397  ###
   398  
   399  # Processing must be done in a reverse topological sorting of the dependency graph
   400  # (dependent module first).
   401  if test x"$enable_module_ellswift" = x"yes"; then
   402    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_ELLSWIFT=1"
   403  fi
   404  
   405  if test x"$enable_module_musig" = x"yes"; then
   406    if test x"$enable_module_schnorrsig" = x"no"; then
   407      AC_MSG_ERROR([Module dependency error: You have disabled the schnorrsig module explicitly, but it is required by the musig module.])
   408    fi
   409    enable_module_schnorrsig=yes
   410    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_MUSIG=1"
   411  fi
   412  
   413  if test x"$enable_module_schnorrsig" = x"yes"; then
   414    if test x"$enable_module_extrakeys" = x"no"; then
   415      AC_MSG_ERROR([Module dependency error: You have disabled the extrakeys module explicitly, but it is required by the schnorrsig module.])
   416    fi
   417    enable_module_extrakeys=yes
   418    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_SCHNORRSIG=1"
   419  fi
   420  
   421  if test x"$enable_module_extrakeys" = x"yes"; then
   422    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_EXTRAKEYS=1"
   423  fi
   424  
   425  if test x"$enable_module_recovery" = x"yes"; then
   426    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_RECOVERY=1"
   427  fi
   428  
   429  if test x"$enable_module_ecdh" = x"yes"; then
   430    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_ECDH=1"
   431  fi
   432  
   433  if test x"$enable_external_default_callbacks" = x"yes"; then
   434    SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1"
   435  fi
   436  
   437  ###
   438  ### Check for --enable-experimental if necessary
   439  ###
   440  
   441  if test x"$enable_experimental" = x"no"; then
   442    if test x"$set_asm" = x"arm32"; then
   443      AC_MSG_ERROR([ARM32 assembly is experimental. Use --enable-experimental to allow.])
   444    fi
   445  fi
   446  
   447  ###
   448  ### Generate output
   449  ###
   450  
   451  AC_CONFIG_FILES([Makefile libsecp256k1.pc])
   452  AC_SUBST(SECP_CFLAGS)
   453  AC_SUBST(SECP_CONFIG_DEFINES)
   454  AM_CONDITIONAL([ENABLE_COVERAGE], [test x"$enable_coverage" = x"yes"])
   455  AM_CONDITIONAL([USE_TESTS], [test x"$enable_tests" != x"no"])
   456  AM_CONDITIONAL([USE_CTIME_TESTS], [test x"$enable_ctime_tests" = x"yes"])
   457  AM_CONDITIONAL([USE_EXHAUSTIVE_TESTS], [test x"$enable_exhaustive_tests" != x"no"])
   458  AM_CONDITIONAL([USE_EXAMPLES], [test x"$enable_examples" != x"no"])
   459  AM_CONDITIONAL([USE_BENCHMARK], [test x"$enable_benchmark" = x"yes"])
   460  AM_CONDITIONAL([ENABLE_MODULE_ECDH], [test x"$enable_module_ecdh" = x"yes"])
   461  AM_CONDITIONAL([ENABLE_MODULE_RECOVERY], [test x"$enable_module_recovery" = x"yes"])
   462  AM_CONDITIONAL([ENABLE_MODULE_EXTRAKEYS], [test x"$enable_module_extrakeys" = x"yes"])
   463  AM_CONDITIONAL([ENABLE_MODULE_SCHNORRSIG], [test x"$enable_module_schnorrsig" = x"yes"])
   464  AM_CONDITIONAL([ENABLE_MODULE_MUSIG], [test x"$enable_module_musig" = x"yes"])
   465  AM_CONDITIONAL([ENABLE_MODULE_ELLSWIFT], [test x"$enable_module_ellswift" = x"yes"])
   466  AM_CONDITIONAL([USE_EXTERNAL_ASM], [test x"$enable_external_asm" = x"yes"])
   467  AM_CONDITIONAL([USE_ASM_ARM], [test x"$set_asm" = x"arm32"])
   468  AM_CONDITIONAL([BUILD_WINDOWS], [test "$build_windows" = "yes"])
   469  AC_SUBST(LIB_VERSION_CURRENT, _LIB_VERSION_CURRENT)
   470  AC_SUBST(LIB_VERSION_REVISION, _LIB_VERSION_REVISION)
   471  AC_SUBST(LIB_VERSION_AGE, _LIB_VERSION_AGE)
   472  
   473  AC_OUTPUT
   474  
   475  echo
   476  echo "Build Options:"
   477  echo "  with external callbacks = $enable_external_default_callbacks"
   478  echo "  with benchmarks         = $enable_benchmark"
   479  echo "  with tests              = $enable_tests"
   480  echo "  with ctime tests        = $enable_ctime_tests"
   481  echo "  with coverage           = $enable_coverage"
   482  echo "  with examples           = $enable_examples"
   483  echo "  module ecdh             = $enable_module_ecdh"
   484  echo "  module recovery         = $enable_module_recovery"
   485  echo "  module extrakeys        = $enable_module_extrakeys"
   486  echo "  module schnorrsig       = $enable_module_schnorrsig"
   487  echo "  module musig            = $enable_module_musig"
   488  echo "  module ellswift         = $enable_module_ellswift"
   489  echo
   490  echo "  asm                     = $set_asm"
   491  echo "  ecmult window size      = $set_ecmult_window"
   492  echo "  ecmult gen table size   = $set_ecmult_gen_kb KiB"
   493  # Hide test-only options unless they're used.
   494  if test x"$set_widemul" != xauto; then
   495  echo "  wide multiplication     = $set_widemul"
   496  fi
   497  echo
   498  echo "  valgrind                = $enable_valgrind"
   499  echo "  CC                      = $CC"
   500  echo "  CPPFLAGS                = $CPPFLAGS"
   501  echo "  SECP_CFLAGS             = $SECP_CFLAGS"
   502  echo "  CFLAGS                  = $CFLAGS"
   503  echo "  LDFLAGS                 = $LDFLAGS"
   504  
   505  if test x"$print_msan_notice" = x"yes"; then
   506    echo
   507    echo "Note:"
   508    echo "  MemorySanitizer detected, tried to add -fno-sanitize-memory-param-retval to SECP_CFLAGS"
   509    echo "  to avoid false positives in ctime_tests. Pass --disable-ctime-tests to avoid this."
   510  fi
   511  
   512  if test x"$enable_experimental" = x"yes"; then
   513    echo
   514    echo "WARNING: Experimental build"
   515    echo "  Experimental features do not have stable APIs or properties, and may not be safe for"
   516    echo "  production use."
   517  fi