Skip to content

Commit 1a6691a

Browse files
committed
Split off .c file from precomputed_ecmult_gen.h
1 parent bb36331 commit 1a6691a

5 files changed

+9790
-9770
lines changed

.gitattributes

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
src/precomputed_ecmult.h linguist-generated
2-
src/precomputed_ecmult_gen.h linguist-generated
2+
src/precomputed_ecmult_gen.c linguist-generated

Makefile.am

+15-8
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ noinst_HEADERS += src/modinv32.h
4444
noinst_HEADERS += src/modinv32_impl.h
4545
noinst_HEADERS += src/modinv64.h
4646
noinst_HEADERS += src/modinv64_impl.h
47+
noinst_HEADERS += src/precomputed_ecmult_gen.h
4748
noinst_HEADERS += src/assumptions.h
4849
noinst_HEADERS += src/util.h
4950
noinst_HEADERS += src/scratch.h
@@ -62,12 +63,17 @@ noinst_HEADERS += contrib/lax_der_parsing.c
6263
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
6364
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
6465

66+
PRECOMPUTED_LIB = libsecp256k1_precomputed.la
67+
noinst_LTLIBRARIES = $(PRECOMPUTED_LIB)
68+
libsecp256k1_precomputed_la_SOURCES = src/precomputed_ecmult_gen.c
69+
libsecp256k1_precomputed_la_CPPFLAGS = $(SECP_INCLUDES)
70+
6571
if USE_EXTERNAL_ASM
6672
COMMON_LIB = libsecp256k1_common.la
67-
noinst_LTLIBRARIES = $(COMMON_LIB)
6873
else
6974
COMMON_LIB =
7075
endif
76+
noinst_LTLIBRARIES += $(COMMON_LIB)
7177

7278
pkgconfigdir = $(libdir)/pkgconfig
7379
pkgconfig_DATA = libsecp256k1.pc
@@ -80,7 +86,7 @@ endif
8086

8187
libsecp256k1_la_SOURCES = src/secp256k1.c
8288
libsecp256k1_la_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
83-
libsecp256k1_la_LIBADD = $(SECP_LIBS) $(COMMON_LIB)
89+
libsecp256k1_la_LIBADD = $(SECP_LIBS) $(COMMON_LIB) $(PRECOMPUTED_LIB)
8490
libsecp256k1_la_LDFLAGS = -no-undefined
8591

8692
if VALGRIND_ENABLED
@@ -93,10 +99,10 @@ noinst_PROGRAMS += bench bench_internal bench_ecmult
9399
bench_SOURCES = src/bench.c
94100
bench_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
95101
bench_internal_SOURCES = src/bench_internal.c
96-
bench_internal_LDADD = $(SECP_LIBS) $(COMMON_LIB)
102+
bench_internal_LDADD = $(SECP_LIBS) $(COMMON_LIB) $(PRECOMPUTED_LIB)
97103
bench_internal_CPPFLAGS = $(SECP_INCLUDES)
98104
bench_ecmult_SOURCES = src/bench_ecmult.c
99-
bench_ecmult_LDADD = $(SECP_LIBS) $(COMMON_LIB)
105+
bench_ecmult_LDADD = $(SECP_LIBS) $(COMMON_LIB) $(PRECOMPUTED_LIB)
100106
bench_ecmult_CPPFLAGS = $(SECP_INCLUDES)
101107
endif
102108

@@ -114,7 +120,7 @@ endif
114120
if !ENABLE_COVERAGE
115121
tests_CPPFLAGS += -DVERIFY
116122
endif
117-
tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
123+
tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB) $(PRECOMPUTED_LIB)
118124
tests_LDFLAGS = -static
119125
TESTS += tests
120126
endif
@@ -126,6 +132,7 @@ exhaustive_tests_CPPFLAGS = $(SECP_INCLUDES)
126132
if !ENABLE_COVERAGE
127133
exhaustive_tests_CPPFLAGS += -DVERIFY
128134
endif
135+
# Note: do not include $(PRECOMPUTED_LIB) in exhaustive_tests (it uses runtime-generated tables).
129136
exhaustive_tests_LDADD = $(SECP_LIBS) $(COMMON_LIB)
130137
exhaustive_tests_LDFLAGS = -static
131138
TESTS += exhaustive_tests
@@ -152,12 +159,12 @@ precompute_ecmult_gen_LDADD = $(SECP_LIBS) $(COMMON_LIB)
152159
src/precomputed_ecmult.h:
153160
$(MAKE) $(AM_MAKEFLAGS) precompute_ecmult$(EXEEXT)
154161
./precompute_ecmult$(EXEEXT)
155-
src/precomputed_ecmult_gen.h:
162+
src/precomputed_ecmult_gen.c:
156163
$(MAKE) $(AM_MAKEFLAGS) precompute_ecmult_gen$(EXEEXT)
157164
./precompute_ecmult_gen$(EXEEXT)
158165

