-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMakefile
More file actions
84 lines (59 loc) · 2.34 KB
/
Copy pathMakefile
File metadata and controls
84 lines (59 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
####### Compiler, tools and options
ERROR_CHECKING_POLICY = #-Werror
CC = gcc
CXX = g++-6
DEFINES =
OPTIMIZATIONS = -O2
CFLAGS = -pipe -Wall -W -D_REENTRANT -fPIC -MMD $(OPTIMIZATIONS) $(ERROR_CHECKING_POLICY) $(DEFINES)
CXXFLAGS = -pipe -Wall -W -D_REENTRANT -fPIC -MMD $(OPTIMIZATIONS) $(ERROR_CHECKING_POLICY) -std=c++14 $(DEFINES)
INCPATH = -I./src -I. -I./src/ext/ecolib/src
INSTALL_DIR = cp -f -R
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
LFLAGS =
LIBS = -lpthread
####### Dirs and modules
SRC_DIR = ./example
TARGET = smart_enum
BUILD_DIR = ./build
BIN_DIR = ./bin
UTILITY_DIRS = $(BUILD_DIR) $(BIN_DIR)
TEST_SRC_DIR = ./test
TEST_TARGET = test_smart_enum
####### Output
CPP_FILES = $(wildcard $(SRC_DIR)/*.cpp) $(wildcard $(SRC_DIR)/*/*.cpp)
C_FILES = $(wildcard $(SRC_DIR)/*.c) $(wildcard $(SRC_DIR)/*/*.c)
TEST_CPP_FILES = $(wildcard $(TEST_SRC_DIR)/*.cpp) $(wildcard $(TEST_SRC_DIR)/*/*.cpp)
OBJCPP_FILES = $(addprefix $(BUILD_DIR)/,$(notdir $(CPP_FILES:.cpp=.cpp.o)))
TEST_OBJCPP_FILES = $(addprefix $(BUILD_DIR)/,$(notdir $(TEST_CPP_FILES:.cpp=.cpp.o)))
OBJC_FILES = $(addprefix $(BUILD_DIR)/,$(notdir $(C_FILES:.c=.c.o)))
VPATH = $(sort $(dir $(CPP_FILES) $(C_FILES) $(TEST_CPP_FILES))) # get dir-names of all src files (sort to remove duplicates)
####### Actions
.PHONY: clean checkdirs test
all: CXXFLAGS += -g #(temporary) for development purposes
all: $(BIN_DIR)/$(TARGET)
debug: CXXFLAGS += -g -DDEBUG
debug: $(TARGET)
test: $(BIN_DIR)/$(TEST_TARGET)
test: CXXFLAGS += -g -DDEBUG
#test: INCPATH += -I../../src
#test: INCPATH += -I./src
$(BIN_DIR)/$(TARGET): $(OBJCPP_FILES) $(OBJC_FILES)
$(CXX) $(LFLAGS) -o $@ $^ $(LIBS)
$(BIN_DIR)/$(TEST_TARGET): $(filter-out $(BUILD_DIR)/main.cpp.o,$(OBJCPP_FILES)) $(OBJC_FILES) $(TEST_OBJCPP_FILES)
$(CXX) $(LFLAGS) -o $@ $^ $(LIBS)
$(BUILD_DIR)/%.cpp.o: %.cpp
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $@ $<
$(BUILD_DIR)/%.c.o: %.c
$(CC) $(CXXFLAGS) $(INCPATH) -c -o $@ $<
clean:
@rm -rf $(BUILD_DIR)/*.o
@rm -rf $(BUILD_DIR)/*.d
@rm -rf $(BIN_DIR)/*
-include $(OBJCPP_FILES:.o=.d)
-include $(OBJC_FILES:.o=.d)
-include $(TEST_OBJCPP_FILES:.o=.d)