From cc781f408552fb47753faea3ed12cc06006319c0 Mon Sep 17 00:00:00 2001 From: Kevin <kevin.hoellring@fau.de> Date: Thu, 24 Oct 2019 13:18:14 +0200 Subject: [PATCH] Add Makefile to build binaries --- Makefile | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b1f6b4a --- /dev/null +++ b/Makefile @@ -0,0 +1,89 @@ +# Relevant directories +BUILD_DIR = ./build +TARGET_DIR = ./bin +SOURCE_DIR = ./src +INCLUDE_DIR = ./include +TMP_DIR = ./tmp +INP_DIR = ./inputs +OUT_DIR = ./outputs + +# Build parameters +LDFLAGS= +CFLAGS=-Wall -Werror -I$(INCLUDE_DIR) -I/usr/local/include -fsanitize=address +SAMPLE_CFLAGS=-Wall -I$(INCLUDE_DIR) -I/usr/local/include -fsanitize=address +CPPFLAGS=-std=c++14 +CC=g++ + +CPP_SRC_SAMPLES = $(wildcard $(SOURCE_DIR)/sample_*.cpp) +CPP_OBJ_SAMPLES = $(patsubst $(SOURCE_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(CPP_SRC_SAMPLES)) +BINARIES_SAMPLES = $(patsubst $(SOURCE_DIR)/%.cpp, $(TARGET_DIR)/%, $(CPP_SRC_SAMPLES)) + +CPP_SRC = $(wildcard $(SOURCE_DIR)/task_*.cpp) +CPP_OBJ = $(patsubst $(SOURCE_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(CPP_SRC)) +BINARIES = $(patsubst $(SOURCE_DIR)/%.cpp, $(TARGET_DIR)/%, $(CPP_SRC)) + +.PHONY: all +all: init build_samples build + @echo "done" + +# Generating object files from source +$(CPP_OBJ_SAMPLES): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.cpp + $(CC) -O3 -g -c $< -o $@ $(SAMPLE_CFLAGS) $(CPPFLAGS) + +# Generating object files from source +$(CPP_OBJ): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.cpp + $(CC) -O3 -g -c $< -o $@ $(CFLAGS) $(CPPFLAGS) + +# Dependency creation +$(CPP_DEP): $(BUILD_DIR)/%.d : $(SOURCE_DIR)/%.cpp + $(CC) -MM $< > $@ $(CFLAGS) $(CPPFLAGS) + +.PHONY: init +init: + mkdir -p $(BUILD_DIR) + mkdir -p $(TARGET_DIR) + +.PHONY: init_test +init_test: init + mkdir -p $(TMP_DIR) + +.PHONY: clean +clean: + rm -rf $(BUILD_DIR)/* $(TARGET_DIR)/* + +.PHONY: test +test: init_test test_task1 test_task2 test_task3 test_task4 test_task5 + +build: init $(BINARIES) +build_samples: init $(BINARIES_SAMPLES) + +$(TARGET_DIR)/%: $(BUILD_DIR)/%.o + $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) + + +TASK1_EXE = $(TARGET_DIR)/task_1 +test_task1: build + $(TASK1_EXE) < $(INP_DIR)/task_1_sample.in > $(TMP_DIR)/task_1_sample.out + diff -us $(TMP_DIR)/task_1_sample.out $(OUT_DIR)/task_1_sample.out + +TASK2_EXE = $(TARGET_DIR)/task_2 +test_task2: build + $(TASK2_EXE) < $(INP_DIR)/task_2_sample.in > $(TMP_DIR)/task_2_sample.out + diff -us $(TMP_DIR)/task_2_sample.out $(OUT_DIR)/task_2_sample.out + +TASK3_EXE = $(TARGET_DIR)/task_3 +test_task3: build + $(TASK3_EXE) < $(INP_DIR)/task_3_sample.in > $(TMP_DIR)/task_3_sample.out + diff -us $(TMP_DIR)/task_3_sample.out $(OUT_DIR)/task_3_sample.out + +TASK4_EXE = $(TARGET_DIR)/task_4 +test_task4: build + $(TASK4_EXE) < $(INP_DIR)/task_4_sample.in > $(TMP_DIR)/task_4_sample.out + diff -us $(TMP_DIR)/task_4_sample.out $(OUT_DIR)/task_4_sample.out + +TASK5_EXE = $(TARGET_DIR)/task_5 +test_task5: build + $(TASK5_EXE) < $(INP_DIR)/task_5_sample.in > $(TMP_DIR)/task_5_sample.out + diff -us $(TMP_DIR)/task_5_sample.out $(OUT_DIR)/task_5_sample.out + +.DEFAULT_GOAL:= all -- GitLab