diff options
Diffstat (limited to 'misc/3ds/Makefile')
-rw-r--r-- | misc/3ds/Makefile | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/misc/3ds/Makefile b/misc/3ds/Makefile new file mode 100644 index 0000000..f3aaf3a --- /dev/null +++ b/misc/3ds/Makefile @@ -0,0 +1,136 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITARM)),) +$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITARM)/3ds_rules + +#--------------------------------------------------------------------------------- +# configurable options +#--------------------------------------------------------------------------------- +APP_ICON := $(TOPDIR)/misc/3ds/icon.png +APP_TITLE := ClassiCube +APP_DESCRIPTION := Simple block building sandbox +APP_AUTHOR := UnknownShadow200 +TARGET := ClassiCube-3ds + +#--------------------------------------------------------------------------------- +# 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 header files +#--------------------------------------------------------------------------------- +BUILD := build-3ds +SOURCES := src misc/3ds third_party/bearssl/src +INCLUDES := third_party/bearssl/inc + +CIA_BANNER_BIN := $(TOPDIR)/misc/3ds/banner.bin +CIA_ICON_BIN := $(TOPDIR)/misc/3ds/icon.bin +CIA_SPEC_RSF := $(TOPDIR)/misc/3ds/spec.rsf + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft + +CFLAGS := -g -Wall -O2 -mword-relocations \ + -ffunction-sections \ + $(ARCH) + +CFLAGS += $(INCLUDE) -D__3DS__ + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lctru -lm + + +#--------------------------------------------------------------------------------- +# 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)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) + +export LD := $(CC) + +export OFILES_SOURCES := $(CFILES:.c=.o) $(SFILES:.s=.o) + +export OFILES_BIN := $(PICAFILES:.v.pica=.shbin.o) + +export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(CTRULIB),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(CTRULIB),-L$(dir)/lib) + +export _3DSXFLAGS = --smdh=$(CURDIR)/$(TARGET).smdh + +.PHONY: all clean + +#--------------------------------------------------------------------------------- +all: $(BUILD) + $(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/3ds/Makefile + +$(BUILD): + mkdir -p $@ + +#--------------------------------------------------------------------------------- +clean: + echo clean ... + rm -fr $(BUILD) $(TARGET).cia $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf + +#--------------------------------------------------------------------------------- +else + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).cia : $(OUTPUT).3dsx makerom + ./makerom -f cia -o "$(OUTPUT).cia" -elf "$(OUTPUT).elf" -rsf "$(CIA_SPEC_RSF)" -icon "$(CIA_ICON_BIN)" -banner "$(CIA_BANNER_BIN)" -exefslogo -target t + +makerom: + wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip + unzip makerom-v0.18.3-ubuntu_x86_64.zip + chmod +x makerom + +$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh + +$(OUTPUT).elf : $(OFILES) + +#--------------------------------------------------------------------------------- +.PRECIOUS : %.shbin +#--------------------------------------------------------------------------------- + +%.shbin.o : %.v.pica + $(eval CUR_SRC := $<) + $(eval CUR_FILE := $(notdir $(CUR_SRC))) + $(eval CUR_BIN := $(CURDIR)/$(subst .v.pica,.shbin,$(CUR_FILE))) + picasso -o $(CUR_BIN) $(CUR_SRC) + bin2s $(CUR_BIN) | $(AS) -o $(CUR_BIN).o + + +-include $(DEPSDIR)/*.d + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- |