-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile
150 lines (133 loc) · 4.83 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
.PHONY: nacllib clean
HACL_HOME ?= ../..
#
# Compilation flags
#
CCOPTS = -Ofast -march=native -mtune=native -m64 -fwrapv -fomit-frame-pointer -funroll-loops -std=gnu99
CCOPTS32 = -Ofast -mtune=generic -m32 -fwrapv -fomit-frame-pointer -funroll-loops -std=gnu99
ifeq ($(SNAPSHOT_DIR),snapshots/hacl-c-compcert)
LIBFLAGS=$(CCOPTS) $(CFLAGS)
LIBFLAGS32=$(CCOPTS32) $(CFLAGS)
OTHER=FStar.c -shared
else
LIBFLAGS=$(CCOPTS) -fPIC
LIBFLAGS32=$(CCOPTS32) -fPIC -DKRML_NOUINT128 -Wno-unused-function
OTHER=-shared
endif
#
# Files
#
FILES = Hacl_Salsa20.c Hacl_Salsa20.h Hacl_Chacha20.c Hacl_Chacha20.h Hacl_Poly1305_64.c Hacl_Poly1305_64.h AEAD_Poly1305_64.c AEAD_Poly1305_64.h Hacl_SHA2_512.c Hacl_SHA2_512.h Hacl_Ed25519.c Hacl_Ed25519.h Hacl_Curve25519.c Hacl_Curve25519.h Hacl_Chacha20Poly1305.c Hacl_Chacha20Poly1305.h Hacl_Policies.c Hacl_Policies.h NaCl.c NaCl.h
TWEETNACL_HOME ?= $(HACL_HOME)/other_providers/tweetnacl
#
# Library (64 bits)
#
libhacl.so: $(FILES)
$(CC) $(LIBFLAGS) \
Hacl_Salsa20.c -c -o Hacl_Salsa20.o
$(CC) $(LIBFLAGS) \
Hacl_Chacha20.c -c -o Hacl_Chacha20.o
$(CC) $(LIBFLAGS) \
Hacl_Poly1305_64.c -c -o Hacl_Poly1305_64.o
$(CC) $(LIBFLAGS) \
AEAD_Poly1305_64.c -c -o AEAD_Poly1305_64.o
$(CC) $(LIBFLAGS) \
Hacl_SHA2_512.c -c -o Hacl_SHA2_512.o
$(CC) $(LIBFLAGS) \
Hacl_Ed25519.c -c -o Hacl_Ed25519.o
$(CC) $(LIBFLAGS) \
Hacl_Curve25519.c -c -o Hacl_Curve25519.o
$(CC) $(LIBFLAGS) \
Hacl_Chacha20Poly1305.c -c -o Hacl_Chacha20Poly1305.o
$(CC) $(OTHER) $(LIBFLAGS) -I . -Wall \
Hacl_Salsa20.o Hacl_Poly1305_64.o Hacl_Chacha20.o AEAD_Poly1305_64.o Hacl_Chacha20Poly1305.o Hacl_SHA2_512.o Hacl_Ed25519.o Hacl_Curve25519.o kremlib.c Hacl_Policies.c NaCl.c \
-o libhacl.so
#
# Library (64 bits), static
#
libhacl.a: $(FILES)
$(CC) $(LIBFLAGS) \
Hacl_Salsa20.c -c -o Hacl_Salsa20.o
$(CC) $(LIBFLAGS) \
Hacl_Chacha20.c -c -o Hacl_Chacha20.o
$(CC) $(LIBFLAGS) \
Hacl_Poly1305_64.c -c -o Hacl_Poly1305_64.o
$(CC) $(LIBFLAGS) \
AEAD_Poly1305_64.c -c -o AEAD_Poly1305_64.o
$(CC) $(LIBFLAGS) \
Hacl_SHA2_512.c -c -o Hacl_SHA2_512.o
$(CC) $(LIBFLAGS) \
Hacl_Ed25519.c -c -o Hacl_Ed25519.o
$(CC) $(LIBFLAGS) \
Hacl_Curve25519.c -c -o Hacl_Curve25519.o
$(CC) $(LIBFLAGS) \
Hacl_Chacha20Poly1305.c -c -o Hacl_Chacha20Poly1305.o
$(CC) $(OTHER) $(LIBFLAGS) -I . -Wall \
Hacl_Salsa20.o Hacl_Poly1305_64.o Hacl_Chacha20.o AEAD_Poly1305_64.o Hacl_Chacha20Poly1305.o Hacl_SHA2_512.o Hacl_Ed25519.o Hacl_Curve25519.o kremlib.c Hacl_Policies.c NaCl.c \
-o libhacl.a
#
# Library (32 bits)
#
libhacl32.so: $(FILES)
$(CC) $(LIBFLAGS32) \
FStar.c -c -o FStar.o
$(CC) $(LIBFLAGS32) \
Hacl_Salsa20.c -c -o Hacl_Salsa20.o
$(CC) $(LIBFLAGS32) \
Hacl_Chacha20.c -c -o Hacl_Chacha20.o
$(CC) $(LIBFLAGS32) \
Hacl_Poly1305_64.c -c -o Hacl_Poly1305_64.o
$(CC) $(LIBFLAGS32) \
AEAD_Poly1305_64.c -c -o AEAD_Poly1305_64.o
$(CC) $(LIBFLAGS32) \
Hacl_SHA2_512.c -c -o Hacl_SHA2_512.o
$(CC) $(LIBFLAGS32) \
Hacl_Ed25519.c -c -o Hacl_Ed25519.o
$(CC) $(LIBFLAGS32) \
Hacl_Curve25519.c -c -o Hacl_Curve25519.o
$(CC) $(LIBFLAGS32) \
Hacl_Chacha20Poly1305.c -c -o Hacl_Chacha20Poly1305.o
$(CC) -shared $(LIBFLAGS32) -I . -Wall \
hacl_test_utils.c \
FStar.o Hacl_Salsa20.o Hacl_Poly1305_64.o Hacl_Chacha20.o AEAD_Poly1305_64.o Hacl_Chacha20Poly1305.o Hacl_SHA2_512.o Hacl_Ed25519.o Hacl_Curve25519.o kremlib.c Hacl_Policies.c NaCl.c \
-o libhacl32.so
#
# Library (32 bits), static
#
libhacl32.a: $(FILES)
$(CC) $(LIBFLAGS32) \
FStar.c -c -o FStar.o
$(CC) $(LIBFLAGS32) \
Hacl_Salsa20.c -c -o Hacl_Salsa20.o
$(CC) $(LIBFLAGS32) \
Hacl_Chacha20.c -c -o Hacl_Chacha20.o
$(CC) $(LIBFLAGS32) \
Hacl_Poly1305_64.c -c -o Hacl_Poly1305_64.o
$(CC) $(LIBFLAGS32) \
AEAD_Poly1305_64.c -c -o AEAD_Poly1305_64.o
$(CC) $(LIBFLAGS32) \
Hacl_SHA2_512.c -c -o Hacl_SHA2_512.o
$(CC) $(LIBFLAGS32) \
Hacl_Ed25519.c -c -o Hacl_Ed25519.o
$(CC) $(LIBFLAGS32) \
Hacl_Curve25519.c -c -o Hacl_Curve25519.o
$(CC) $(LIBFLAGS32) \
Hacl_Chacha20Poly1305.c -c -o Hacl_Chacha20Poly1305.o
$(CC) -shared $(LIBFLAGS32) -I . -Wall \
hacl_test_utils.c \
FStar.o Hacl_Salsa20.o Hacl_Poly1305_64.o Hacl_Chacha20.o AEAD_Poly1305_64.o Hacl_Chacha20Poly1305.o Hacl_SHA2_512.o Hacl_Ed25519.o Hacl_Curve25519.o kremlib.c Hacl_Policies.c NaCl.c \
-o libhacl32.a
unit-tests: libhacl.so
$(CC) $(CCOPTS) \
-I . -I ../snapshots/kremlib -I -I $(TWEETNACL_HOME) \
$(TWEETNACL_HOME)/tweetnacl.c hacl_test_utils.c \
unit_tests.c libhacl.so -o unit_tests.exe
LD_LIBRARY_PATH=. DYLD_LIBRARY_PATH=. ./unit_tests.exe
unit-tests32: libhacl32.so
$(CC) $(CCOPTS32) \
-I . -I ../snapshots/kremlib -I -I $(TWEETNACL_HOME) \
$(TWEETNACL_HOME)/tweetnacl.c hacl_test_utils.c \
unit_tests.c libhacl32.so -o unit_tests32.exe
LD_LIBRARY_PATH=. DYLD_LIBRARY_PATH=. ./unit_tests32.exe
clean:
rm -rf *~ *.exe *.out *.o *.so *.a