|
1 | 1 | OBLIVCC=$(OBLIVC_PATH)/bin/oblivcc
|
2 | 2 |
|
3 |
| -binDir=bin |
4 |
| -objDir=obj |
5 |
| -srcDir=src |
6 |
| -libDir=lib |
| 3 | +BINDIR=bin |
| 4 | +SRCDIR=src |
| 5 | +LIBDIR=lib |
7 | 6 |
|
8 | 7 | REMOTE_HOST=localhost
|
9 | 8 | BIT_WIDTH_32_P1=0
|
10 | 9 | BIT_WIDTH_32_P2=0
|
11 |
| -CFLAGS=-O3 -g -Werror -I $(srcDir) -I $(OBLIVC_PATH)/src/ext/oblivc -std=c11 -D_POSIX_C_SOURCE=201605L -DBIT_WIDTH_32_P1=$(BIT_WIDTH_32_P1) -DBIT_WIDTH_32_P2=$(BIT_WIDTH_32_P2) |
12 |
| -LFLAGS=-L$(HOME)/lib |
13 |
| -OCFLAGS=$(CFLAGS) -DREMOTE_HOST=$(REMOTE_HOST) |
14 |
| - |
15 |
| -ackLibDir=$(libDir)/absentminded-crypto-kit/build/lib |
16 |
| -ackLib=$(ackLibDir)/liback.a |
17 |
| -ackIncDir=$(libDir)/absentminded-crypto-kit/src/ |
18 |
| -OLFLAGS += -L$(ackLibDir) -lack -lm |
19 |
| -OCFLAGS += -g -DREMOTE_HOST=$(REMOTE_HOST) -O3 -Werror -I$(ackIncDir) |
20 |
| - |
21 |
| -mkpath=mkdir -p $(@D) |
22 |
| -compile=$(mkpath) && $(CC) $(CFLAGS) -c $< -o $@ |
23 |
| -link=$(mkpath) && $(CC) $(LFLAGS) $^ -o $@ |
24 |
| -compile_obliv=$(mkpath) && $(OBLIVCC) $(OCFLAGS) -c $< -o $@ |
25 |
| -link_obliv=$(mkpath) && $(OBLIVCC) $(OLFLAGS) $^ -o $@ |
26 |
| - |
27 |
| -native=$(objDir)/$(1)_c.o |
28 |
| -obliv=$(objDir)/$(1)_o.o |
29 |
| -both=$(call native,$(1)) $(call obliv,$(1)) |
30 |
| - |
31 |
| -all: $(binDir)/test_linear_system $(binDir)/test_fixed $(binDir)/secure_multiplication $(binDir)/main |
32 |
| - |
33 |
| -$(binDir)/main: $(objDir)/main.o $(objDir)/secure_multiplication/node.o $(objDir)/secure_multiplication/config.o $(objDir)/secure_multiplication/phase1.o $(objDir)/secure_multiplication/secure_multiplication.pb-c.o $(call both,linear) $(call both,fixed) $(call native,util) $(call obliv,ldlt) $(call obliv,cholesky) $(call obliv,cgd) $(call native,input) |
34 |
| - $(link_obliv) -lprotobuf-c -lm |
35 | 10 |
|
36 |
| -$(binDir)/secure_multiplication:$(objDir)/secure_multiplication/secure_multiplication.pb-c.o $(objDir)/secure_multiplication/secure_multiplication.o $(objDir)/secure_multiplication/config.o $(objDir)/secure_multiplication/node.o $(objDir)/linear.o $(objDir)/fixed.o $(objDir)/secure_multiplication/phase1.o $(objDir)/util.o |
37 |
| - $(link_obliv) -lprotobuf-c -lm |
| 11 | +SOURCES := $(shell find -L $(SRCDIR) -type f -name '*.c' -not -path '*/cmd/*' ) |
| 12 | +OBJECTS := $(patsubst %.c, %.o, $(SOURCES)) |
| 13 | +SOURCES_OBLIVC := $(shell find -L $(SRCDIR) -type f -name '*.oc') |
| 14 | +OBJECTS_OBLIVC := $(patsubst %.oc, %.oo, $(SOURCES_OBLIVC)) |
| 15 | +SOURCES_BIN := $(shell find -L $(SRCDIR)/cmd -type f -name '*.c') |
| 16 | +OBJECTS_BIN := $(patsubst %.c, %.o, $(SOURCES_BIN)) |
| 17 | +BINARIES = $(patsubst $(SRCDIR)/cmd/%.c, $(BINDIR)/%, $(SOURCES_BIN)) |
38 | 18 |
|
39 |
| -$(binDir)/test_linear_system: $(ackLib) $(call native,test/test_linear_system) $(call both,linear) $(call both,fixed) $(call native,util) $(call obliv,ldlt) $(call obliv,cholesky) $(call obliv,cgd) $(call native,input) |
40 |
| - $(link_obliv) |
41 |
| - |
42 |
| -$(binDir)/test_fixed: $(call both,test/test_fixed) $(call both,fixed) $(call native,util) |
43 |
| - $(link_obliv) |
| 19 | +CFLAGS=-O3 -g -Werror -pthread -I$(SRCDIR) -I$(OBLIVC_PATH)/src/ext/oblivc -std=c11 -D_POSIX_C_SOURCE=201605L -DBIT_WIDTH_32_P1=$(BIT_WIDTH_32_P1) -DBIT_WIDTH_32_P2=$(BIT_WIDTH_32_P2) |
| 20 | +LDFLAGS= -lm -lgcrypt -lprotobuf-c |
| 21 | +OCFLAGS=$(CFLAGS) -DREMOTE_HOST=$(REMOTE_HOST) |
44 | 22 |
|
45 |
| -$(binDir)/test_input: $(call native,input) $(call obliv,test/test_input) $(call native,util) |
46 |
| - $(link_obliv) |
| 23 | +# Absentminded Crypto Kit |
| 24 | +ACKLIBDIR=$(LIBDIR)/absentminded-crypto-kit/build/lib |
| 25 | +ACKLIB=$(ACKLIBDIR)/liback.a |
| 26 | +LDFLAGS += -L$(ACKLIBDIR) -L$(OBLIVC_PATH)/_build -lack -lobliv |
| 27 | +OCFLAGS += -I$(LIBDIR)/absentminded-crypto-kit/src/ -D_Float128=double |
47 | 28 |
|
48 |
| -$(ackLib): $(libDir)/absentminded-crypto-kit/Makefile |
49 |
| - cd $(libDir)/absentminded-crypto-kit && make |
| 29 | +all: $(BINARIES) |
50 | 30 |
|
51 |
| -$(libDir)/absentminded-crypto-kit/Makefile: |
| 31 | +# Libraries |
| 32 | +$(ACKLIB): $(LIBDIR)/absentminded-crypto-kit/Makefile |
| 33 | + CFLAGS=-D_Float128=double make -C $(LIBDIR)/absentminded-crypto-kit |
| 34 | +$(LIBDIR)/absentminded-crypto-kit/Makefile: |
52 | 35 | git submodule update --init
|
53 | 36 |
|
54 |
| -$(objDir)/%_c.o: $(srcDir)/%.c |
55 |
| - $(compile_obliv) |
56 |
| - |
57 |
| -$(objDir)/%_o.o: $(srcDir)/%.oc |
58 |
| - $(compile_obliv) |
59 |
| - |
60 |
| -$(objDir)/%.o: $(srcDir)/%.c |
61 |
| - $(compile) |
62 |
| - |
| 37 | +# Protocol Buffers |
| 38 | +PROTOBUF_PROTOS = $(SRCDIR)/protobuf/secure_multiplication.proto |
| 39 | +PROTOBUF_HEADERS = $(PROTOBUF_PROTOS:.proto=.pb-c.h) |
| 40 | +PROTOBUF_OBJECTS = $(PROTOBUF_HEADERS:.h=.o) |
| 41 | +PROTOBUF_ALL = $(PROTOBUF_PROTOS) $(PROTOBUF_HEADERS) $(PROTOBUF_OBJECTS) $(PROTOBUF_HEADERS:.h=.{c,d}) |
63 | 42 | ifeq ($(BIT_WIDTH_32_P1), 1)
|
64 |
| -$(srcDir)/%.pb-c.c: $(srcDir)/%.proto |
65 |
| - cd $(<D) && protoc-c secure_multiplication_bitwidth_32.proto --c_out=. &&\ |
66 |
| - mv secure_multiplication_bitwidth_32.pb-c.c secure_multiplication.pb-c.c &&\ |
67 |
| - cp secure_multiplication_bitwidth_32.pb-c.h secure_multiplication.pb-c.h |
| 43 | +BIT_WIDTH_P1 = 32 |
68 | 44 | else
|
69 |
| -$(srcDir)/%.pb-c.c: $(srcDir)/%.proto |
70 |
| - cd $(<D) && protoc-c secure_multiplication_bitwidth_64.proto --c_out=. &&\ |
71 |
| - mv secure_multiplication_bitwidth_64.pb-c.c secure_multiplication.pb-c.c &&\ |
72 |
| - cp secure_multiplication_bitwidth_64.pb-c.h secure_multiplication.pb-c.h |
| 45 | +BIT_WIDTH_P1 = 64 |
73 | 46 | endif
|
74 |
| - |
| 47 | +%.proto: %.bitwidth_$(BIT_WIDTH_P1).proto |
| 48 | + cp $< $@ |
| 49 | +%.pb-c.c %.pb-c.h: %.proto |
| 50 | + cd $(@D) && protoc-c $(<F) --c_out=. |
| 51 | + |
| 52 | +# Dependencies |
| 53 | +-include $(SOURCES:.c=.d) |
| 54 | +-include $(SOURCES_BIN:.c=.d) |
| 55 | +-include $(SOURCES_OBLIVC:.oc=.od) |
| 56 | + |
| 57 | +# do not delete intermediate objects |
| 58 | +.SECONDARY: $(OBJECTS) $(OBJECTS_BIN) $(OBJECTS_OBLIVC) $(PROTOBUF_ALL) |
| 59 | + |
| 60 | +# Binaries |
| 61 | +$(BINDIR)/%: $(OBJECTS) $(OBJECTS_OBLIVC) $(SRCDIR)/cmd/%.o $(PROTOBUF_OBJECTS) | $(ACKLIB) |
| 62 | + @mkdir -p $(@D) |
| 63 | + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) |
| 64 | + |
| 65 | +# C sources |
| 66 | +%.o: %.c $(PROTOBUF_HEADERS) |
| 67 | + $(CC) $(CFLAGS) -o $@ -c $< |
| 68 | + $(CC) -MM $(CFLAGS) -MT "$*.o $@" $< > $*.d; |
| 69 | +# Obliv-C Sources |
| 70 | +%.oo : %.oc |
| 71 | + $(OBLIVCC) $(OCFLAGS) -o $@ -c $< |
| 72 | + $(OBLIVCC) -MM $(OCFLAGS) -MT "$*.oo $@" $< > $*.od; |
| 73 | + |
| 74 | +.PHONY: clean cleanall |
75 | 75 | clean:
|
76 |
| - rm -rf $(binDir) $(objDir) |
| 76 | + $(RM) -r $(BINDIR) |
| 77 | + $(RM) $(OBJECTS) $(OBJECTS_BIN) $(OBJECTS_OBLIVC) $(OBJECTS_PROTOBUF) |
| 78 | + $(RM) $(OBJECTS:.o=.d) $(OBJECTS_BIN:.o=.d) $(OBJECTS_OBLIVC:.oo=.od) |
| 79 | + $(RM) $(PROTOBUF_ALL) |
77 | 80 |
|
78 | 81 | cleanall: clean
|
79 |
| - cd $(libDir)/absentminded-crypto-kit && make clean |
| 82 | + cd $(LIBDIR)/absentminded-crypto-kit && make clean |
0 commit comments