-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
71 lines (51 loc) · 1.43 KB
/
Makefile
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
CXX = g++
CXXFLAGS = -std=c++11 -W -Wall
ECHO = echo
BIN_CLI = ips-patcher-cli
BIN_GUI = ips-patcher
BUILD_DIR = build
OUTDIR = $(BUILD_DIR)
DEBUG ?= 0
ifeq ($(DEBUG), 1)
OUTDIR := $(OUTDIR)/Debug
CXXFLAGS += -g -DDEBUG
else
OUTDIR := $(OUTDIR)/Release
CXXFLAGS += -O2
endif
OBJDIR = $(OUTDIR)/obj
LIBS = -lm
SRC := src/log.cpp src/ips.cpp src/io.cpp src/utils.cpp
OBJS := $(SRC:.cpp=.o)
OBJ_BASE := $(addprefix $(OBJDIR)/, $(OBJS))
SRC_CLI := src/cli.cpp
OBJS_CLI := $(SRC_CLI:.cpp=.o)
OBJ_CLI := $(addprefix $(OBJDIR)/, $(OBJS_CLI))
EXE_CLI := $(OUTDIR)/$(BIN_CLI)
LIBS_GUI = `pkg-config --libs gtk+-3.0`
CXXFLAGS_GUI = `pkg-config --cflags gtk+-3.0`
SRC_GUI := src/gui.cpp
OBJS_GUI := $(SRC_GUI:.cpp=.o)
OBJ_GUI := $(addprefix $(OBJDIR)/, $(OBJS_GUI))
EXE_GUI := $(OUTDIR)/$(BIN_GUI)
all: $(EXE_CLI) $(EXE_GUI)
$(EXE_CLI): $(OBJ_BASE) $(OBJ_CLI)
@$(ECHO) " LD $@"
@$(CXX) $(CXXFLAGS) -o $(EXE_CLI) $^ $(LIBS)
$(EXE_GUI): $(OBJ_BASE) $(OBJ_GUI)
@$(ECHO) " LD $@"
@$(CXX) $(CXXFLAGS) $(CXXFLAGS_GUI) -o $(EXE_GUI) $^ $(LIBS) $(LIBS_GUI)
$(OBJDIR)/%.o: %.cpp
@$(ECHO) " C++ $<"
@$(shell mkdir -p `dirname $@`)
@$(CXX) $(CXXFLAGS) $(CXXFLAGS_GUI) -c -o $@ $<
$(OBJ_BASE): | $(OBJDIR) $(OUTDIR)
$(OBJ_CLI): | $(OBJDIR) $(OUTDIR)
$(OBJ_GUI): | $(OBJDIR) $(OUTDIR)
$(OUTDIR):
@mkdir -p $(OUTDIR)
$(OBJDIR):
@mkdir -p $(OBJDIR)
clean:
@$(ECHO) " CLEAN obj"
@find $(BUILD_DIR) -name "*.o" -exec rm -f {} \;