4 LIBS = sdl2 SDL2_image glew
6 PKGFLAGS := $(shell pkg-config --cflags $(LIBS))
7 PKGLIBS := $(shell pkg-config --libs $(LIBS))
10 CPPFLAGS += $(PKGFLAGS)
14 LDXXFLAGS += $(PKGLIBS)
17 RELEASE_FLAGS = -DNDEBUG -O2
20 DEBUG_DIR := build/debug
21 RELEASE_DIR := build/release
22 DIR := $(RELEASE_DIR) $(DEBUG_DIR) build
24 SRC := $(wildcard $(SOURCE_DIR)/*.cpp)
25 RELEASE_OBJ := $(patsubst $(SOURCE_DIR)/%.cpp, $(RELEASE_DIR)/%.o, $(SRC))
26 DEBUG_OBJ := $(patsubst $(SOURCE_DIR)/%.cpp, $(DEBUG_DIR)/%.o, $(SRC))
27 RELEASE_DEP := $(RELEASE_OBJ:.o=.d)
28 DEBUG_DEP := $(DEBUG_OBJ:.o=.d)
30 DEBUG_BIN := blank.debug
31 OBJ := $(RELEASE_OBJ) $(DEBUG_OBJ)
32 DEP := $(RELEASE_DEP) $(DEBUG_DEP)
33 BIN := $(RELEASE_BIN) $(DEBUG_BIN)
37 release: $(RELEASE_BIN)
48 rm -df $(OBJ) $(DEP) $(DIR)
53 .PHONY: all release debug run gdb clean distclean
57 $(RELEASE_BIN): $(RELEASE_OBJ)
59 @$(LDXX) -o $@ $(CXXFLAGS) $(LDXXFLAGS) $(RELEASE_FLAGS) $^
61 $(DEBUG_BIN): $(DEBUG_OBJ)
63 @$(LDXX) -o $@ $(CXXFLAGS) $(LDXXFLAGS) $(DEBUG_FLAGS) $^
65 $(RELEASE_DIR)/%.o: $(SOURCE_DIR)/%.cpp | $(RELEASE_DIR)
67 @$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(RELEASE_FLAGS) -o $@ -MMD -MP -MF"$(@:.o=.d)" -MT"$@" $<
69 $(DEBUG_DIR)/%.o: $(SOURCE_DIR)/%.cpp | $(DEBUG_DIR)
71 @$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(DEBUG_FLAGS) -o $@ -MMD -MP -MF"$(@:.o=.d)" -MT"$@" $<