159-
PRECOMP = src/precomputed_ecmult_gen.h src/precomputed_ecmult.h
160-
noinst_HEADERS += $(PRECOMP)
166+
PRECOMP = src/precomputed_ecmult_gen.c
167+
noinst_HEADERS += src/precomputed_ecmult.h
161168
precomp: $(PRECOMP)
162169

163170
# Ensure the prebuilt files will be build first (only if they don't exist,

src/precompute_ecmult_gen.c

+16-20
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
/***********************************************************************
2-
* Copyright (c) 2013, 2014, 2015 Thomas Daede, Cory Fields *
3-
* Distributed under the MIT software license, see the accompanying *
4-
* file COPYING or https://www.opensource.org/licenses/mit-license.php.*
5-
***********************************************************************/
1+
/*********************************************************************************
2+
* Copyright (c) 2013, 2014, 2015, 2021 Thomas Daede, Cory Fields, Pieter Wuille *
3+
* Distributed under the MIT software license, see the accompanying *
4+
* file COPYING or https://www.opensource.org/licenses/mit-license.php. *
5+
*********************************************************************************/
66

77
#include <inttypes.h>
88
#include <stdio.h>
@@ -15,7 +15,7 @@
1515
#include "ecmult_gen_compute_table_impl.h"
1616

1717
int main(int argc, char **argv) {
18-
const char outfile[] = "src/precomputed_ecmult_gen.h";
18+
const char outfile[] = "src/precomputed_ecmult_gen.c";
1919
FILE* fp;
2020
int bits;
2121

@@ -30,19 +30,17 @@ int main(int argc, char **argv) {
3030

3131
fprintf(fp, "/* This file was automatically generated by precompute_ecmult_gen. */\n");
3232
fprintf(fp, "/* See ecmult_gen_impl.h for details about the contents of this file. */\n");
33-
fprintf(fp, "#ifndef SECP256K1_PRECOMPUTED_ECMULT_GEN_H\n");
34-
fprintf(fp, "#define SECP256K1_PRECOMPUTED_ECMULT_GEN_H\n");
35-
33+
fprintf(fp, "#if defined HAVE_CONFIG_H\n");
34+
fprintf(fp, "#include \"libsecp256k1-config.h\"\n");
35+
fprintf(fp, "#endif\n");
36+
fprintf(fp, "#include \"../include/secp256k1.h\"\n");
3637
fprintf(fp, "#include \"group.h\"\n");
37-
38-
fprintf(fp, "#define S(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) "
39-
"SECP256K1_GE_STORAGE_CONST(0x##a##u,0x##b##u,0x##c##u,0x##d##u,0x##e##u,0x##f##u,0x##g##u,"
40-
"0x##h##u,0x##i##u,0x##j##u,0x##k##u,0x##l##u,0x##m##u,0x##n##u,0x##o##u,0x##p##u)\n");
41-
38+
fprintf(fp, "#include \"ecmult_gen.h\"\n");
4239
fprintf(fp, "#ifdef EXHAUSTIVE_TEST_ORDER\n");
43-
fprintf(fp, "static secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[ECMULT_GEN_PREC_N(ECMULT_GEN_PREC_BITS)][ECMULT_GEN_PREC_G(ECMULT_GEN_PREC_BITS)];\n");
44-
fprintf(fp, "#else\n");
45-
fprintf(fp, "static const secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[ECMULT_GEN_PREC_N(ECMULT_GEN_PREC_BITS)][ECMULT_GEN_PREC_G(ECMULT_GEN_PREC_BITS)] = {\n");
40+
fprintf(fp, "#error Cannot compile precomputed_ecmult_gen.c in exhaustive test mode\n");
41+
fprintf(fp, "#endif /* EXHAUSTIVE_TEST_ORDER */\n");
42+
fprintf(fp, "#define S(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) SECP256K1_GE_STORAGE_CONST(0x##a##u,0x##b##u,0x##c##u,0x##d##u,0x##e##u,0x##f##u,0x##g##u,0x##h##u,0x##i##u,0x##j##u,0x##k##u,0x##l##u,0x##m##u,0x##n##u,0x##o##u,0x##p##u)\n");
43+
fprintf(fp, "const secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[ECMULT_GEN_PREC_N(ECMULT_GEN_PREC_BITS)][ECMULT_GEN_PREC_G(ECMULT_GEN_PREC_BITS)] = {\n");
4644

4745
for (bits = 2; bits <= 8; bits *= 2) {
4846
int g = ECMULT_GEN_PREC_G(bits);
@@ -74,9 +72,7 @@ int main(int argc, char **argv) {
7472
}
7573

7674
fprintf(fp, "};\n");
77-
fprintf(fp, "#endif /* EXHAUSTIVE_TEST_ORDER */\n");
78-
fprintf(fp, "#undef SC\n");
79-
fprintf(fp, "#endif /* SECP256K1_PRECOMPUTED_ECMULT_GEN_H */\n");
75+
fprintf(fp, "#undef S\n");
8076
fclose(fp);
8177

8278
return 0;

0 commit comments

Comments
 (0)