idk wip
This commit is contained in:
parent
d8f573c678
commit
044d31fa47
8 changed files with 1111 additions and 62 deletions
169
Makefile
169
Makefile
|
@ -1,7 +1,166 @@
|
|||
CFLAGS = -lm
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
#
|
||||
# SPDX-FileContributor: Antonio Niño Díaz, 2022
|
||||
|
||||
build:
|
||||
cc ./main.c $(CFLAGS) -DVBUF -o ./cube
|
||||
# User config
|
||||
# ===========
|
||||
|
||||
run: build
|
||||
./cube
|
||||
# ROM config
|
||||
# ----------
|
||||
|
||||
NAME := vi
|
||||
GAME_TITLE := "VIOLET'S CV"
|
||||
GAME_CODE := "00"
|
||||
|
||||
# Defines passed to all files
|
||||
# ---------------------------
|
||||
|
||||
DEFINES :=
|
||||
|
||||
# Libraries
|
||||
# ---------
|
||||
|
||||
LIBS := -lc
|
||||
LIBDIRS := # A list of paths
|
||||
|
||||
# Include paths
|
||||
# -------------
|
||||
|
||||
INCLUDES := # A list of paths
|
||||
|
||||
# Tools
|
||||
# -----
|
||||
|
||||
PREFIX := arm-none-eabi-
|
||||
CC := $(PREFIX)gcc
|
||||
CXX := $(PREFIX)g++
|
||||
OBJDUMP := $(PREFIX)objdump
|
||||
OBJCOPY := $(PREFIX)objcopy
|
||||
MKDIR := mkdir
|
||||
RM := rm -rf
|
||||
|
||||
# Verbose flag
|
||||
# ------------
|
||||
|
||||
# `make V=` builds the binary in verbose build mode
|
||||
V := @
|
||||
|
||||
# Directories
|
||||
# -----------
|
||||
|
||||
SOURCEDIR := source
|
||||
BUILDDIR := build
|
||||
|
||||
# Build artfacts
|
||||
# --------------
|
||||
|
||||
ELF := $(NAME).elf
|
||||
DUMP := $(NAME).dump
|
||||
ROM := $(NAME).gba
|
||||
MAP := $(NAME).map
|
||||
|
||||
GBAFIX := gbafix/gbafix
|
||||
|
||||
# Source files
|
||||
# ------------
|
||||
|
||||
SOURCES_S := $(wildcard $(SOURCEDIR)/*.s $(SOURCEDIR)/**/*.s)
|
||||
SOURCES_C := $(wildcard $(SOURCEDIR)/*.c $(SOURCEDIR)/**/*.c)
|
||||
SOURCES_CPP := $(wildcard $(SOURCEDIR)/*.cpp $(SOURCEDIR)/**/*.cpp)
|
||||
|
||||
# Compiler and linker flags
|
||||
# -------------------------
|
||||
|
||||
DEFINES += -D__GBA__
|
||||
|
||||
ARCH := -mcpu=arm7tdmi -mtune=arm7tdmi
|
||||
|
||||
WARNFLAGS := -Wall
|
||||
|
||||
INCLUDEFLAGS := $(foreach path,$(INCLUDES),-I$(path)) \
|
||||
$(foreach path,$(LIBDIRS),-I$(path)/include)
|
||||
|
||||
LIBDIRSFLAGS := $(foreach path,$(LIBDIRS),-L$(path)/lib)
|
||||
|
||||
ASFLAGS += -x assembler-with-cpp $(DEFINES) $(ARCH) \
|
||||
-mthumb -mthumb-interwork $(INCLUDEFLAGS) \
|
||||
-ffunction-sections -fdata-sections -lm
|
||||
|
||||
CFLAGS += -std=gnu11 $(WARNFLAGS) $(DEFINES) $(ARCH) \
|
||||
-mthumb -mthumb-interwork $(INCLUDEFLAGS) -O2 \
|
||||
-ffunction-sections -fdata-sections -lm -g
|
||||
|
||||
CXXFLAGS += -std=gnu++14 $(WARNFLAGS) $(DEFINES) $(ARCH) \
|
||||
-mthumb -mthumb-interwork $(INCLUDEFLAGS) -O2 \
|
||||
-ffunction-sections -fdata-sections \
|
||||
-fno-exceptions -fno-rtti
|
||||
|
||||
LDFLAGS := -mthumb -mthumb-interwork $(LIBDIRSFLAGS) \
|
||||
-Wl,-Map,$(MAP) -Wl,--gc-sections \
|
||||
-specs=nano.specs -T source/sys/gba_cart.ld \
|
||||
-Wl,--start-group $(LIBS) -Wl,--end-group -lm
|
||||
|
||||
# Intermediate build files
|
||||
# ------------------------
|
||||
|
||||
OBJS := \
|
||||
$(patsubst $(SOURCEDIR)/%.s,$(BUILDDIR)/%.s.o,$(SOURCES_S)) \
|
||||
$(patsubst $(SOURCEDIR)/%.c,$(BUILDDIR)/%.c.o,$(SOURCES_C)) \
|
||||
$(patsubst $(SOURCEDIR)/%.cpp,$(BUILDDIR)/%.cpp.o,$(SOURCES_CPP))
|
||||
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
|
||||
# Rules
|
||||
# -----
|
||||
|
||||
$(BUILDDIR)/%.s.o : $(SOURCEDIR)/%.s
|
||||
@echo " AS $<"
|
||||
@$(MKDIR) -p $(@D) # Build target's directory if it doesn't exist
|
||||
$(V)$(CC) $(ASFLAGS) -MMD -MP -c -o $@ $<
|
||||
|
||||
$(BUILDDIR)/%.c.o : $(SOURCEDIR)/%.c
|
||||
@echo " CC $<"
|
||||
@$(MKDIR) -p $(@D) # Build target's directory if it doesn't exist
|
||||
$(V)$(CC) $(CFLAGS) -MMD -MP -c -o $@ $<
|
||||
|
||||
$(BUILDDIR)/%.cpp.o : $(SOURCEDIR)/%.cpp
|
||||
@echo " CXX $<"
|
||||
@$(MKDIR) -p $(@D) # Build target's directory if it doesn't exist
|
||||
$(V)$(CXX) $(CXXFLAGS) -MMD -MP -c -o $@ $<
|
||||
|
||||
|
||||
# Targets
|
||||
# -------
|
||||
|
||||
.PHONY: all clean dump
|
||||
|
||||
all: $(ROM)
|
||||
|
||||
$(GBAFIX):
|
||||
$(V)cd gbafix && make
|
||||
|
||||
$(ELF): $(OBJS)
|
||||
@echo " LD $@"
|
||||
$(V)$(CC) -o $@ $(OBJS) $(LDFLAGS)
|
||||
|
||||
$(ROM): $(ELF) $(GBAFIX)
|
||||
@echo " OBJCOPY $<"
|
||||
$(V)$(OBJCOPY) -O binary $< $@
|
||||
@echo " GBAFIX $@"
|
||||
$(V)$(GBAFIX) $@ -t$(GAME_TITLE) -c$(GAME_CODE)
|
||||
|
||||
$(DUMP): $(ELF)
|
||||
@echo " OBJDUMP $@"
|
||||
$(V)$(OBJDUMP) -h -C -S $< > $@
|
||||
|
||||
dump: $(DUMP)
|
||||
|
||||
clean:
|
||||
@echo " CLEAN"
|
||||
$(V)$(RM) $(ROM) $(ELF) $(DUMP) $(MAP) $(BUILDDIR)
|
||||
$(V)cd gbafix && make clean
|
||||
|
||||
# Include dependency files if they exist
|
||||
# --------------------------------------
|
||||
|
||||
-include $(DEPS)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue