1ACLOCAL_AMFLAGS = -I build-aux/m4
2
3lib_LTLIBRARIES = libsecp256k1.la
4if USE_JNI
5JNI_LIB = libsecp256k1_jni.la
6noinst_LTLIBRARIES = $(JNI_LIB)
7else
8JNI_LIB =
9endif
10include_HEADERS = include/secp256k1.h
11noinst_HEADERS =
12noinst_HEADERS += src/scalar.h
13noinst_HEADERS += src/scalar_4x64.h
14noinst_HEADERS += src/scalar_8x32.h
15noinst_HEADERS += src/scalar_low.h
16noinst_HEADERS += src/scalar_impl.h
17noinst_HEADERS += src/scalar_4x64_impl.h
18noinst_HEADERS += src/scalar_8x32_impl.h
19noinst_HEADERS += src/scalar_low_impl.h
20noinst_HEADERS += src/group.h
21noinst_HEADERS += src/group_impl.h
22noinst_HEADERS += src/num_gmp.h
23noinst_HEADERS += src/num_gmp_impl.h
24noinst_HEADERS += src/ecdsa.h
25noinst_HEADERS += src/ecdsa_impl.h
26noinst_HEADERS += src/eckey.h
27noinst_HEADERS += src/eckey_impl.h
28noinst_HEADERS += src/ecmult.h
29noinst_HEADERS += src/ecmult_impl.h
30noinst_HEADERS += src/ecmult_const.h
31noinst_HEADERS += src/ecmult_const_impl.h
32noinst_HEADERS += src/ecmult_gen.h
33noinst_HEADERS += src/ecmult_gen_impl.h
34noinst_HEADERS += src/num.h
35noinst_HEADERS += src/num_impl.h
36noinst_HEADERS += src/field_10x26.h
37noinst_HEADERS += src/field_10x26_impl.h
38noinst_HEADERS += src/field_5x52.h
39noinst_HEADERS += src/field_5x52_impl.h
40noinst_HEADERS += src/field_5x52_int128_impl.h
41noinst_HEADERS += src/field_5x52_asm_impl.h
42noinst_HEADERS += src/java/org_bitcoin_NativeSecp256k1.h
43noinst_HEADERS += src/java/org_bitcoin_Secp256k1Context.h
44noinst_HEADERS += src/util.h
45noinst_HEADERS += src/testrand.h
46noinst_HEADERS += src/testrand_impl.h
47noinst_HEADERS += src/hash.h
48noinst_HEADERS += src/hash_impl.h
49noinst_HEADERS += src/field.h
50noinst_HEADERS += src/field_impl.h
51noinst_HEADERS += src/bench.h
52noinst_HEADERS += contrib/lax_der_parsing.h
53noinst_HEADERS += contrib/lax_der_parsing.c
54noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
55noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
56
57if USE_EXTERNAL_ASM
58COMMON_LIB = libsecp256k1_common.la
59noinst_LTLIBRARIES = $(COMMON_LIB)
60else
61COMMON_LIB =
62endif
63
64pkgconfigdir = $(libdir)/pkgconfig
65pkgconfig_DATA = libsecp256k1.pc
66
67if USE_EXTERNAL_ASM
68if USE_ASM_ARM
69libsecp256k1_common_la_SOURCES = src/asm/field_10x26_arm.s
70endif
71endif
72
73libsecp256k1_la_SOURCES = src/secp256k1.c
74libsecp256k1_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
75libsecp256k1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB)
76
77libsecp256k1_jni_la_SOURCES  = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c
78libsecp256k1_jni_la_CPPFLAGS = -DSECP256K1_BUILD $(JNI_INCLUDES)
79
80noinst_PROGRAMS =
81if USE_BENCHMARK
82noinst_PROGRAMS += bench_verify bench_sign bench_internal
83bench_verify_SOURCES = src/bench_verify.c
84bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
85bench_sign_SOURCES = src/bench_sign.c
86bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
87bench_internal_SOURCES = src/bench_internal.c
88bench_internal_LDADD = $(SECP_LIBS) $(COMMON_LIB)
89bench_internal_CPPFLAGS = -DSECP256K1_BUILD $(SECP_INCLUDES)
90endif
91
92TESTS =
93if USE_TESTS
94noinst_PROGRAMS += tests
95tests_SOURCES = src/tests.c
96tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src -I$(top_srcdir)/include $(SECP_INCLUDES) $(SECP_TEST_INCLUDES)
97if !ENABLE_COVERAGE
98tests_CPPFLAGS += -DVERIFY
99endif
100tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
101tests_LDFLAGS = -static
102TESTS += tests
103endif
104
105if USE_EXHAUSTIVE_TESTS
106noinst_PROGRAMS += exhaustive_tests
107exhaustive_tests_SOURCES = src/tests_exhaustive.c
108exhaustive_tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src $(SECP_INCLUDES)
109if !ENABLE_COVERAGE
110exhaustive_tests_CPPFLAGS += -DVERIFY
111endif
112exhaustive_tests_LDADD = $(SECP_LIBS)
113exhaustive_tests_LDFLAGS = -static
114TESTS += exhaustive_tests
115endif
116
117JAVAROOT=src/java
118JAVAORG=org/bitcoin
119JAVA_GUAVA=$(srcdir)/$(JAVAROOT)/guava/guava-18.0.jar
120CLASSPATH_ENV=CLASSPATH=$(JAVA_GUAVA)
121JAVA_FILES= \
122  $(JAVAROOT)/$(JAVAORG)/NativeSecp256k1.java \
123  $(JAVAROOT)/$(JAVAORG)/NativeSecp256k1Test.java \
124  $(JAVAROOT)/$(JAVAORG)/NativeSecp256k1Util.java \
125  $(JAVAROOT)/$(JAVAORG)/Secp256k1Context.java
126
127if USE_JNI
128
129$(JAVA_GUAVA):
130	@echo Guava is missing. Fetch it via: \
131	wget https://search.maven.org/remotecontent?filepath=com/google/guava/guava/18.0/guava-18.0.jar -O $(@)
132	@false
133
134.stamp-java: $(JAVA_FILES)
135	@echo   Compiling $^
136	$(AM_V_at)$(CLASSPATH_ENV) javac $^
137	@touch $@
138
139if USE_TESTS
140
141check-java: libsecp256k1.la $(JAVA_GUAVA) .stamp-java
142	$(AM_V_at)java -Djava.library.path="./:./src:./src/.libs:.libs/" -cp "$(JAVA_GUAVA):$(JAVAROOT)" $(JAVAORG)/NativeSecp256k1Test
143
144endif
145endif
146
147if USE_ECMULT_STATIC_PRECOMPUTATION
148CPPFLAGS_FOR_BUILD +=-I$(top_srcdir)
149CFLAGS_FOR_BUILD += -Wall -Wextra -Wno-unused-function
150
151gen_context_OBJECTS = gen_context.o
152gen_context_BIN = gen_context$(BUILD_EXEEXT)
153gen_%.o: src/gen_%.c
154	$(CC_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -c $< -o $@
155
156$(gen_context_BIN): $(gen_context_OBJECTS)
157	$(CC_FOR_BUILD) $^ -o $@
158
159$(libsecp256k1_la_OBJECTS): src/ecmult_static_context.h
160$(tests_OBJECTS): src/ecmult_static_context.h
161$(bench_internal_OBJECTS): src/ecmult_static_context.h
162
163src/ecmult_static_context.h: $(gen_context_BIN)
164	./$(gen_context_BIN)
165
166CLEANFILES = $(gen_context_BIN) src/ecmult_static_context.h $(JAVAROOT)/$(JAVAORG)/*.class .stamp-java
167endif
168
169EXTRA_DIST = autogen.sh src/gen_context.c src/basic-config.h $(JAVA_FILES)
170
171if ENABLE_MODULE_ECDH
172include src/modules/ecdh/Makefile.am.include
173endif
174
175if ENABLE_MODULE_RECOVERY
176include src/modules/recovery/Makefile.am.include
177endif
178