-
Notifications
You must be signed in to change notification settings - Fork 0
/
makefile
74 lines (56 loc) · 1.9 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
72
73
74
# Windows-specific
SHELL=cmd
RM=del
CC=gcc
CXX=g++
MACROS=-D UNICODE -D _UNICODE
CDEFFLAGS=$(MACROS) -std=c99 -Wall -Wextra -Wpedantic -Wconversion -Wdouble-promotion -Wstrict-prototypes
CXXDEFFLAGS=$(MACROS) -std=c++11 -Wall -Wextra -Wpedantic -Wconversion -Wdouble-promotion
DebFlags=-g -O0 -D _DEBUG
RelFlags=-O3 -Wl,--strip-all,--build-id=none,--gc-sections -D NDEBUG -mwindows
LIB=-municode -lgdi32 -lcomctl32 -lwindowscodecs -lole32
BIN=bin
SRC=src
OBJ=obj
TARGET=BrownNoise
SRCFILES=$(wildcard $(SRC)/*.c)
SRCFILES+=$(wildcard $(SRC)/*.cpp)
RSCFILES=$(wildcard $(SRC)/*.rc)
RELOBJFILES=$(SRCFILES:%.cpp=%.cpp.o)
RELOBJFILES:=$(RELOBJFILES:%.c=%.c.o)
RELOBJFILES+=$(RSCFILES:%.rc=%.rc.o)
RELOBJFILES:=$(RELOBJFILES:$(SRC)/%=$(OBJ)/%)
DEBOBJFILES=$(SRCFILES:%.c=%.c.d.o)
DEBOBJFILES:=$(DEBOBJFILES:%.cpp=%.cpp.d.o)
DEBOBJFILES+=$(RSCFILES:%.rc=%.rc.d.o)
DEBOBJFILES:=$(DEBOBJFILES:$(SRC)/%=$(OBJ)/%)
default: debug
.PHONY: rel deb release debug release_files debug_files clean
rel: release
deb: debug
release: $(BIN) release_files
debug: $(BIN) debug_files
release_files: $(RELOBJFILES)
$(CXX) $^ -o $(BIN)/$(TARGET).exe $(CXXDEFFLAGS) $(RelFlags) $(LIB)
debug_files: $(DEBOBJFILES)
$(CXX) $^ -o $(BIN)/deb$(TARGET).exe $(CXXDEFFLAGS) $(DebFlags) $(LIB)
$(OBJ)/%.rc.o: $(SRC)/%.rc $(OBJ)
windres -i $< -o $@ $(MACROS) -D FILE_NAME='\"$(TARGET).exe\"'
$(OBJ)/%.rc.d.o: $(SRC)/%.rc $(OBJ)
windres -i $< -o $@ $(MACROS) -D FILE_NAME='\"deb$(TARGET).exe\"'
$(OBJ)/%.c.o: $(SRC)/%.c $(OBJ)
$(CC) -c $< -o $@ $(CDEFFLAGS) $(RelFlags)
$(OBJ)/%.c.d.o: $(SRC)/%.c $(OBJ)
$(CC) -c $< -o $@ $(CDEFFLAGS) $(DebFlags)
$(OBJ)/%.cpp.o: $(SRC)/%.cpp $(OBJ)
$(CXX) -c $< -o $@ $(CXXDEFFLAGS) $(RelFlags)
$(OBJ)/%.cpp.d.o: $(SRC)/%.cpp $(OBJ)
$(CXX) -c $< -o $@ $(CXXDEFFLAGS) $(DebFlags)
$(OBJ):
mkdir $(OBJ)
$(BIN):
mkdir $(BIN)
clean:
$(RM) /F $(OBJ) /Q
$(RM) .\\$(BIN)\\$(TARGET).exe
$(RM) .\\$(BIN)\\deb$(TARGET).exe