@@ -26,12 +26,14 @@ noinst_HEADERS += src/eckey.h
26
26
noinst_HEADERS += src/eckey_impl.h
27
27
noinst_HEADERS += src/ecmult.h
28
28
noinst_HEADERS += src/ecmult_impl.h
29
+ noinst_HEADERS += src/ecmult_compute_table.h
30
+ noinst_HEADERS += src/ecmult_compute_table_impl.h
29
31
noinst_HEADERS += src/ecmult_const.h
30
32
noinst_HEADERS += src/ecmult_const_impl.h
31
33
noinst_HEADERS += src/ecmult_gen.h
32
34
noinst_HEADERS += src/ecmult_gen_impl.h
33
- noinst_HEADERS += src/ecmult_gen_prec .h
34
- noinst_HEADERS += src/ecmult_gen_prec_impl .h
35
+ noinst_HEADERS += src/ecmult_gen_compute_table .h
36
+ noinst_HEADERS += src/ecmult_gen_compute_table_impl .h
35
37
noinst_HEADERS += src/field_10x26.h
36
38
noinst_HEADERS += src/field_10x26_impl.h
37
39
noinst_HEADERS += src/field_5x52.h
@@ -42,6 +44,8 @@ noinst_HEADERS += src/modinv32.h
42
44
noinst_HEADERS += src/modinv32_impl.h
43
45
noinst_HEADERS += src/modinv64.h
44
46
noinst_HEADERS += src/modinv64_impl.h
47
+ noinst_HEADERS += src/precomputed_ecmult.h
48
+ noinst_HEADERS += src/precomputed_ecmult_gen.h
45
49
noinst_HEADERS += src/assumptions.h
46
50
noinst_HEADERS += src/util.h
47
51
noinst_HEADERS += src/scratch.h
@@ -60,12 +64,17 @@ noinst_HEADERS += contrib/lax_der_parsing.c
60
64
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
61
65
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
62
66
67
+ PRECOMPUTED_LIB = libsecp256k1_precomputed.la
68
+ noinst_LTLIBRARIES = $(PRECOMPUTED_LIB )
69
+ libsecp256k1_precomputed_la_SOURCES = src/precomputed_ecmult.c src/precomputed_ecmult_gen.c
70
+ libsecp256k1_precomputed_la_CPPFLAGS = $(SECP_INCLUDES )
71
+
63
72
if USE_EXTERNAL_ASM
64
73
COMMON_LIB = libsecp256k1_common.la
65
- noinst_LTLIBRARIES = $(COMMON_LIB )
66
74
else
67
75
COMMON_LIB =
68
76
endif
77
+ noinst_LTLIBRARIES += $(COMMON_LIB )
69
78
70
79
pkgconfigdir = $(libdir ) /pkgconfig
71
80
pkgconfig_DATA = libsecp256k1.pc
78
87
79
88
libsecp256k1_la_SOURCES = src/secp256k1.c
80
89
libsecp256k1_la_CPPFLAGS = -I$(top_srcdir ) /include -I$(top_srcdir ) /src $(SECP_INCLUDES )
81
- libsecp256k1_la_LIBADD = $(SECP_LIBS ) $(COMMON_LIB )
90
+ libsecp256k1_la_LIBADD = $(SECP_LIBS ) $(COMMON_LIB ) $( PRECOMPUTED_LIB )
82
91
libsecp256k1_la_LDFLAGS = -no-undefined
83
92
84
93
if VALGRIND_ENABLED
@@ -91,10 +100,10 @@ noinst_PROGRAMS += bench bench_internal bench_ecmult
91
100
bench_SOURCES = src/bench.c
92
101
bench_LDADD = libsecp256k1.la $(SECP_LIBS ) $(SECP_TEST_LIBS ) $(COMMON_LIB )
93
102
bench_internal_SOURCES = src/bench_internal.c
94
- bench_internal_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
103
+ bench_internal_LDADD = $(SECP_LIBS ) $(COMMON_LIB ) $( PRECOMPUTED_LIB )
95
104
bench_internal_CPPFLAGS = $(SECP_INCLUDES )
96
105
bench_ecmult_SOURCES = src/bench_ecmult.c
97
- bench_ecmult_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
106
+ bench_ecmult_LDADD = $(SECP_LIBS ) $(COMMON_LIB ) $( PRECOMPUTED_LIB )
98
107
bench_ecmult_CPPFLAGS = $(SECP_INCLUDES )
99
108
endif
100
109
@@ -112,7 +121,7 @@ endif
112
121
if !ENABLE_COVERAGE
113
122
tests_CPPFLAGS += -DVERIFY
114
123
endif
115
- tests_LDADD = $(SECP_LIBS ) $(SECP_TEST_LIBS ) $(COMMON_LIB )
124
+ tests_LDADD = $(SECP_LIBS ) $(SECP_TEST_LIBS ) $(COMMON_LIB ) $( PRECOMPUTED_LIB )
116
125
tests_LDFLAGS = -static
117
126
TESTS += tests
118
127
endif
@@ -124,38 +133,38 @@ exhaustive_tests_CPPFLAGS = $(SECP_INCLUDES)
124
133
if !ENABLE_COVERAGE
125
134
exhaustive_tests_CPPFLAGS += -DVERIFY
126
135
endif
136
+ # Note: do not include $(PRECOMPUTED_LIB) in exhaustive_tests (it uses runtime-generated tables).
127
137
exhaustive_tests_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
128
138
exhaustive_tests_LDFLAGS = -static
129
139
TESTS += exhaustive_tests
130
140
endif
131
141
132
142
# ## Precomputed tables
133
- EXTRA_PROGRAMS = gen_ecmult_static_pre_g gen_ecmult_gen_static_prec_table
143
+ EXTRA_PROGRAMS = precompute_ecmult precompute_ecmult_gen
134
144
CLEANFILES = $(EXTRA_PROGRAMS )
135
145
136
- gen_ecmult_static_pre_g_SOURCES = src/gen_ecmult_static_pre_g .c
137
- gen_ecmult_static_pre_g_CPPFLAGS = $(SECP_INCLUDES )
138
- gen_ecmult_static_pre_g_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
146
+ precompute_ecmult_SOURCES = src/precompute_ecmult .c
147
+ precompute_ecmult_CPPFLAGS = $(SECP_INCLUDES )
148
+ precompute_ecmult_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
139
149
140
- gen_ecmult_gen_static_prec_table_SOURCES = src/gen_ecmult_gen_static_prec_table .c
141
- gen_ecmult_gen_static_prec_table_CPPFLAGS = $(SECP_INCLUDES )
142
- gen_ecmult_gen_static_prec_table_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
150
+ precompute_ecmult_gen_SOURCES = src/precompute_ecmult_gen .c
151
+ precompute_ecmult_gen_CPPFLAGS = $(SECP_INCLUDES )
152
+ precompute_ecmult_gen_LDADD = $(SECP_LIBS ) $(COMMON_LIB )
143
153
144
154
# See Automake manual, Section "Errors with distclean".
145
155
# We don't list any dependencies for the prebuilt files here because
146
156
# otherwise make's decision whether to rebuild them (even in the first
147
157
# build by a normal user) depends on mtimes, and thus is very fragile.
148
158
# This means that rebuilds of the prebuilt files always need to be
149
159
# forced by deleting them, e.g., by invoking `make clean-precomp`.
150
- src/ecmult_static_pre_g.h :
151
- $(MAKE ) $(AM_MAKEFLAGS ) gen_ecmult_static_pre_g$(EXEEXT )
152
- ./gen_ecmult_static_pre_g$(EXEEXT )
153
- src/ecmult_gen_static_prec_table.h :
154
- $(MAKE ) $(AM_MAKEFLAGS ) gen_ecmult_gen_static_prec_table$(EXEEXT )
155
- ./gen_ecmult_gen_static_prec_table$(EXEEXT )
156
-
157
- PRECOMP = src/ecmult_gen_static_prec_table.h src/ecmult_static_pre_g.h
158
- noinst_HEADERS += $(PRECOMP )
160
+ src/precomputed_ecmult.c :
161
+ $(MAKE ) $(AM_MAKEFLAGS ) precompute_ecmult$(EXEEXT )
162
+ ./precompute_ecmult$(EXEEXT )
163
+ src/precomputed_ecmult_gen.c :
164
+ $(MAKE ) $(AM_MAKEFLAGS ) precompute_ecmult_gen$(EXEEXT )
165
+ ./precompute_ecmult_gen$(EXEEXT )
166
+
167
+ PRECOMP = src/precomputed_ecmult_gen.c src/precomputed_ecmult.c
159
168
precomp : $(PRECOMP )
160
169
161
170
# Ensure the prebuilt files will be build first (only if they don't exist,
0 commit comments