-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile.src
69 lines (54 loc) · 2.87 KB
/
Makefile.src
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
# This file is based on the PALISASE Makefile
CORESRCDIR := src
COREBINDIR := src/bin
CORETESTDIR := src/unittest
COREDEMODIR := src/demo
CORESOURCES := $(shell find $(CORESRCDIR)/lib -name '*.cpp' ! -name '*.pb.cpp')
COREUNITSOURCES := $(wildcard $(CORESRCDIR)/unittest/*.cpp)
COREDEMOSOURCES := $(shell find $(CORESRCDIR)/demo -name '*.cpp' ! -name '*.pb.cpp')
COREOBJECTS := $(patsubst $(CORESRCDIR)/%,$(COREBINDIR)/%,$(patsubst %.cpp,%.o,$(CORESOURCES)))
COREUNITOBJECTS := $(patsubst $(CORESRCDIR)/%,$(COREBINDIR)/%,$(patsubst %.cpp,%.o,$(COREUNITSOURCES)))
COREUNITOBJECTS += test/include/gtest/gtest-all.o
COREDEMOOBJECTS := $(patsubst $(CORESRCDIR)/%,$(COREBINDIR)/%,$(patsubst %.cpp,%.o,$(COREDEMOSOURCES)))
TEST_TARGET := $(EXTTESTDIR)/tests$(EXESUFFIX)
-include $(COREOBJECTS:.o=.d)
-include $(COREUNITOBJECTS:.o=.d)
-include $(COREDEMOOBJECTS:.o=.d)
.PHONY:allcore
allcore: $(EXTLIBDIR)/$(CORELIB) allcoredemos
allcoredemos: $(EXTLIBDIR)/$(CORELIB) $(patsubst $(COREBINDIR)/demo/%,bin/demo/%,$(patsubst %.o,%$(EXESUFFIX),$(COREDEMOOBJECTS)))
bin/demo/%$(EXESUFFIX): src/bin/demo/%.o $(EXTLIBDIR)/$(CORELIB)
@mkdir -p $(@D)
$(CC) -o $@ $^ $(EXTLIB) $(BOOST_LD_PATH) $(LDFLAGS) -lgazelle
#this builds the shared library out of the objects
$(EXTLIBDIR)/$(CORELIB): $(COREOBJECTS)
@echo " -- core:linking $@ from COREOBJECTS"
mkdir -p $(EXTLIBDIR)
$(CC) $(LIBCMD) -o $@ $(COREOBJECTS) $(TEST_LIB) -lboost_system -lboost_thread
# $(CC) $(LIBCMD) -o $@ $(COREOBJECTS) $(TEST_LIB) -lcryptoTools -lmiracl -lboost_system -lboost_thread
# $(CC) $(LIBCMD) -o $@ $(COREOBJECTS) $(TEST_LIB) -fsanitize-address -lcryptoTools -lmiracl -lboost_system -lboost_thread
### #this builds the individual objects that make up the library .
.PRECIOUS: $(COREBINDIR)/%
$(COREBINDIR)/%:
@if [ "$(suffix $@)" = ".o" ] ; \
then \
mkdir -p $(@D) ;\
echo $(CC) $(CPPFLAGS) $(INC) -c -o $@ $(patsubst $(COREBINDIR)/%,$(CORESRCDIR)/%,$(patsubst %.o,%.cpp,$@)) ;\
$(CC) -MM $(CPPFLAGS) $(INC) $(patsubst $(COREBINDIR)/%,$(CORESRCDIR)/%,$(patsubst %.o,%.cpp,$@)) > $(patsubst %.o,%.d,$@) ;\
mv -f $(patsubst %.o,%.d,$@) $(patsubst %.o,%.d.tmp,$@) ;\
sed -e 's|.*\.o:|$(COREBINDIR)/$*:|' < $(patsubst %.o,%.d.tmp,$@) > $(patsubst %.o,%.d,$@) ;\
rm -f $(patsubst %.o,%.d.tmp,$@) ; \
$(CC) $(CPPFLAGS) $(INC) -c -o $@ $(patsubst $(COREBINDIR)/%,$(CORESRCDIR)/%,$(patsubst %.o,%.cpp,$@)) ;\
fi
#this target is used to cleanup, it is called from the top Makefile
.PHONY: cleancore
cleancore:
$(RM) -fr $(COREBINDIR) $(EXTLIBDIR)/$(CORELIB) `dirname $(TEST_TARGET)` bin/demo
# this links test executable from objects in the test build directory
$(TEST_TARGET): $(COREUNITOBJECTS) $(EXTLIBDIR)/$(CORELIB)
@mkdir -p `dirname $(TEST_TARGET)`
$(CC) -o $(TEST_TARGET) $^ $(EXTLIB) $(BOOST_LD_PATH) $(LDFLAGS) $(TEST_LIB)
#used to run tests from make
.PHONY: testcore
testcore: $(TEST_TARGET)
$(TEST_TARGET)