-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
58 lines (45 loc) · 1.49 KB
/
Copy pathMakefile
File metadata and controls
58 lines (45 loc) · 1.49 KB
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
# Variables
PROJECT_NAME = bytewave
# Tools
GBDK_DIR := resources/gbdk
GBDK_VERSION = 4.5.0
LCC := $(GBDK_DIR)/bin/lcc
LCC_FLAGS += -debug
PNG2ASSET := $(GBDK_DIR)/bin/png2asset
PNG2ASSET_FLAGS += -spr8x8 -no_palettes -noflip -keep_palette_order
# Dirs
SRC_DIR := src
OBJ_DIR := obj
BUILD_DIR := build
ASSETS_DIR := assets
# Assets
ASSETS_PNG := $(wildcard $(ASSETS_DIR)/*.png)
ASSETS_C := $(ASSETS_PNG:%.png=$(SRC_DIR)/%.c)
ASSETS_O := $(ASSETS_PNG:%.png=$(OBJ_DIR)/%.o)
# Sources
SOURCES_C := $(wildcard $(SRC_DIR)/*.c)
SOURCES_O := $(notdir $(SOURCES_C))
SOURCES_O := $(SOURCES_O:%.c=$(OBJ_DIR)/%.o)
# GB File
GB_FILE := $(BUILD_DIR)/$(PROJECT_NAME).gb
# Build
all: prepare $(GBDK_DIR) $(GB_FILE)
$(GB_FILE): $(ASSETS_O) $(SOURCES_O)
$(LCC) $(LCC_FLAGS) -o $(GB_FILE) $(SOURCES_O) $(ASSETS_O)
# Build .c files for assets
$(SRC_DIR)/$(ASSETS_DIR)/logo.c: $(ASSETS_DIR)/logo.png
$(PNG2ASSET) $< $(PNG2ASSET_FLAGS) -map -tile_origin 99 -keep_palette_order -c $@
# Build .o files
$(OBJ_DIR)/$(ASSETS_DIR)/%.o: $(SRC_DIR)/$(ASSETS_DIR)/%.c
$(LCC) $(LCC_FLAGS) -c -o $@ $<
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(LCC) $(LCC_FLAGS) -c -o $@ $<
# GBDK-2020
$(GBDK_DIR):
@wget -nc -q https://github.com/gbdk-2020/gbdk-2020/releases/download/$(GBDK_VERSION)/gbdk-linux64.tar.gz -P resources
@tar xf resources/gbdk-linux64.tar.gz -C resources
@rm resources/gbdk-linux64.tar.gz
prepare:
@mkdir -p $(SRC_DIR)/$(ASSETS_DIR) $(OBJ_DIR)/$(ASSETS_DIR) $(BUILD_DIR)
clean:
rm -rf $(SRC_DIR)/$(ASSETS_DIR) $(OBJ_DIR) $(BUILD_DIR)