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

     1  ACLOCAL_AMFLAGS = -I build-aux/m4
     2  
     3  # AM_CFLAGS will be automatically prepended to CFLAGS by Automake when compiling some foo
     4  # which does not have an explicit foo_CFLAGS variable set.
     5  AM_CFLAGS = $(SECP_CFLAGS)
     6  
     7  lib_LTLIBRARIES = libsecp256k1.la
     8  include_HEADERS = include/secp256k1.h
     9  include_HEADERS += include/secp256k1_preallocated.h
    10  noinst_HEADERS =
    11  noinst_HEADERS += src/scalar.h
    12  noinst_HEADERS += src/scalar_4x64.h
    13  noinst_HEADERS += src/scalar_8x32.h
    14  noinst_HEADERS += src/scalar_low.h
    15  noinst_HEADERS += src/scalar_impl.h
    16  noinst_HEADERS += src/scalar_4x64_impl.h
    17  noinst_HEADERS += src/scalar_8x32_impl.h
    18  noinst_HEADERS += src/scalar_low_impl.h
    19  noinst_HEADERS += src/group.h
    20  noinst_HEADERS += src/group_impl.h
    21  noinst_HEADERS += src/ecdsa.h
    22  noinst_HEADERS += src/ecdsa_impl.h
    23  noinst_HEADERS += src/eckey.h
    24  noinst_HEADERS += src/eckey_impl.h
    25  noinst_HEADERS += src/ecmult.h
    26  noinst_HEADERS += src/ecmult_impl.h
    27  noinst_HEADERS += src/ecmult_compute_table.h
    28  noinst_HEADERS += src/ecmult_compute_table_impl.h
    29  noinst_HEADERS += src/ecmult_const.h
    30  noinst_HEADERS += src/ecmult_const_impl.h
    31  noinst_HEADERS += src/ecmult_gen.h
    32  noinst_HEADERS += src/ecmult_gen_impl.h
    33  noinst_HEADERS += src/ecmult_gen_compute_table.h
    34  noinst_HEADERS += src/ecmult_gen_compute_table_impl.h
    35  noinst_HEADERS += src/field_10x26.h
    36  noinst_HEADERS += src/field_10x26_impl.h
    37  noinst_HEADERS += src/field_5x52.h
    38  noinst_HEADERS += src/field_5x52_impl.h
    39  noinst_HEADERS += src/field_5x52_int128_impl.h
    40  noinst_HEADERS += src/modinv32.h
    41  noinst_HEADERS += src/modinv32_impl.h
    42  noinst_HEADERS += src/modinv64.h
    43  noinst_HEADERS += src/modinv64_impl.h
    44  noinst_HEADERS += src/precomputed_ecmult.h
    45  noinst_HEADERS += src/precomputed_ecmult_gen.h
    46  noinst_HEADERS += src/assumptions.h
    47  noinst_HEADERS += src/checkmem.h
    48  noinst_HEADERS += src/testutil.h
    49  noinst_HEADERS += src/util.h
    50  noinst_HEADERS += src/int128.h
    51  noinst_HEADERS += src/int128_impl.h
    52  noinst_HEADERS += src/int128_native.h
    53  noinst_HEADERS += src/int128_native_impl.h
    54  noinst_HEADERS += src/int128_struct.h
    55  noinst_HEADERS += src/int128_struct_impl.h
    56  noinst_HEADERS += src/scratch.h
    57  noinst_HEADERS += src/scratch_impl.h
    58  noinst_HEADERS += src/selftest.h
    59  noinst_HEADERS += src/testrand.h
    60  noinst_HEADERS += src/testrand_impl.h
    61  noinst_HEADERS += src/hash.h
    62  noinst_HEADERS += src/hash_impl.h
    63  noinst_HEADERS += src/field.h
    64  noinst_HEADERS += src/field_impl.h
    65  noinst_HEADERS += src/bench.h
    66  noinst_HEADERS += src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h
    67  noinst_HEADERS += src/hsort.h
    68  noinst_HEADERS += src/hsort_impl.h
    69  noinst_HEADERS += contrib/lax_der_parsing.h
    70  noinst_HEADERS += contrib/lax_der_parsing.c
    71  noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
    72  noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
    73  noinst_HEADERS += examples/examples_util.h
    74  
    75  PRECOMPUTED_LIB = libsecp256k1_precomputed.la
    76  noinst_LTLIBRARIES = $(PRECOMPUTED_LIB)
    77  libsecp256k1_precomputed_la_SOURCES =  src/precomputed_ecmult.c src/precomputed_ecmult_gen.c
    78  # We need `-I$(top_srcdir)/src` in VPATH builds if libsecp256k1_precomputed_la_SOURCES have been recreated in the build tree.
    79  # This helps users and packagers who insist on recreating the precomputed files (e.g., Gentoo).
    80  libsecp256k1_precomputed_la_CPPFLAGS = -I$(top_srcdir)/src $(SECP_CONFIG_DEFINES)
    81  
    82  if USE_EXTERNAL_ASM
    83  COMMON_LIB = libsecp256k1_common.la
    84  else
    85  COMMON_LIB =
    86  endif
    87  noinst_LTLIBRARIES += $(COMMON_LIB)
    88  
    89  pkgconfigdir = $(libdir)/pkgconfig
    90  pkgconfig_DATA = libsecp256k1.pc
    91  
    92  if USE_EXTERNAL_ASM
    93  if USE_ASM_ARM
    94  libsecp256k1_common_la_SOURCES = src/asm/field_10x26_arm.s
    95  endif
    96  endif
    97  
    98  libsecp256k1_la_SOURCES = src/secp256k1.c
    99  libsecp256k1_la_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   100  libsecp256k1_la_LIBADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
   101  libsecp256k1_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_CURRENT):$(LIB_VERSION_REVISION):$(LIB_VERSION_AGE)
   102  
   103  noinst_PROGRAMS =
   104  if USE_BENCHMARK
   105  noinst_PROGRAMS += bench bench_internal bench_ecmult
   106  bench_SOURCES = src/bench.c
   107  bench_LDADD = libsecp256k1.la
   108  bench_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   109  bench_internal_SOURCES = src/bench_internal.c
   110  bench_internal_LDADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
   111  bench_internal_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   112  bench_ecmult_SOURCES = src/bench_ecmult.c
   113  bench_ecmult_LDADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
   114  bench_ecmult_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   115  endif
   116  
   117  TESTS =
   118  if USE_TESTS
   119  TESTS += noverify_tests
   120  noinst_PROGRAMS += noverify_tests
   121  noverify_tests_SOURCES = src/tests.c
   122  noverify_tests_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   123  noverify_tests_LDADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
   124  noverify_tests_LDFLAGS = -static
   125  if !ENABLE_COVERAGE
   126  TESTS += tests
   127  noinst_PROGRAMS += tests
   128  tests_SOURCES  = $(noverify_tests_SOURCES)
   129  tests_CPPFLAGS = $(noverify_tests_CPPFLAGS) -DVERIFY
   130  tests_LDADD    = $(noverify_tests_LDADD)
   131  tests_LDFLAGS  = $(noverify_tests_LDFLAGS)
   132  endif
   133  endif
   134  
   135  if USE_CTIME_TESTS
   136  noinst_PROGRAMS += ctime_tests
   137  ctime_tests_SOURCES = src/ctime_tests.c
   138  ctime_tests_LDADD = libsecp256k1.la
   139  ctime_tests_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   140  endif
   141  
   142  if USE_EXHAUSTIVE_TESTS
   143  noinst_PROGRAMS += exhaustive_tests
   144  exhaustive_tests_SOURCES = src/tests_exhaustive.c
   145  exhaustive_tests_CPPFLAGS = $(SECP_CONFIG_DEFINES)
   146  if !ENABLE_COVERAGE
   147  exhaustive_tests_CPPFLAGS += -DVERIFY
   148  endif
   149  # Note: do not include $(PRECOMPUTED_LIB) in exhaustive_tests (it uses runtime-generated tables).
   150  exhaustive_tests_LDADD = $(COMMON_LIB)
   151  exhaustive_tests_LDFLAGS = -static
   152  TESTS += exhaustive_tests
   153  endif
   154  
   155  if USE_EXAMPLES
   156  noinst_PROGRAMS += ecdsa_example
   157  ecdsa_example_SOURCES = examples/ecdsa.c
   158  ecdsa_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
   159  ecdsa_example_LDADD = libsecp256k1.la
   160  ecdsa_example_LDFLAGS = -static
   161  if BUILD_WINDOWS
   162  ecdsa_example_LDFLAGS += -lbcrypt
   163  endif
   164  TESTS += ecdsa_example
   165  if ENABLE_MODULE_ECDH
   166  noinst_PROGRAMS += ecdh_example
   167  ecdh_example_SOURCES = examples/ecdh.c
   168  ecdh_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
   169  ecdh_example_LDADD = libsecp256k1.la
   170  ecdh_example_LDFLAGS = -static
   171  if BUILD_WINDOWS
   172  ecdh_example_LDFLAGS += -lbcrypt
   173  endif
   174  TESTS += ecdh_example
   175  endif
   176  if ENABLE_MODULE_SCHNORRSIG
   177  noinst_PROGRAMS += schnorr_example
   178  schnorr_example_SOURCES = examples/schnorr.c
   179  schnorr_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
   180  schnorr_example_LDADD = libsecp256k1.la
   181  schnorr_example_LDFLAGS = -static
   182  if BUILD_WINDOWS
   183  schnorr_example_LDFLAGS += -lbcrypt
   184  endif
   185  TESTS += schnorr_example
   186  endif
   187  if ENABLE_MODULE_ELLSWIFT
   188  noinst_PROGRAMS += ellswift_example
   189  ellswift_example_SOURCES = examples/ellswift.c
   190  ellswift_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
   191  ellswift_example_LDADD = libsecp256k1.la
   192  ellswift_example_LDFLAGS = -static
   193  if BUILD_WINDOWS
   194  ellswift_example_LDFLAGS += -lbcrypt
   195  endif
   196  TESTS += ellswift_example
   197  endif
   198  if ENABLE_MODULE_MUSIG
   199  noinst_PROGRAMS += musig_example
   200  musig_example_SOURCES = examples/musig.c
   201  musig_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
   202  musig_example_LDADD = libsecp256k1.la
   203  musig_example_LDFLAGS = -static
   204  if BUILD_WINDOWS
   205  musig_example_LDFLAGS += -lbcrypt
   206  endif
   207  TESTS += musig_example
   208  endif
   209  endif
   210  
   211  ### Precomputed tables
   212  EXTRA_PROGRAMS = precompute_ecmult precompute_ecmult_gen
   213  CLEANFILES = $(EXTRA_PROGRAMS)
   214  
   215  precompute_ecmult_SOURCES = src/precompute_ecmult.c
   216  precompute_ecmult_CPPFLAGS = $(SECP_CONFIG_DEFINES) -DVERIFY
   217  precompute_ecmult_LDADD = $(COMMON_LIB)
   218  
   219  precompute_ecmult_gen_SOURCES = src/precompute_ecmult_gen.c
   220  precompute_ecmult_gen_CPPFLAGS = $(SECP_CONFIG_DEFINES) -DVERIFY
   221  precompute_ecmult_gen_LDADD = $(COMMON_LIB)
   222  
   223  # See Automake manual, Section "Errors with distclean".
   224  # We don't list any dependencies for the prebuilt files here because
   225  # otherwise make's decision whether to rebuild them (even in the first
   226  # build by a normal user) depends on mtimes, and thus is very fragile.
   227  # This means that rebuilds of the prebuilt files always need to be
   228  # forced by deleting them.
   229  src/precomputed_ecmult.c:
   230  	$(MAKE) $(AM_MAKEFLAGS) precompute_ecmult$(EXEEXT)
   231  	./precompute_ecmult$(EXEEXT)
   232  src/precomputed_ecmult_gen.c:
   233  	$(MAKE) $(AM_MAKEFLAGS) precompute_ecmult_gen$(EXEEXT)
   234  	./precompute_ecmult_gen$(EXEEXT)
   235  
   236  PRECOMP = src/precomputed_ecmult_gen.c src/precomputed_ecmult.c
   237  precomp: $(PRECOMP)
   238  
   239  # Ensure the prebuilt files will be build first (only if they don't exist,
   240  # e.g., after `make maintainer-clean`).
   241  BUILT_SOURCES = $(PRECOMP)
   242  
   243  .PHONY: clean-precomp
   244  clean-precomp:
   245  	rm -f $(PRECOMP)
   246  maintainer-clean-local: clean-precomp
   247  
   248  ### Pregenerated test vectors
   249  ### (see the comments in the previous section for detailed rationale)
   250  TESTVECTORS = src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h
   251  
   252  src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h:
   253  	mkdir -p $(@D)
   254  	python3 $(top_srcdir)/tools/tests_wycheproof_generate.py $(top_srcdir)/src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.json > $@
   255  
   256  testvectors: $(TESTVECTORS)
   257  
   258  BUILT_SOURCES += $(TESTVECTORS)
   259  
   260  .PHONY: clean-testvectors
   261  clean-testvectors:
   262  	rm -f $(TESTVECTORS)
   263  maintainer-clean-local: clean-testvectors
   264  
   265  ### Additional files to distribute
   266  EXTRA_DIST = autogen.sh CHANGELOG.md SECURITY.md
   267  EXTRA_DIST += doc/release-process.md doc/safegcd_implementation.md
   268  EXTRA_DIST += doc/ellswift.md doc/musig.md
   269  EXTRA_DIST += examples/EXAMPLES_COPYING
   270  EXTRA_DIST += sage/gen_exhaustive_groups.sage
   271  EXTRA_DIST += sage/gen_split_lambda_constants.sage
   272  EXTRA_DIST += sage/group_prover.sage
   273  EXTRA_DIST += sage/prove_group_implementations.sage
   274  EXTRA_DIST += sage/secp256k1_params.sage
   275  EXTRA_DIST += sage/weierstrass_prover.sage
   276  EXTRA_DIST += src/wycheproof/WYCHEPROOF_COPYING
   277  EXTRA_DIST += src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.json
   278  EXTRA_DIST += tools/tests_wycheproof_generate.py
   279  
   280  if ENABLE_MODULE_ECDH
   281  include src/modules/ecdh/Makefile.am.include
   282  endif
   283  
   284  if ENABLE_MODULE_RECOVERY
   285  include src/modules/recovery/Makefile.am.include
   286  endif
   287  
   288  if ENABLE_MODULE_EXTRAKEYS
   289  include src/modules/extrakeys/Makefile.am.include
   290  endif
   291  
   292  if ENABLE_MODULE_SCHNORRSIG
   293  include src/modules/schnorrsig/Makefile.am.include
   294  endif
   295  
   296  if ENABLE_MODULE_MUSIG
   297  include src/modules/musig/Makefile.am.include
   298  endif
   299  
   300  if ENABLE_MODULE_ELLSWIFT
   301  include src/modules/ellswift/Makefile.am.include
   302  endif