owlps/owlps-positioning/Makefile

297 lines
6.9 KiB
Makefile

.PHONY : all test doc prepare clean purge install uninstall style check
SRC_DIR = src
OBJ_DIR = obj
TESTS_DIR = tests
DOXYGEN_DIR = doc
DOXYFILE = Doxyfile
# Installation directory
PREFIX = /usr/local
INSTALL_DIR = $(PREFIX)/bin
# System tools
RM = rm -fv
RM_RECURSIVE = \rm -fr
RM_RECURSIVE_VERBOSE = rm -frv
CP = cp -v
MKDIR = mkdir -pv
# Other tools
STYLE = astyle --style=gnu --formatted
CPPCHECK = cppcheck --enable=all
DOXYGEN = doxygen >/dev/null
# Compilation tools and flags
GXX = colorgcc
#DEBUG = -g
TESTSGXXFLAGS = -I$(TESTS_DIR) -I$(SRC_DIR) -I.
GXXFLAGS = $(DEBUG) -Wall -Wextra
LD = $(GXX)
LDFLAGS = -lm -lrt -lboost_program_options
# Targets
TARGET = owlps-positioning
OBJ_TARGET = $(OBJ_DIR)/$(TARGET).o
SOURCE_TARGET = $(SRC_DIR)/$(TARGET).cc
OBJ_LIST = \
posutil.o \
stock.o \
timestamp.o \
direction.o \
point3d.o \
referencepoint.o \
waypoint.o \
building.o \
area.o \
wifidevice.o \
accesspoint.o \
mobile.o \
measurement.o \
request.o \
calibrationrequest.o \
result.o \
minmax.o \
interlinknetworks.o \
fbcm.o \
frbhmbasic.o \
radar.o \
realposition.o \
configuration.o \
userinterface.o \
inputdatareader.o \
accesspointsreadercsv.o \
topologyreadercsv.o \
textfilereader.o \
csvfilereader.o \
textfilewriter.o \
output.o \
outputterminal.o \
outputcsv.o \
positioning.o \
input.o \
inputcsv.o \
inputlogcsv.o
OBJ_NOTEST_LIST = \
posexcept.o \
multilaterationalgorithm.o \
cartographyalgorithm.o \
inputmedium.o
INTERFACES_LIST = \
inputlogmedium.hh \
outputmedium.hh \
multilaterationmethod.hh \
positioningalgorithm.hh
OBJ = $(OBJ_LIST:%=$(OBJ_DIR)/%)
OBJ_NOTEST = $(OBJ_NOTEST_LIST:%=$(OBJ_DIR)/%)
INTERFACES = $(INTERFACES_LIST:%=$(SRC_DIR)/%)
SOURCE = \
$(OBJ:$(OBJ_DIR)/%.o=$(SRC_DIR)/%.hh) \
$(OBJ:$(OBJ_DIR)/%.o=$(SRC_DIR)/%.cc) \
$(OBJ_NOTEST:$(OBJ_DIR)/%.o=$(SRC_DIR)/%.hh) \
$(OBJ_NOTEST:$(OBJ_DIR)/%.o=$(SRC_DIR)/%.cc) \
$(INTERFACES)
TESTS_XX = $(TESTS_DIR)/tests.cc
TESTS_OBJ = $(TESTS_DIR)/tests.o
TESTS_TARGET = $(TESTS_DIR)/tests
TESTUTIL_OBJ = $(TESTS_DIR)/testutil.o
TESTSETUP_OBJ = $(TESTS_DIR)/testsetup.o
SOURCE_TESTS = $(OBJ:$(OBJ_DIR)/%.o=$(TESTS_DIR)/%_test.hh)
OBJ_TESTS = $(TESTUTIL_OBJ) $(TESTSETUP_OBJ)
INCLUDES_TESTS = $(TESTS_DIR)/valuetraits.hh
all: prepare $(TARGET)
# Generic targets
$(TESTS_DIR)/%.o: $(TESTS_DIR)/%.cc $(TESTS_DIR)/%.hh
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc $(SRC_DIR)/%.hh
$(GXX) $(GXXFLAGS) -o $@ -c $<
%: $(OBJ_DIR)/%.o
$(LD) $(LDFLAGS) -o $@ $^
# Dependencies
$(OBJ_DIR)/posutil.o: \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/owlps-positioning.o: \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/owlps-positioning.o: \
$(OBJ_DIR)/userinterface.o \
$(OBJ_DIR)/inputdatareader.o \
$(OBJ_DIR)/stock.o \
$(OBJ_DIR)/positioning.o
$(OBJ_DIR)/userinterface.o: \
$(OBJ_DIR)/configuration.o
$(OBJ_DIR)/inputdatareader.o: \
$(OBJ_DIR)/accesspointsreadercsv.o \
$(OBJ_DIR)/topologyreadercsv.o \
$(OBJ_DIR)/configuration.o \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/accesspointsreadercsv.o: \
$(OBJ_DIR)/csvfilereader.o \
$(OBJ_DIR)/accesspoint.o \
$(OBJ_DIR)/stock.o
$(OBJ_DIR)/topologyreadercsv.o: \
$(OBJ_DIR)/csvfilereader.o \
$(OBJ_DIR)/area.o \
$(OBJ_DIR)/waypoint.o \
$(OBJ_DIR)/stock.o
$(OBJ_DIR)/referencepoint.o: \
$(OBJ_DIR)/point3d.o \
$(OBJ_DIR)/measurement.o \
$(OBJ_DIR)/stock.o
$(OBJ_DIR)/waypoint.o: \
$(OBJ_DIR)/point3d.o \
$(OBJ_DIR)/building.o
$(OBJ_DIR)/area.o: \
$(OBJ_DIR)/building.o \
$(OBJ_DIR)/point3d.o
$(OBJ_DIR)/wifidevice.o: \
$(OBJ_DIR)/posutil.o
$(OBJ_DIR)/accesspoint.o: \
$(OBJ_DIR)/wifidevice.o \
$(OBJ_DIR)/posutil.o \
$(OBJ_DIR)/point3d.o
$(OBJ_DIR)/mobile.o: \
$(OBJ_DIR)/wifidevice.o
$(OBJ_DIR)/measurement.o: \
$(OBJ_DIR)/accesspoint.o \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/request.o: \
$(OBJ_DIR)/timestamp.o \
$(OBJ_DIR)/measurement.o
$(OBJ_DIR)/calibrationrequest.o: \
$(OBJ_DIR)/request.o \
$(OBJ_DIR)/referencepoint.o \
$(OBJ_DIR)/direction.o
$(OBJ_DIR)/textfilereader.o: \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/csvfilereader.o: \
$(OBJ_DIR)/textfilereader.o
$(OBJ_DIR)/textfilewriter.o: \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/inputcsv.o: \
$(OBJ_DIR)/inputmedium.o \
$(OBJ_DIR)/csvfilereader.o \
$(OBJ_DIR)/request.o \
$(OBJ_DIR)/calibrationrequest.o \
$(OBJ_DIR)/stock.o
$(OBJ_DIR)/inputlogcsv.o: \
$(SRC_DIR)/inputlogmedium.hh \
$(OBJ_DIR)/request.o
$(OBJ_DIR)/input.o: \
$(OBJ_DIR)/inputcsv.o \
$(OBJ_DIR)/inputlogcsv.o \
$(OBJ_DIR)/calibrationrequest.o \
$(OBJ_DIR)/configuration.o \
$(OBJ_DIR)/posexcept.o \
$(OBJ_DIR)/stock.o
$(OBJ_DIR)/outputterminal.o: \
$(SRC_DIR)/outputmedium.hh \
$(OBJ_DIR)/result.o
$(OBJ_DIR)/outputcsv.o: \
$(SRC_DIR)/outputmedium.hh \
$(OBJ_DIR)/textfilewriter.o \
$(OBJ_DIR)/result.o
$(OBJ_DIR)/output.o: \
$(OBJ_DIR)/outputterminal.o \
$(OBJ_DIR)/configuration.o \
$(OBJ_DIR)/posexcept.o
$(OBJ_DIR)/multilaterationalgorithm.o: \
$(SRC_DIR)/positioningalgorithm.hh \
$(OBJ_DIR)/minmax.o \
$(OBJ_DIR)/mobile.o
$(OBJ_DIR)/cartographyalgorithm.o: \
$(SRC_DIR)/positioningalgorithm.hh \
$(OBJ_DIR)/referencepoint.o
$(OBJ_DIR)/minmax.o: \
$(SRC_DIR)/multilaterationmethod.hh \
$(OBJ_DIR)/point3d.o \
$(OBJ_DIR)/accesspoint.o
$(OBJ_DIR)/interlinknetworks.o: \
$(OBJ_DIR)/multilaterationalgorithm.o
$(OBJ_DIR)/fbcm.o: \
$(OBJ_DIR)/multilaterationalgorithm.o
$(OBJ_DIR)/frbhmbasic.o: \
$(OBJ_DIR)/radar.o \
$(OBJ_DIR)/fbcm.o
$(OBJ_DIR)/radar.o: \
$(OBJ_DIR)/cartographyalgorithm.o
$(OBJ_DIR)/realposition.o: \
$(SRC_DIR)/positioningalgorithm.hh \
$(OBJ_DIR)/result.o \
$(OBJ_DIR)/calibrationrequest.o \
$(OBJ_DIR)/referencepoint.o
$(OBJ_DIR)/positioning.o: \
$(OBJ_DIR)/inputdatareader.o \
$(OBJ_DIR)/input.o \
$(OBJ_DIR)/realposition.o \
$(OBJ_DIR)/fbcm.o \
$(OBJ_DIR)/frbhmbasic.o \
$(OBJ_DIR)/interlinknetworks.o \
$(OBJ_DIR)/radar.o \
$(OBJ_DIR)/output.o \
$(OBJ_DIR)/configuration.o \
$(OBJ_DIR)/posexcept.o
# Specific targets
$(TARGET): $(OBJ) $(OBJ_NOTEST) $(OBJ_TARGET)
$(OBJ_TARGET): $(SOURCE_TARGET)
$(GXX) $(GXXFLAGS) -o $@ -c $<
$(TESTS_XX): $(SOURCE_TESTS) $(OBJ)
$(TESTS_DIR)/cxxtestgen.pl --error-printer \
--include=$(TESTS_DIR)/valuetraits.hh \
--include=$(TESTUTIL_OBJ:.o=.hh) \
-o $@ $(SOURCE_TESTS)
$(TESTS_OBJ): $(TESTS_XX) $(INCLUDES_TESTS)
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
$(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS) $(OBJ) $(OBJ_NOTEST)
$(LD) $(LDFLAGS) -o $@ $^
test: prepare $(TESTS_TARGET)
@$(TESTS_TARGET)
doc:
@$(DOXYGEN) $(DOXYFILE)
prepare:
@$(MKDIR) $(OBJ_DIR)
clean:
@$(RM) *~ */*~ *.orig */*.orig
@$(RM_RECURSIVE_VERBOSE) $(OBJ_DIR)
@$(RM) $(TESTS_XX) $(TESTS_DIR)/*.o
purge: clean
@$(RM) $(TARGET)
@$(RM) $(TESTS_TARGET)
@$(RM_RECURSIVE) $(DOXYGEN_DIR)
install: $(TARGET)
@$(CP) $(TARGET) $(INSTALL_DIR) && \
chmod 755 $(INSTALL_DIR)/$(TARGET) && \
chown root:root $(INSTALL_DIR)/$(TARGET)
uninstall:
@$(RM) $(INSTALL_DIR)/$(TARGET)
style:
@$(STYLE) \
$(SOURCE) \
$(TESTS_DIR)/*.hh \
$(TESTS_DIR)/*.cc
check:
@$(CPPCHECK) \
$(SOURCE) \
$(TARGET).cc