mirror of
https://github.com/encounter/Decrypt9.git
synced 2026-03-30 11:06:30 -07:00
2db59a05bf
Added brahma loader, adjusted makefile to accommodate for adding the loader. New icon for ninjhax version. Added BUILD.bat and CLEAN.bat for ninjhax version. Run BUILD.bat to build the ninjhax version else run make gateway from cmd/terminal.
154 lines
5.6 KiB
Makefile
154 lines
5.6 KiB
Makefile
#---------------------------------------------------------------------------------
|
|
.SUFFIXES:
|
|
#---------------------------------------------------------------------------------
|
|
|
|
ifeq ($(strip $(DEVKITARM)),)
|
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
|
endif
|
|
|
|
include $(DEVKITARM)/ds_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
|
|
# DATA is a list of directories containing data files
|
|
# INCLUDES is a list of directories containing header files
|
|
# SPECS is the directory containing the important build and link files
|
|
#---------------------------------------------------------------------------------
|
|
export TARGET := $(shell basename $(CURDIR))
|
|
BUILD := build
|
|
SOURCES := source source/fatfs source/decryptor source/abstraction
|
|
DATA := data
|
|
INCLUDES := include source source/fatfs
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# Setup some defines
|
|
#---------------------------------------------------------------------------------
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# options for code generation
|
|
#---------------------------------------------------------------------------------
|
|
ARCH := -mthumb -mthumb-interwork
|
|
|
|
CFLAGS := -g -Wall -O2\
|
|
-march=armv5te -mtune=arm946e-s -fomit-frame-pointer\
|
|
-ffast-math -std=c99\
|
|
$(ARCH)
|
|
|
|
CFLAGS += $(INCLUDE) -DEXEC_$(EXEC_METHOD) -DARM9
|
|
|
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
|
|
|
ASFLAGS := -g $(ARCH) -DEXEC_$(EXEC_METHOD)
|
|
LDFLAGS = -nostartfiles -g $(ARCH) -Wl,-Map,$(TARGET).map
|
|
|
|
ifeq ($(EXEC_METHOD),GATEWAY)
|
|
LDFLAGS += --specs=../gateway.specs
|
|
else ifeq ($(EXEC_METHOD),BOOTSTRAP)
|
|
LDFLAGS += --specs=../bootstrap.specs
|
|
endif
|
|
|
|
LIBS :=
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# list of directories containing libraries, this must be the top level containing
|
|
# include and lib
|
|
#---------------------------------------------------------------------------------
|
|
LIBDIRS :=
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# 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_C := $(CURDIR)/brahma_loader/data
|
|
export OUTPUT_D := $(CURDIR)/output
|
|
export OUTPUT := $(OUTPUT_D)/$(TARGET)
|
|
|
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
|
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
|
|
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
|
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
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)
|
|
|
|
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
-I$(CURDIR)/$(BUILD)
|
|
|
|
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
|
|
|
|
.PHONY: $(BUILD) clean all gateway bootstrap
|
|
|
|
#---------------------------------------------------------------------------------
|
|
all: $(OUTPUT_D) bootstrap
|
|
|
|
$(OUTPUT_D):
|
|
@[ -d $@ ] || mkdir -p $@
|
|
|
|
gateway: $(OUTPUT_D)
|
|
@[ -d $(BUILD) ] || mkdir -p $(BUILD)
|
|
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile EXEC_METHOD=GATEWAY
|
|
cp tools/LauncherTemplate.dat $(OUTPUT_D)/Launcher.dat
|
|
python tools/insert.py $(OUTPUT_D)/Launcher.dat $(OUTPUT).bin 0x16D8D0
|
|
|
|
bootstrap: $(OUTPUT_D)
|
|
@[ -d $(BUILD) ] || mkdir -p $(BUILD)
|
|
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile EXEC_METHOD=BOOTSTRAP
|
|
cp $(OUTPUT).bin payload.bin
|
|
mv payload.bin $(OUTPUT_C)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
clean:
|
|
@echo clean ...
|
|
@rm -fr $(BUILD) $(OUTPUT_D)
|
|
|
|
|
|
#---------------------------------------------------------------------------------
|
|
else
|
|
|
|
DEPENDS := $(OFILES:.o=.d)
|
|
|
|
#---------------------------------------------------------------------------------
|
|
# main targets
|
|
#---------------------------------------------------------------------------------
|
|
$(OUTPUT).bin : $(OUTPUT).elf
|
|
$(OUTPUT).elf : $(OFILES)
|
|
|
|
|
|
#---------------------------------------------------------------------------------
|
|
%.bin: %.elf
|
|
@$(OBJCOPY) -O binary $< $@
|
|
@echo built ... $(notdir $@)
|
|
|
|
|
|
-include $(DEPENDS)
|
|
|
|
|
|
#---------------------------------------------------------------------------------------
|
|
endif
|
|
#---------------------------------------------------------------------------------------
|