## DIR ################################# SRC_DIR = . TST_DIR = $(SRC_DIR)/test CPP_DIR = $(SRC_DIR)/src HPP_DIR = $(SRC_DIR)/include BLD_DIR = build OUT_DIR = $(BLD_DIR)/out LIB_DIR = $(BLD_DIR)/lib OBJ_DIR = $(BLD_DIR)/obj ## PRG ################################# TRSK_MOD = IImage triskeleArrayTreeBase Tree triskeleDebug TreeStats triskeleBase QuadTreeBuilder Option Selected TRSK_OBJ = $(patsubst %, $(OBJ_DIR)/%.o, $(TRSK_MOD)) TRSK_OBJ_XML = $(TRSK_OBJ) $(OBJ_DIR)/XMLTreeBuilder.o APG_PRG = apGenerator APG_SRC = $(patsubst %, $(CPP_DIR)/%.cpp, $(APG_PRG)) APG_OUT = $(patsubst %, $(OUT_DIR)/%, $(APG_PRG)) TST_PRG = TestArrayTreeBuilder TST_SRC = $(patsubst %, $(CPP_DIR)/%.cpp, $(TST_PRG)) TST_OUT = $(patsubst %, $(OUT_DIR)/%, $(TST_PRG)) PRF_PRG = PerfArrayTreeBuilder PRF_SRC = $(patsubst %, $(CPP_DIR)/%.cpp, $(PRF_PRG)) PRF_OUT = $(patsubst %, $(OUT_DIR)/%, $(PRF_PRG)) TTH_MOD = TestDeal TTH_PRG = TestThread TTH_SRC = $(patsubst %, $(TST_DIR)/%.cpp, $(TTH_PRG)) TTH_OBJ = $(patsubst %, $(OBJ_DIR)/%.o, $(TTH_MOD)) TTH_OUT = $(patsubst %, $(OUT_DIR)/%, $(TTH_PRG)) ## FLAGS ############################### # fast and no control DFLAGS = -O2 -DNDEBUG -DNO_OTB -DINTEL_TBB_THREAD -DBOOST_DISABLE_ASSERTS #DFLAGS = -O2 -DNDEBUG -DNO_OTB -DBOOST_DISABLE_ASSERTS # fast but control #DFLAGS = -O2 -DNDEBUG -DNO_OTB -DINTEL_TBB_THREAD # debug multi-threaded #DFLAGS = -g -DENABLE_LOG -DNO_OTB # debug one thread #DFLAGS = -g -DENABLE_LOG -DNO_OTB -DTHREAD_DISABLE -DENABLE_SMART_LOG IFLAGS = $(DFLAGS) -MMD -I$(HPP_DIR) -I/usr/include/gdal LFLAGS = -L$(LIB_DIR) -ltriskele -lstdc++ -lpthread -lboost_system -lboost_chrono -lboost_thread -lboost_program_options -lboost_date_time -lboost_serialization -lboost_filesystem -lboost_unit_test_framework -lgdal -ltbb CC = g++ ## RULES ############################### $(OBJ_DIR)/%.o: $(SRC_DIR)/*/%.cpp $(CC) $< $(IFLAGS) -cpp -c -o $@ $(OBJ_DIR)/%.o: $(SRC_DIR)/*/*/%.cpp $(CC) $< $(IFLAGS) -cpp -c -o $@ $(OUT_DIR)/%: $(SRC_DIR)/*/%.cpp $(CC) $(IFLAGS) $< -L$(LIB_DIR) $(LFLAGS) -cpp -o $@ ## ENTRIES ############################# all: init libtriskele apGenerator test perf test: testA testB testThread testThread: init $(TTH_OUT) $(TTH_OUT) testA: init $(TST_OUT) $(TST_OUT) testB: init $(APG_OUT) $(APG_OUT) data/10m.tif data/result.tif --min-tree --max-tree --tos-tree --alpha-tree -A data/areaThresholds.txt -S data/sdThresholds.txt -M data/moiThresholds.txt # --debug perf: perfA perfA: init $(PRF_OUT) # $(PRF_OUT) MIN 32 20 1000000 $(PRF_OUT) MIN 4 20 100000 init: mkdir -p $(OUT_DIR) $(OBJ_DIR) $(LIB_DIR) clean: find . -type f '(' -name '#*' -o -name '*~' ')' -print -exec rm -f '{}' \; wipe: clean -rm -rf $(OBJ_DIR) -rm -f $(APG_OUT) $(TST_OUT) $(PRF_OUT) $(TTH_OUT) $(LIB_DIR)/libtriskele.a -rm -f $(OUT_DIR)/*.d -rmdir $(OUT_DIR) $(OBJ_DIR) $(LIB_DIR) $(BLD_DIR) libtriskele: $(LIB_DIR)/libtriskele.a $(APG_OUT): $(APG_SRC) $(LIB_DIR)/libtriskele.a $(TST_OUT): $(TST_SRC) $(LIB_DIR)/libtriskele.a $(PRF_OUT): $(PRF_SRC) $(LIB_DIR)/libtriskele.a $(TTH_OUT): $(TTH_SRC) $(TTH_OBJ) $(LIB_DIR)/libtriskele.a $(CC) $(IFLAGS) $< $(TTH_OBJ) -L$(LIB_DIR) $(LFLAGS) -cpp -o $@ apGenerator: init $(APG_OUT) ## DEPENDS ############################# ALL_OUT = $(APG_OUT) ALL_OBJ = $(TRSK_OBJ) DEPENDS = ${ALL_OUT:=.d} ${ALL_OBJ:.o=.d} ${TTH_OBJ:.o=.d} -include ${DEPENDS} $(LIB_DIR)/libtriskele.a: $(ALL_OBJ) ar rcs $@ $^ ########################################