]> git.localhorst.tv Git - blank.git/blob - Makefile
separate build directory for intermediates
[blank.git] / Makefile
1 CXX = g++ --std=c++11
2 LDXX = g++
3
4 LIBS = sdl2 SDL2_image glew
5
6 PKGFLAGS := $(shell pkg-config --cflags $(LIBS))
7 PKGLIBS := $(shell pkg-config --libs $(LIBS))
8
9 CPPFLAGS ?=
10 CPPFLAGS += $(PKGFLAGS)
11 CXXFLAGS ?=
12 CXXFLAGS += -Wall
13 LDXXFLAGS ?=
14 LDXXFLAGS += $(PKGLIBS)
15
16 # debug
17 CXXFLAGS += -g3 -O0
18
19 # release
20 #CPPFLAGS += -DNDEBUG
21
22 SOURCE_DIR := src
23 BUILD_DIR := build
24
25 SRC = $(wildcard $(SOURCE_DIR)/*.cpp)
26 OBJ = $(patsubst $(SOURCE_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(SRC))
27 DEP = $(OBJ:.o=.d)
28 BIN = blank
29
30 all: $(BIN)
31
32 clean:
33         rm -df $(OBJ) $(DEP) $(BUILD_DIR)
34
35 distclean: clean
36         rm -f $(BIN)
37
38 .PHONY: all clean distclean
39
40 -include $(DEP)
41
42 $(BIN): $(OBJ)
43         @echo link: $@
44         @$(LDXX) -o $@ $(CXXFLAGS) $(LDXXFLAGS) $^
45
46 $(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.cpp | $(BUILD_DIR)
47         @echo compile: $@
48         @$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ -MMD -MP -MF"$(@:.o=.d)" -MT"$@" $<
49
50 $(BUILD_DIR):
51         mkdir "$@"