]> Git Repo - secp256k1.git/blob - Makefile
10x26 field implementation
[secp256k1.git] / Makefile
1 FLAGS_COMMON:=-Wall -Wno-unused -fPIC -std=c99
2 FLAGS_PROD:=-DNDEBUG -O2 -march=native
3 FLAGS_DEBUG:=-DVERIFY -ggdb3 -O1
4 FLAGS_TEST:=-DVERIFY -ggdb3 -O2 -march=native
5
6 SECP256K1_FILES := src/num.h src/field.h src/field_5x52.h src/group.h src/ecmult.h src/ecdsa.h \
7                    src/num.c src/field.c src/field_5x52.c src/group.c src/ecmult.c src/ecdsa.c
8
9 JAVA_FILES := src/java/org_bitcoin_NativeSecp256k1.h src/java/org_bitcoin_NativeSecp256k1.c
10
11 ifndef CONF
12 CONF := gmp
13 endif
14
15 OBJS :=
16
17 default: all
18
19 ifeq ($(CONF), gmp32)
20 FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP -DUSE_FIELD_10X26
21 LIBS := -lgmp
22 SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_10x26.c src/field_10x26.h
23 else
24 ifeq ($(CONF), openssl)
25 FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_OPENSSL -DUSE_FIELD_INV_BUILTIN
26 LIBS := -lcrypto
27 SECP256K1_FILES := $(SECP256K1_FILES) src/num_openssl.h src/num_openssl.c src/field_5x52_int128.c
28 else
29 ifeq ($(CONF), gmp)
30 FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP
31 LIBS := -lgmp
32 SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_5x52_int128.c
33 else
34 ifeq ($(CONF), gmpasm)
35 FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP -DUSE_FIELD_5X52_ASM
36 LIBS := -lgmp
37 OBJS := $(OBJS) obj/field_5x52_asm.o
38 SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_5x52_asm.c
39
40 obj/field_5x52_asm.o: src/field_5x52_asm.asm
41         yasm -f elf64 -o obj/field_5x52_asm.o src/field_5x52_asm.asm
42 else
43 SECP256K1_FILES := $(SECP256K1_FILES) src/field_5x52_int128.c
44 endif
45 endif
46 endif
47 endif
48
49
50 all: src/*.c src/*.asm src/*.h include/*.h
51         +make CONF=openssl all-openssl
52         +make CONF=gmp     all-gmp
53         +make CONF=gmp32   all-gmp32
54         +make CONF=gmpasm  all-gmpasm
55
56 clean:
57         +make CONF=openssl clean-openssl
58         +make CONF=gmp     clean-gmp
59         +make CONF=gmp32   clean-gmp32
60         +make CONF=gmpasm  clean-gmpasm
61
62 bench-any: bench-$(CONF)
63 tests-any: tests-$(CONF)
64
65 all-$(CONF): bench-$(CONF) tests-$(CONF) libsecp256k1-$(CONF).a
66
67 clean-$(CONF):
68         rm -f bench-$(CONF) tests-$(CONF) libsecp256k1-$(CONF).a libjavasecp256k1-$(CONF).so obj/*
69
70 obj/secp256k1-$(CONF).o: $(SECP256K1_FILES) src/secp256k1.c include/secp256k1.h
71         $(CC) $(FLAGS_COMMON) $(FLAGS_PROD) src/secp256k1.c -c -o obj/secp256k1-$(CONF).o
72
73 bench-$(CONF): $(OBJS) $(SECP256K1_FILES) src/bench.c
74         $(CC) $(FLAGS_COMMON) $(FLAGS_PROD) src/bench.c $(LIBS) $(OBJS) -o bench-$(CONF)
75
76 tests-$(CONF): $(OBJS) $(SECP256K1_FILES) src/tests.c
77         $(CC) $(FLAGS_COMMON) $(FLAGS_TEST) src/tests.c $(LIBS) $(OBJS) -o tests-$(CONF)
78
79 libsecp256k1-$(CONF).a: $(OBJS) obj/secp256k1-$(CONF).o
80         $(AR) -rs $@ $(OBJS) obj/secp256k1-$(CONF).o
81
82 libjavasecp256k1-$(CONF).so: $(OBJS) obj/secp256k1-$(CONF).o $(JAVA_FILES)
83         $(CC) $(FLAGS_COMMON) $(FLAGS_PROD) -I. src/java/org_bitcoin_NativeSecp256k1.c $(LIBS) $(OBJS) obj/secp256k1-$(CONF).o -shared -o libjavasecp256k1-$(CONF).so
84
85 java: libjavasecp256k1-$(CONF).so
This page took 0.02724 seconds and 4 git commands to generate.