-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
105 lines (80 loc) · 1.7 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Clean engine Makefile
#
default: all
# Pick one of:
# linux
# macos
# windows
UNAME=$(shell uname)
ifeq ($(UNAME),Darwin)
OS=macos
else ifeq ($(UNAME),Linux)
OS=linux
else ifeq ($(UNAME),FreeBSD)
OS=bsd
else ifeq ($(UNAME),OpenBSD)
OS=bsd
else ifneq (,$(findstring MINGW32_NT,$(UNAME)))
OS=win
else
$(error unknown os $(UNAME))
endif
# Build directory
#
BUILD=build
INCLUDE=src
RM=rm
MAKE=make
ifneq ($(UNAME),FreeBSD)
CXX=g++
else
CXX=c++
endif
CXXFLAGS=-std=c++14
CXXWFLAGS=-Wall -Wextra
ifeq ($(DEBUG),1)
CXXFLAGS+=--debug
endif
# Files to build
#
PROGRAM_NAME=circular_buffer
PROGRAM_OFILES=src/circular_buffer.o
# Libraries to link
#
SDL2_VER=SDL2-2.0.6
ifeq ($(OS),$(filter $(OS),linux macos))
CXXFLAGS+=-Ioutside/$(SDL2_VER)/include # -Loutside/$(SDL2_VER)/build
SDL2_LIB=outside/$(SDL2_VER)/build/libSDL2.la
PROGRAM_OUTSIDE+=$(SDL2_LIB)
PROGRAM_LIBS=-lSDL2 -lSDL2main
endif
ifeq ($(OS),linux)
PROGRAM_LIBS+=-lX11
endif
# Make targets
#
all: $(PROGRAM_NAME)
$(PROGRAM_NAME): clean $(BUILD)/$(PROGRAM_NAME)
$(BUILD)/$(PROGRAM_NAME): $(PROGRAM_OUTSIDE) $(PROGRAM_OFILES)
@echo " BUILD $(BUILD)/$(PROGRAM_NAME)"
@mkdir -p $(BUILD)
@$(CXX) $(CXXFLAGS) -o $(BUILD)/$(PROGRAM_NAME) $(PROGRAM_OFILES) $(PROGRAM_LIBS)
%.o: %.cpp
@echo " CXX $@"
@$(CXX) -c $(CXXWFLAGS) $(CXXFLAGS) -o $@ $<
$(SDL2_LIB):
@echo " CXX $(SDL2_VER)"
cd outside && tar -xzf $(SDL2_VER).tar.gz
cd outside/$(SDL2_VER) && ./configure
$(MAKE) -C outside/$(SDL2_VER)
clean:
$(RM) -f src/*.o build/*
find . -name '*~' -delete
# Misc
#
TAGS=.tags \
.etags
tags: etags
etags:
etags -f .etags $$(find ./src -name '*.cpp' -or -name '*.hpp') || true
.PHONY: clean full-clean etags tags