366 lines
8.9 KiB
Makefile
366 lines
8.9 KiB
Makefile
# Source version
|
|
ifndef OWLPS_VERSION
|
|
OWLPS_VERSION := $(shell git describe 2>/dev/null || echo 'UNKNOWN_VERSION')
|
|
endif
|
|
|
|
# Directories & files
|
|
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 -f
|
|
RM_RECURSIVE = \rm -fr
|
|
CP = cp
|
|
MKDIR = mkdir -p
|
|
|
|
# Other tools
|
|
STYLE = astyle --style=gnu --formatted
|
|
CPPCHECK = cppcheck --quiet --enable=all
|
|
DOXYGEN = OWLPS_VERSION=$(OWLPS_VERSION) doxygen >/dev/null
|
|
|
|
# Compilation tools
|
|
COLORGCC := $(shell which colorgcc >/dev/null 2>&1 ; echo $$?)
|
|
ifeq ($(COLORGCC), 0)
|
|
CXX = colorgcc
|
|
endif
|
|
|
|
# Flags
|
|
LIBOWLPS_DIR = ../libowlps
|
|
#DEBUG = -g
|
|
TESTSGXXFLAGS = -I$(TESTS_DIR) -I$(SRC_DIR) -I.
|
|
GXXFLAGS = $(DEBUG) -Wall -Wextra -I$(LIBOWLPS_DIR)
|
|
LD = $(CXX)
|
|
LDFLAGS = -lstdc++ -lm -lrt -lboost_program_options \
|
|
-L$(LIBOWLPS_DIR) -lowlps
|
|
OWLPSFLAGS = -D OWLPS_VERSION=\"$(OWLPS_VERSION)\"
|
|
|
|
# Targets
|
|
.PHONY : all test doc clean purge install uninstall style check
|
|
|
|
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 \
|
|
resultlist.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 \
|
|
outputudpsocket.o \
|
|
positioning.o \
|
|
input.o \
|
|
inputcsv.o \
|
|
inputudpsocket.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: $(TARGET)
|
|
|
|
# Generic targets
|
|
$(TESTS_DIR)/%.o: $(TESTS_DIR)/%.cc $(TESTS_DIR)/%.hh
|
|
$(CXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc $(SRC_DIR)/%.hh
|
|
$(MKDIR) $(OBJ_DIR) && $(CXX) $(GXXFLAGS) $(OWLPSFLAGS) -o $@ -c $<
|
|
|
|
%: $(OBJ_DIR)/%.o
|
|
$(LD) $(LDFLAGS) -o $@ $^
|
|
|
|
# Dependencies
|
|
$(OBJ_DIR)/point3d.o: \
|
|
$(OBJ_DIR)/posexcept.o
|
|
$(OBJ_DIR)/posutil.o: \
|
|
$(OBJ_DIR)/stock.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)/result.o: \
|
|
$(OBJ_DIR)/request.o
|
|
$(OBJ_DIR)/resultlist.o: \
|
|
$(OBJ_DIR)/result.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)/inputudpsocket.o: \
|
|
$(OBJ_DIR)/inputmedium.o \
|
|
$(OBJ_DIR)/posexcept.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)/inputudpsocket.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)/resultlist.o \
|
|
$(OBJ_DIR)/result.o
|
|
$(OBJ_DIR)/outputcsv.o: \
|
|
$(SRC_DIR)/outputmedium.hh \
|
|
$(OBJ_DIR)/textfilewriter.o \
|
|
$(OBJ_DIR)/resultlist.o \
|
|
$(OBJ_DIR)/result.o
|
|
$(OBJ_DIR)/outputudpsocket.o: \
|
|
$(SRC_DIR)/outputmedium.hh \
|
|
$(OBJ_DIR)/result.o
|
|
$(OBJ_DIR)/outputcsv.o: \
|
|
$(SRC_DIR)/outputmedium.hh \
|
|
$(OBJ_DIR)/result.o
|
|
$(OBJ_DIR)/output.o: \
|
|
$(OBJ_DIR)/outputterminal.o \
|
|
$(OBJ_DIR)/outputcsv.o \
|
|
$(OBJ_DIR)/outputudpsocket.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)/configuration.o \
|
|
$(OBJ_DIR)/posexcept.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)/resultlist.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)
|
|
$(CXX) $(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)
|
|
$(CXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
|
|
|
$(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS) $(OBJ) $(OBJ_NOTEST)
|
|
$(LD) $(LDFLAGS) -o $@ $^
|
|
|
|
test: $(TESTS_TARGET)
|
|
@$(TESTS_TARGET)
|
|
|
|
doc:
|
|
@$(DOXYGEN) $(DOXYFILE)
|
|
|
|
clean:
|
|
@$(RM) *~ */*~ *.orig */*.orig
|
|
@$(RM_RECURSIVE) $(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
|
|
|
|
help:
|
|
@echo "Needed libraries:"
|
|
@echo " libboost-dev"
|
|
@echo " libboost-program-options-dev"
|
|
@echo
|
|
@echo "Optional programs nedded for specific targets:"
|
|
@echo " doxygen"
|
|
@echo " CxxTest suite"
|
|
@echo " astyle (Artistic Style)"
|
|
@echo " cppcheck"
|
|
@echo
|
|
@echo "Targets:"
|
|
@echo " all (default target): Compiles OwlPS Positioning."
|
|
@echo " doc: Generates documentation from source files (doxygen \
|
|
is required)."
|
|
@echo " install: Installs OwlPS Positioning."
|
|
@echo " uninstall: Uninstalls OwlPS Positioning."
|
|
@echo ""
|
|
@echo " test: Run unit tests (CxxTest suite is required)."
|
|
@echo " style: Reindent source files (astyle is required)."
|
|
@echo " check: Run automated checs on the source code (cppcheck \
|
|
is required)."
|
|
@echo
|
|
@echo " clean: Delete temporary files."
|
|
@echo " purge: Delete all generated files."
|
|
@echo
|
|
@echo "Note: Files are installed under /usr/local. Tune the PREFIX \
|
|
variable in the Makefile to change that."
|