Makefile.core 4.63 KB
Newer Older
Gerard Ryan's avatar
Gerard Ryan committed
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
#
#Copyright (c) 2015, New Jersey Institute of Technology (NJIT)
#All rights reserved.
#Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
#met:
#1. Redistributions of source code must retain the above copyright
#notice, this list of conditions and the following disclaimer.
#2. Redistributions in binary form must reproduce the above copyright
#notice, this list of conditions and the following disclaimer in the
#documentation and/or other materials provided with the distribution.
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
#IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
#TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
#PARTICULAR PURPOSE ARE DISCLAIMED.
#IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
#ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
#DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
#OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
#HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
#STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
#IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#POSSIBILITY OF SUCH DAMAGE.
#


################
# Makefile.core builds the core components of the PALISADE library
# Includes unit tests and demos
################

CORESRCDIR := src/core
Gerard Ryan's avatar
Gerard Ryan committed
33
COREBINDIR := $(BINDIR)/build/core
Gerard Ryan's avatar
Gerard Ryan committed
34 35 36
CORETESTDIR := src/core/unittest
COREDEMODIR := src/core/demo

Gerard Ryan's avatar
Gerard Ryan committed
37
CORESOURCES := $(shell find $(CORESRCDIR)/lib -name '*.cpp' ! -name '*-public.cpp') 
Gerard Ryan's avatar
Gerard Ryan committed
38 39 40 41 42 43 44
COREUNITSOURCES := $(wildcard $(CORESRCDIR)/unittest/*.cpp)
COREDEMOSOURCES := $(wildcard $(CORESRCDIR)/demo/*.cpp)

COREOBJECTS := $(patsubst $(CORESRCDIR)/%,$(COREBINDIR)/%,$(patsubst %.cpp,%.o,$(CORESOURCES)))
COREUNITOBJECTS := $(patsubst $(CORESRCDIR)/%,$(COREBINDIR)/%,$(patsubst %.cpp,%.o,$(COREUNITSOURCES)))
COREDEMOOBJECTS := $(patsubst $(CORESRCDIR)/%,$(COREBINDIR)/%,$(patsubst %.cpp,%.o,$(COREDEMOSOURCES)))

Gerard Ryan's avatar
Gerard Ryan committed
45
CORE_TEST_TARGET := $(EXTTESTDIR)/core/tests$(EXESUFFIX)
Gerard Ryan's avatar
Gerard Ryan committed
46 47 48 49 50

-include $(COREOBJECTS:.o=.d)
-include $(COREUNITOBJECTS:.o=.d)
-include $(COREDEMOOBJECTS:.o=.d)

Gerard Ryan's avatar
Gerard Ryan committed
51
.PHONY: allcore
Gerard Ryan's avatar
Gerard Ryan committed
52
allcore: $(EXTLIBDIR)/$(PALISADECORELIB) $(CORE_TEST_TARGET) allcoredemos
Gerard Ryan's avatar
Gerard Ryan committed
53

Gerard Ryan's avatar
Gerard Ryan committed
54
.PHONY: allcoredemos
Gerard Ryan's avatar
Gerard Ryan committed
55
allcoredemos: $(EXTLIBDIR)/$(PALISADECORELIB) $(patsubst $(COREBINDIR)/demo/%,$(BINDIR)/demo/core/%,$(patsubst %.o,%$(EXESUFFIX),$(COREDEMOOBJECTS)))
Gerard Ryan's avatar
Gerard Ryan committed
56

Gerard Ryan's avatar
Gerard Ryan committed
57
$(BINDIR)/demo/core/%$(EXESUFFIX): $(COREBINDIR)/demo/%.o $(EXTLIBDIR)/$(PALISADECORELIB) $(NTLLIB) $(GMPLIB)
Gerard Ryan's avatar
Gerard Ryan committed
58
	@mkdir -p $(@D)
Gerard Ryan's avatar
Gerard Ryan committed
59
	$(CC) -o $@ $< $(EXTLIB) -lPALISADEcore $(NTLLIB) $(GMPLIB)
Gerard Ryan's avatar
Gerard Ryan committed
60 61

#this builds the palisade library out of the objects 
Gerard Ryan's avatar
Gerard Ryan committed
62
$(EXTLIBDIR)/$(PALISADECORELIB): $(COREOBJECTS) $(NTLLIB) $(GMPLIB)
Gerard Ryan's avatar
Gerard Ryan committed
63
	@echo " -- core:linking $@ from COREOBJECTS"
Gerard Ryan's avatar
Gerard Ryan committed
64 65 66 67 68 69
	@mkdir -p $(EXTLIBDIR)
ifdef COVERAGE
	$(LIBCMD) $@ $(COREOBJECTS) 
else
	$(LIBCMD) $@ $(COREOBJECTS) $(NTLLIB) $(GMPLIB)
endif
Gerard Ryan's avatar
Gerard Ryan committed
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

### #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: 
Gerard Ryan's avatar
Gerard Ryan committed
88
	$(RM) -fr $(COREBINDIR) $(EXTLIBDIR)/$(PALISADECORELIB) `dirname $(CORE_TEST_TARGET)` $(BINDIR)/demo/core
Gerard Ryan's avatar
Gerard Ryan committed
89 90

# this links test executable  from objects in the test build directory
Gerard Ryan's avatar
Gerard Ryan committed
91 92 93
$(CORE_TEST_TARGET): $(UNITTESTMAINOBJ) $(COREUNITOBJECTS) $(EXTLIBDIR)/$(PALISADECORELIB) $(NTLLIB) $(GMPLIB)
	@mkdir -p `dirname $(CORE_TEST_TARGET)`
	$(CC) -o $(CORE_TEST_TARGET) $(UNITTESTMAINOBJ) $(COREUNITOBJECTS) $(EXTLIB) -lPALISADEcore $(NTLLIB) $(GMPLIB) $(TEST_LIB) 
Gerard Ryan's avatar
Gerard Ryan committed
94 95 96

#used to run tests from make
.PHONY: testcore
Gerard Ryan's avatar
Gerard Ryan committed
97
testcore: $(CORE_TEST_TARGET)
Gerard Ryan's avatar
Gerard Ryan committed
98 99 100
	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(ROOTDIR)/$(THIRDPARTYLIBDIR):$(ROOTDIR)/$(EXTLIBDIR) $(CORE_TEST_TARGET)

.PHONY: installcore
Gerard Ryan's avatar
Gerard Ryan committed
101
installcore:  installdirs
Gerard Ryan's avatar
Gerard Ryan committed
102 103 104 105 106
	install -t $(LIB_DEST) $(EXTLIBDIR)/$(PALISADECORELIB)

.PHONY: uninstallcore
uninstallcore:
	rm $(LIB_DEST)/$(PALISADECORELIB)
Gerard Ryan's avatar
Gerard Ryan committed
107

Gerard Ryan's avatar
Gerard Ryan committed
108
.PHONY: corestrings
Gerard Ryan's avatar
Gerard Ryan committed
109 110 111
corestrings:
	@echo $(CORESOURCES)
	@echo $(COREOBJECTS)