This repository has been archived by the owner on May 1, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
82 lines (61 loc) · 2.09 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
.PHONY= doc clean
CC=g++
OPTIONS= -g -std=c++11
DEBUG= #-D DEBUG
LIBDIR=lib
INCLUDEDIR=include
TESTDIR=tests
SDL2FLAGS=$(shell pkg-config sdl2 --cflags --libs)
UNAME=$(shell uname)
#_OBJ= cpu.o
#OBJ = $(patsubst %,$(LIBDIR)/%,$(_OBJ))
#__OBJ = $(wildcard $(LIBDIR)/*.cpp)
#_OBJ = $(patsubst $(LIBDIR)/%.cpp,%.o,$(__OBJ))
#OBJ = $(patsubst %,$(LIBDIR)/%,$(_OBJ))
_OBJ = $(wildcard $(LIBDIR)/*.cpp)
OBJ = $(patsubst $(LIBDIR)/%.cpp,$(LIBDIR)/%.o,$(_OBJ))
_TESTS = $(wildcard $(TESTDIR)/*.cpp)
TESTS = $(patsubst $(TESTDIR)/%.cpp,$(TESTDIR)/%.o,$(_TESTS))
TESTSLIN = $(patsubst $(TESTDIR)/%.cpp,$(TESTDIR)/%,$(_TESTS))
TESTSEXE = $(patsubst $(TESTDIR)/%.cpp,$(TESTDIR)/%.exe,$(_TESTS))
# Variables for "make cleanw"
OBJW = $(subst /,\,$(OBJ))
TESTSW = $(subst /,\,$(TESTS))
TESTSEXEW = $(subst /,\,$(TESTSEXE))
ifeq ($(UNAME), Linux)
EXT=
TESTSCOMP=$(TESTSLIN)
else
EXT=.exe
TESTSCOMP=$(TESTSEXE)
endif
$(info [INFO] $$UNAME is [${UNAME}])
$(info [INFO] $$EXT is [${EXT}])
$(info [INFO] $$_OBJ is [${_OBJ}])
$(info [INFO] $$OBJ is [${OBJ}])
$(info [INFO] $$_TESTS is [${_TESTS}])
$(info [INFO] $$TESTS is [${TESTS}])
$(info [INFO] $$TESTSLIN is [${TESTSLIN}])
$(info [INFO] $$TESTSEXE is [${TESTSEXE}])
$(info [INFO] $$TESTSCOMP is [${TESTSCOMP}])
MAIN = chip8
$(info --------------------------------)
all: $(OBJ) $(TESTS) $(TESTSCOMP) $(MAIN)$(EXT)
$(MAIN)$(EXT): src/$(MAIN).cpp $(OBJ)
$(info Building main)
$(CC) $(OPTIONS) $(DEBUG) $(SDL2FLAGS) -I$(INCLUDEDIR) src/$(MAIN).cpp $(OBJ) -o $(MAIN)
$(TESTDIR)/%.o : $(TESTDIR)/%.cpp $(INCLUDEDIR)/*.h $(OBJ)
$(info Building object test files)
$(CC) $(OPTIONS) $(DEBUG) -c -I$(INCLUDEDIR) -o $@ $<
$(TESTDIR)/%$(EXT) : $(TESTDIR)/%.o $(INCLUDEDIR)/*.h
$(info Compiling test files)
$(CC) $(OPTIONS) $(DEBUG) -I$(INCLUDEDIR) $< $(OBJ) -o $@
$(LIBDIR)/%.o : $(LIBDIR)/%.cpp $(INCLUDEDIR)/%.h
$(info Building object lib files)
$(CC) $(OPTIONS) $(DEBUG) -c -I$(INCLUDEDIR) -o $@ $<
clean:
$(info Use "cleanw" for windows and "cleanl" for linux.)
cleanw:
erase /F /Q $(MAIN).exe $(OBJW) $(TESTSW) $(TESTSEXEW)
cleanl:
rm -f $(MAIN) $(OBJ) $(TESTS) $(TESTSLIN)