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