summaryrefslogtreecommitdiff
path: root/Makefile
blob: 703ab3b60657ecef48553b7f75230b7a02120af1 (plain) (blame)
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
include Makefile.cfg

PROJECT=POCKET

INCLUDE_FOLDERS=  gamebuino arduino
LIBS=-L../lib   -lgamebuino -larduino
INCLUDE= $(foreach dir,$(INCLUDE_FOLDERS),-I$/../include/$(dir))
EXE_DIR=Exe

CC_FLAGS += -Werror -Wfatal-errors
CXX_FLAGS = $(CC_FLAGS) -std=c++11

OBJ_DIR = Obj
SRC_DIR = .

OBJECTS=$(addprefix $(OBJ_DIR)/,main.o Game.o System.o HumanPlayer.o Sprite.o	\
								Player.o Camera.o BaseUnit.o Unit.o Menu.o		\
								Cursor.o HumanPlayerBtn.o Coordinates.o)

DEPS = $(OBJECTS:.o=.d)

build: libs $(EXE_DIR)/$(PROJECT).HEX
	avr-size $(EXE_DIR)/$(PROJECT).ELF

rebuild:
	make clean
	make build

libs:
	make -C Libs/libarduino/
	make -C Libs/libgamebuino
	make -C Libs/petit_fatfs
	make -C Libs/tinyFAT

run: $(EXE_DIR)/$(PROJECT).ELF
	$(GBSIM) $^

-include $(DEPS)

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(OBJ_DIR)/%.d
	$(CXX) $< -o $@ $(INCLUDE) $(DEFINE) $(CXX_FLAGS) -MMD

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(OBJ_DIR)/%.d
	$(CC) $< -o $@ $(INCLUDE) $(DEFINE) $(CC_FLAGS) -MMD

$(OBJ_DIR)/%.d: $(SRC_DIR)/%.c
	$(CC) $< $(DEFINE) $(INCLUDE)  -M -MF $@

$(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp
	$(CXX) $< $(DEFINE) $(INCLUDE) -M -MF $@

clean:
	rm *.elf -f
	rm $(OBJ_DIR)/*.o $(OBJ_DIR)/*.d -f
	make -C $$PWD/Libs/libarduino clean
	make -C $$PWD/Libs/libgamebuino clean
	make -C $$PWD/Libs/petit_fatfs clean
	make -C $$PWD/Libs/tinyFAT clean

$(EXE_DIR)/$(PROJECT).ELF: $(OBJECTS)
	mkdir -p $(EXE_DIR)
	$(LINKER) $^ -o $@ -g $(DEFINE) $(LIBS) $(INCLUDE) -flto -Xlinker -Map=$(EXE_DIR)/POCKET.MAP -Wl,-emain -Wl,--gc-sections

$(EXE_DIR)/$(PROJECT).HEX: $(EXE_DIR)/$(PROJECT).ELF
	avr-objcopy -j.text -j.data -j.bss -O ihex $^ $@

.PHONY: all libs clean run depend