-
Notifications
You must be signed in to change notification settings - Fork 0
/
MakefileConsoleCommon
59 lines (47 loc) · 1.73 KB
/
MakefileConsoleCommon
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
ifeq ($(PLATFORM),win32)
#CXX = x86_64-w64-mingw32-g++-posix
#CC = x86_64-w64-mingw32-gcc
FINALEXECFILE = $(EXECFILE).exe
PLATFORMLIBFLAGS = $(WIN32_LIBFLAGS) -static-libstdc++ -static-libgcc -lwinmm -lws2_32 -lIphlpapi -static -pthread -lz -lschannel -lcrypt32
else
FINALEXECFILE = $(EXECFILE)
PLATFORMLIBFLAGS = $(LINUX_LIBFLAGS) -lz
endif
FINALLIBFLAGS = $(COMMONLIBFLAGS) $(PLATFORMLIBFLAGS)
LINKOBJ = $(patsubst %,$(OBJDIR)/%,$(_LINKOBJ))
C_LINKOBJ = $(patsubst %,$(OBJDIR)/%,$(_C_LINKOBJ))
ifeq ($(DEBUG),1)#normal debugging
OPTIM = $(USEROPTIM) -g -DDEBUG=1
else ifeq ($(DEBUG),2)#debugging with address sanitizer
OPTIM = $(USEROPTIM) -fsanitize=address -static-libasan -fno-omit-frame-pointer -g3 -DDEBUG=2
else ifeq ($(DEBUG),3)#no debugging, no optimizations
OPTIM = $(USEROPTIM) -s -O0 -DNDEBUG
else#no debugging, with optimizations
OPTIM = $(USEROPTIM) -O3 -DNDEBUG
endif
ifndef CPPVERSION
CPPVERSION = -std=c++11
endif
CPPFLAGS += -Wall $(CPPVERSION)
all_linux: build_deps $(LINKOBJ) $(C_LINKOBJ)
$(CXX) $(CPPFLAGS) $(OPTIM) $(LINKOBJ) $(C_LINKOBJ) -o $(FINALEXECFILE) $(FINALLIBFLAGS)
# Create dependency files for automatic recompilation
$(LINKOBJ:.o=.d):$(OBJDIR)/%.d:$(SRCDIR)/%.cpp
@mkdir -p $(@D)
$(CXX) $(CPPFLAGS) -MM -MF $@ $<
sed -i -e "1s;.*;$(@D)/\0;" $@
echo " $(CXX) $(CPPFLAGS) -c $(OPTIM) $< -o $(@:.d=.o)" >> $@
$(C_LINKOBJ:.o=.d):$(OBJDIR)/%.d:$(SRCDIR)/%.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) -MM -MF $@ $<
sed -i -e "1s;.*;$(@D)/\0;" $@
echo " $(CC) $(CFLAGS) -c $(OPTIM) $< -o $(@:.d=.o)" >> $@
ifneq ($(MAKECMDGOALS),clean)
-include $(LINKOBJ:.o=.d)
-include $(C_LINKOBJ:.o=.d)
endif
# Cleans all temporary files and compilation results.
clean: clean_deps
$(RM) -r $(OBJDIR)
$(RM) $(FINALEXECFILE)
.PHONY: all clean