129 lines
3.0 KiB
Makefile
129 lines
3.0 KiB
Makefile
.PHONY : all test doc clean purge install uninstall style check
|
|
|
|
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
|
|
CP = cp -v
|
|
|
|
# Other tools
|
|
STYLE = astyle --style=gnu --formatted
|
|
CPPCHECK = cppcheck --enable=all
|
|
DOXYGEN = doxygen
|
|
|
|
# Compilation tools and flags
|
|
GXX = g++-4.4
|
|
#DEBUG = -g
|
|
TESTSGXXFLAGS = -I$(TESTS_DIR) -I.
|
|
GXXFLAGS = $(DEBUG) -Wall -Wextra
|
|
LD = $(GXX)
|
|
LDFLAGS = -lm -lrt -lboost_program_options
|
|
|
|
# Targets
|
|
TARGET = owlps-positioning
|
|
OBJ = posutil.o stock.o timestamp.o point3d.o referencepoint.o \
|
|
waypoint.o building.o area.o wifidevice.o accesspoint.o \
|
|
mobile.o measurement.o request.o calibrationrequest.o \
|
|
configuration.o userinterface.o input.o \
|
|
inputcsv.o inputlogcsv.o
|
|
OBJ_NOTEST = posexcept.o
|
|
INTERFACES = inputmedium.hh inputlogmedium.hh
|
|
|
|
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:%.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
|
|
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
|
|
|
%.o: %.cc %.hh
|
|
$(GXX) $(GXXFLAGS) -c $<
|
|
|
|
%: %.o
|
|
$(LD) $(LDFLAGS) -o $@ $^
|
|
|
|
# Dependencies
|
|
userinterface.o: configuration.o
|
|
referencepoint.o: point3d.o
|
|
waypoint.o: point3d.o building.o
|
|
area.o: building.o point3d.o
|
|
wifidevice.o: posutil.o
|
|
accesspoint.o: wifidevice.o point3d.o
|
|
mobile.o: wifidevice.o
|
|
measurement.o: accesspoint.o
|
|
request.o: timestamp.o measurement.o
|
|
calibrationrequest.o: request.o referencepoint.o
|
|
inputcsv.o: inputmedium.hh request.o stock.o
|
|
inputlogcsv.o: inputlogmedium.hh request.o
|
|
input.o: posexcept.o
|
|
|
|
# Specific targets
|
|
$(TARGET): $(OBJ) $(OBJ_NOTEST)
|
|
|
|
$(TESTS_XX): $(SOURCE_TESTS)
|
|
$(TESTS_DIR)/cxxtestgen.pl --error-printer \
|
|
--include=$(TESTS_DIR)/valuetraits.hh \
|
|
--include=$(TESTUTIL_OBJ:.o=.hh) \
|
|
-o $@ $^
|
|
|
|
$(TESTS_OBJ): $(TESTS_XX) $(OBJ) $(INCLUDES_TESTS)
|
|
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
|
|
|
$(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS)
|
|
$(LD) $(LDFLAGS) -o $@ $^ $(OBJ) $(OBJ_NOTEST)
|
|
|
|
test: $(TESTS_TARGET)
|
|
@$(TESTS_TARGET)
|
|
|
|
doc:
|
|
@$(DOXYGEN) $(DOXYFILE)
|
|
|
|
clean:
|
|
@$(RM) *~ *.o *.gch *.orig
|
|
@$(RM) $(TESTS_XX) $(TESTS_DIR)/*~ $(TESTS_DIR)/*.o \
|
|
$(TESTS_DIR)/*.orig
|
|
|
|
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) \
|
|
$(OBJ:.o=.hh) \
|
|
$(OBJ:.o=.cc) \
|
|
$(OBJ_NOTEST:.o=.hh) \
|
|
$(OBJ_NOTEST:.o=.cc) \
|
|
$(INTERFACES) \
|
|
$(TESTS_DIR)/*.hh \
|
|
$(TESTS_DIR)/*.cc
|
|
|
|
check:
|
|
@$(CPPCHECK) \
|
|
$(OBJ:.o=.hh) $(OBJ:.o=.cc) \
|
|
$(OBJ_NOTEST:.o=.hh) $(OBJ_NOTEST:.o=.cc) \
|
|
$(INTERFACES)
|