mirror of
https://github.com/dborth/vbagx.git
synced 2025-02-22 21:27:09 +01:00

* Now compiles with devkitpro r15 * One makefile to make all versions * Complete rewrite based on code from SNES9x GX * Now has a menu! ROM selector, preferences, controller mapping, etc * Wiimote, Nunchuk, and Classic controller support * Button mapping for all controller types * Full support for SD and USB * Load/save preference selector. ROMs, saves, and preferences are saved/loaded according to these * 'Auto' settings for save/load - attempts to automatically determine your load/save device(s) - SD, USB * Preferences are loaded and saved in XML format. You can open VBAGX.xml edit all settings, including some not available within the program
144 lines
5.8 KiB
Makefile
144 lines
5.8 KiB
Makefile
#---------------------------------------------------------------------------------
|
|
# Clear the implicit built in rules
|
|
#---------------------------------------------------------------------------------
|
|
.SUFFIXES:
|
|
#---------------------------------------------------------------------------------
|
|
ifeq ($(strip $(DEVKITPPC)),)
|
|
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
|
|
endif
|
|
|
|
include $(DEVKITPPC)/gamecube_rules
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# TARGET is the name of the output
|
|
# BUILD is the directory where object files & intermediate files will be placed
|
|
# SOURCES is a list of directories containing source code
|
|
# INCLUDES is a list of directories containing extra header files
|
|
#---------------------------------------------------------------------------------
|
|
TARGET := vba172_gc
|
|
TARGETDIR := executables
|
|
BUILD := build_gc
|
|
SOURCES := source/vba source/vba/gb source/ngc
|
|
INCLUDES := source/vba source/vba/gb source/ngc
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# options for code generation
|
|
#---------------------------------------------------------------------------------
|
|
|
|
CFLAGS = -g -Os -Wall $(MACHDEP) $(INCLUDE) \
|
|
-DNGC -DWORDS_BIGENDIAN -DPACKAGE=\"VisualBoyAdvance\" \
|
|
-DVERSION=\"1.7.2\" -DC_CORE \
|
|
-DCHANFFS -DSDL -DNO_DEFLATE
|
|
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# any extra libraries we wish to link with
|
|
#---------------------------------------------------------------------------------
|
|
LIBS := -lmxml -lbba -ltinysmb -lfat -lz -logc -lm -lfreetype
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# list of directories containing libraries, this must be the top level containing
|
|
# include and lib
|
|
#---------------------------------------------------------------------------------
|
|
LIBDIRS := $(CURDIR)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# no real need to edit anything past this point unless you need to add additional
|
|
# rules for different file extensions
|
|
#---------------------------------------------------------------------------------
|
|
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
|
#---------------------------------------------------------------------------------
|
|
|
|
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
|
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
|
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
|
|
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# automatically build a list of object files for our project
|
|
#---------------------------------------------------------------------------------
|
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
|
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
|
|
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# use CXX for linking C++ projects, CC for standard C
|
|
#---------------------------------------------------------------------------------
|
|
ifeq ($(strip $(CPPFILES)),)
|
|
export LD := $(CC)
|
|
else
|
|
export LD := $(CXX)
|
|
endif
|
|
|
|
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
|
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
|
$(sFILES:.s=.o) $(SFILES:.S=.o)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# build a list of include paths
|
|
#---------------------------------------------------------------------------------
|
|
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
-I$(CURDIR)/$(BUILD) \
|
|
-I$(LIBOGC_INC)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# build a list of library paths
|
|
#---------------------------------------------------------------------------------
|
|
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
|
|
-L$(LIBOGC_LIB)
|
|
|
|
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
.PHONY: $(BUILD) clean
|
|
|
|
#---------------------------------------------------------------------------------
|
|
$(BUILD):
|
|
@[ -d $@ ] || mkdir -p $@
|
|
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
|
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.gc
|
|
@rm -fr $(OUTPUT).elf
|
|
|
|
#---------------------------------------------------------------------------------
|
|
clean:
|
|
@echo clean ...
|
|
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
|
|
#---------------------------------------------------------------------------------
|
|
run:
|
|
psoload $(OUTPUT).dol
|
|
|
|
#---------------------------------------------------------------------------------
|
|
reload:
|
|
psoload -r $(OUTPUT).dol
|
|
|
|
|
|
#---------------------------------------------------------------------------------
|
|
else
|
|
|
|
DEPENDS := $(OFILES:.o=.d)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# main targets
|
|
#---------------------------------------------------------------------------------
|
|
$(OUTPUT).dol: $(OUTPUT).elf
|
|
$(OUTPUT).elf: $(OFILES)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# This rule links in binary data with the .jpg extension
|
|
#---------------------------------------------------------------------------------
|
|
%.jpg.o : %.jpg
|
|
#---------------------------------------------------------------------------------
|
|
@echo $(notdir $<)
|
|
$(bin2o)
|
|
|
|
-include $(DEPENDS)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
endif
|
|
#---------------------------------------------------------------------------------
|