174 lines
4.4 KiB
Text
174 lines
4.4 KiB
Text
TOP := $(dir $(lastword $(MAKEFILE_LIST)))
|
|
|
|
GBDK = $(TOP)../gbdk
|
|
CC = $(GBDK)/bin/lcc
|
|
TEST_DIR = $(TOP)test
|
|
TEST_FW = $(TEST_DIR)/framework
|
|
EXAMPLES_DIR = ./examples
|
|
EMU = $(TOP)../bgb/bgb
|
|
GBSPACK = $(TOP)../gbspack/gbspack
|
|
TEST_CHK = python $(CURDIR)/$(TEST_FW)/unit_checker.py
|
|
GBS_CLI = node $(TOP)../gb-studio/out/cli/gb-studio-cli.js
|
|
PLATFORM =
|
|
|
|
ROMTITLE = "GBSTUDIO"
|
|
|
|
ROM_BUILD_DIR = build
|
|
OBJDIR = obj
|
|
REL_OBJDIR = obj/_rel
|
|
|
|
CFLAGS = $(PLATFORM) -I$(TOP)include -Wa-I$(TOP)include
|
|
|
|
LFLAGS_NBANKS += -Wm-yoA -Wm-ya4
|
|
LFLAGS_SYMBOLS = -Wl-j -Wl-m -Wl-w -Wm-yS
|
|
|
|
LFLAGS = $(PLATFORM) -Wm-yt$(CART_MBC) $(LFLAGS_NBANKS) $(LFLAGS_SYMBOLS) -Wl-klib -Wl-g.STACK=0xDF00 -Wi-e
|
|
|
|
PACKFLAGS = -b 1 -f 255 -e rel -c
|
|
|
|
EMUFLAGS = \
|
|
-set "Color0=E8E8E8" \
|
|
-set "Color1=A0A0A0" \
|
|
-set "Color2=585858" \
|
|
-set "Color3=101010" \
|
|
-set "DebugWRAMbreak=0" \
|
|
-set "DebugSrcBrk=1" \
|
|
-hf -stateonexit \
|
|
-screenonexit ./capture.bmp
|
|
|
|
EMU_FORCE_DMG = -set "SystemMode=0"
|
|
|
|
TARGET = $(ROM_BUILD_DIR)/rom.gb
|
|
|
|
ASRC = $(foreach dir,$(TOP)src,$(notdir $(wildcard $(dir)/*.s)))
|
|
CSRC = $(foreach dir,$(TOP)src,$(notdir $(wildcard $(dir)/*.c)))
|
|
ACORE = $(foreach dir,$(TOP)src/core,$(notdir $(wildcard $(dir)/*.s)))
|
|
CCORE = $(foreach dir,$(TOP)src/core,$(notdir $(wildcard $(dir)/*.c)))
|
|
CSTATES = $(foreach dir,$(TOP)src/states,$(notdir $(wildcard $(dir)/*.c)))
|
|
ASTATES = $(foreach dir,$(TOP)src/states,$(notdir $(wildcard $(dir)/*.s)))
|
|
|
|
ENGINE_OBJS = $(CSRC:%.c=$(TOP)$(OBJDIR)/%.o) \
|
|
$(ASRC:%.s=$(TOP)$(OBJDIR)/%.o) \
|
|
$(ACORE:%.s=$(TOP)$(OBJDIR)/%.o) \
|
|
$(CCORE:%.c=$(TOP)$(OBJDIR)/%.o) \
|
|
$(CSTATES:%.c=$(TOP)$(OBJDIR)/%.o) \
|
|
$(ASTATES:%.s=$(TOP)$(OBJDIR)/%.o)
|
|
|
|
OBJS = $(ENGINE_OBJS)
|
|
REL_OBJS = $(OBJS:$(OBJDIR)/%.o=$(REL_OBJDIR)/%.rel)
|
|
|
|
all: settings directories BUILD
|
|
|
|
.PHONY: directories clean release debug profile AP DMG CGB SGB MBC3 MBC5 hUGE GBT test rom BUILD
|
|
.SECONDARY: $(OBJS)
|
|
|
|
AP:
|
|
$(eval PLATFORM = -msm83:ap)
|
|
$(eval TARGET = $(patsubst %.gb,%.pocket,$(TARGET)))
|
|
@echo "Analogue pocket build"
|
|
|
|
release:
|
|
$(eval CFLAGS += -Wf'--max-allocs-per-node 50000')
|
|
@echo "RELEASE mode ON"
|
|
|
|
debug:
|
|
$(eval CFLAGS += -Wf--fverbose-asm -Wf--debug -Wl-m -Wl-w -Wl-y -DVM_DEBUG_OUTPUT)
|
|
$(eval CFLAGS += -Wf--nolospre -Wf--nogcse)
|
|
$(eval LFLAGS += -Wf--debug -Wl-m -Wl-w -Wl-y)
|
|
@echo "DEBUG mode ON"
|
|
|
|
profile:
|
|
$(eval CFLAGS += -Wf--profile)
|
|
@echo "PROFILE mode ON"
|
|
|
|
DMG:
|
|
@echo "DMG mode ON"
|
|
|
|
CGB:
|
|
$(eval CFLAGS += -DCGB)
|
|
$(eval LFLAGS += -Wm-yC)
|
|
@echo "CGB mode ON"
|
|
|
|
SGB:
|
|
$(eval CFLAGS += -DSGB)
|
|
$(eval LFLAGS += -Wm-ys)
|
|
@echo "SGB mode ON"
|
|
|
|
batteryless:
|
|
$(eval PACKFLAGS += -a 4)
|
|
$(eval BATTERYLESS = 1)
|
|
$(eval CFLAGS += -DBATTERYLESS)
|
|
@echo "BETTERYLESS SAVE ON"
|
|
|
|
MBC3:
|
|
$(eval CART_MBC = 0x10)
|
|
@echo "Using MBC3"
|
|
MBC5:
|
|
$(eval CART_MBC = 0x1B)
|
|
@echo "Using MBC5"
|
|
|
|
hUGE:
|
|
$(eval CFLAGS += -DHUGE_TRACKER)
|
|
$(eval LFLAGS += -Wl-l$(TOP)lib/hUGEDriver.lib)
|
|
@echo "Enable hUGETracker"
|
|
GBT:
|
|
$(eval CFLAGS += -DGBT_PLAYER)
|
|
$(eval LFLAGS += -Wl-l$(TOP)lib/gbt_player.lib)
|
|
$(eval PACKFLAGS += -s 1:800)
|
|
@echo "Enable GBTPlayer"
|
|
|
|
directories: $(ROM_BUILD_DIR) $(OBJDIR) $(REL_OBJDIR)
|
|
|
|
$(ROM_BUILD_DIR):
|
|
mkdir -p $(ROM_BUILD_DIR)
|
|
|
|
$(OBJDIR):
|
|
mkdir -p $(OBJDIR)
|
|
mkdir -p $(TOP)$(OBJDIR)
|
|
|
|
$(REL_OBJDIR):
|
|
mkdir -p $(REL_OBJDIR)
|
|
|
|
$(TOP)$(OBJDIR)/%.o: $(TOP)src/core/%.c
|
|
$(CC) $(CFLAGS) -Wf-MMD $(filter -Wf-ba%, $(subst .d,-Wf-ba,$(suffix $(<:%.c=%)))) -c -o $@ $<
|
|
|
|
$(TOP)$(OBJDIR)/%.o: $(TOP)src/core/%.s
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
$(TOP)$(OBJDIR)/%.o: $(TOP)src/states/%.c
|
|
$(CC) $(CFLAGS) -Wf-MMD -c -o $@ $<
|
|
|
|
$(TOP)$(OBJDIR)/%.o: $(TOP)src/states/%.s
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
$(TOP)$(OBJDIR)/%.o: $(TOP)src/%.c
|
|
$(CC) $(CFLAGS) -Wf-MMD -c -o $@ $<
|
|
|
|
$(TOP)$(OBJDIR)/%.o: $(TOP)src/%.s
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
$(REL_OBJDIR)/linkfile.lk: $(OBJS)
|
|
mkdir -p $(REL_OBJDIR)
|
|
|
|
$(shell rm -f $(REL_OBJDIR)/packfile.pk)
|
|
$(foreach O,$(OBJS),$(shell echo $O >>$(REL_OBJDIR)/packfile.pk))
|
|
$(eval CART_SIZE=$(shell $(GBSPACK) $(PACKFLAGS) -o $(REL_OBJDIR) -i $(REL_OBJDIR)/packfile.pk))
|
|
|
|
$(shell echo -g __start_save=$(shell expr $(CART_SIZE) - 4 ) >$@)
|
|
$(foreach O,$(REL_OBJS),$(shell echo $O >>$@))
|
|
|
|
BUILD: $(REL_OBJDIR)/linkfile.lk
|
|
$(CC) $(LFLAGS) -Wm-yn$(ROMTITLE) -o $(TARGET) -Wl-f$<
|
|
|
|
clean:
|
|
@echo "CLEANUP..."
|
|
rm -rf $(TOP)$(OBJDIR)
|
|
rm -rf $(OBJDIR)
|
|
rm -rf $(ROM_BUILD_DIR)
|
|
rm -f $(TEST_DIR)/*/capture.bmp
|
|
rm -rf $(TEST_DIR)/*/obj
|
|
rm -rf $(TEST_DIR)/*/build
|
|
rm -rf $(EXAMPLES_DIR)/*/obj
|
|
rm -rf $(EXAMPLES_DIR)/*/build
|
|
|
|
rom: directories BUILD
|