Buildsystem: add support for creating .wuhb files

This commit is contained in:
fincs 2021-01-05 17:41:04 +01:00
parent b762ce2ab6
commit 4edc8271be
No known key found for this signature in database
GPG Key ID: 62C7609ADA219C60
3 changed files with 91 additions and 4 deletions

5
.gitignore vendored
View File

@ -1,3 +1,5 @@
.*/
!.github/
build/ build/
release/ release/
debug/ debug/
@ -6,8 +8,9 @@ lib/
*.o *.o
*.d *.d
*.elf *.elf
*.rpl
*.rpx *.rpx
*.wuhb
*.bz2 *.bz2
docs/html/ docs/html/
.vs/
CMakeSettings.json CMakeSettings.json

View File

@ -8,6 +8,15 @@ endif
TOPDIR ?= $(CURDIR) TOPDIR ?= $(CURDIR)
#-------------------------------------------------------------------------------
# APP_NAME sets the long name of the application
# APP_SHORTNAME sets the short name of the application
# APP_AUTHOR sets the author of the application
#-------------------------------------------------------------------------------
#APP_NAME := Application Name
#APP_SHORTNAME := App Name
#APP_AUTHOR := Built with devkitPPC & wut
include $(DEVKITPRO)/wut/share/wut_rules include $(DEVKITPRO)/wut/share/wut_rules
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
@ -16,12 +25,20 @@ include $(DEVKITPRO)/wut/share/wut_rules
# SOURCES is a list of directories containing source code # SOURCES is a list of directories containing source code
# DATA is a list of directories containing data files # DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files # INCLUDES is a list of directories containing header files
# CONTENT is the path to the bundled folder that will be mounted as /vol/content/
# ICON is the game icon, leave blank to use default rule
# TV_SPLASH is the image displayed during bootup on the TV, leave blank to use default rule
# DRC_SPLASH is the image displayed during bootup on the DRC, leave blank to use default rule
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
TARGET := $(notdir $(CURDIR)) TARGET := $(notdir $(CURDIR))
BUILD := build BUILD := build
SOURCES := source SOURCES := source
DATA := data DATA := data
INCLUDES := include INCLUDES := include
CONTENT :=
ICON :=
TV_SPLASH :=
DRC_SPLASH :=
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# options for code generation # options for code generation
@ -44,7 +61,6 @@ LIBS := -lwut
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
LIBDIRS := $(PORTLIBS) $(WUT_ROOT) LIBDIRS := $(PORTLIBS) $(WUT_ROOT)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional # no real need to edit anything past this point unless you need to add additional
# rules for different file extensions # rules for different file extensions
@ -90,6 +106,34 @@ export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
ifneq (,$(strip $(CONTENT)))
export APP_CONTENT := $(TOPDIR)/$(CONTENT)
endif
ifneq (,$(strip $(ICON)))
export APP_ICON := $(TOPDIR)/$(ICON)
else ifneq (,$(wildcard $(TOPDIR)/$(TARGET).png))
export APP_ICON := $(TOPDIR)/$(TARGET).png
else ifneq (,$(wildcard $(TOPDIR)/icon.png))
export APP_ICON := $(TOPDIR)/icon.png
endif
ifneq (,$(strip $(TV_SPLASH)))
export APP_TV_SPLASH := $(TOPDIR)/$(TV_SPLASH)
else ifneq (,$(wildcard $(TOPDIR)/tv-splash.png))
export APP_TV_SPLASH := $(TOPDIR)/tv-splash.png
else ifneq (,$(wildcard $(TOPDIR)/splash.png))
export APP_TV_SPLASH := $(TOPDIR)/splash.png
endif
ifneq (,$(strip $(DRC_SPLASH)))
export APP_DRC_SPLASH := $(TOPDIR)/$(DRC_SPLASH)
else ifneq (,$(wildcard $(TOPDIR)/drc-splash.png))
export APP_DRC_SPLASH := $(TOPDIR)/drc-splash.png
else ifneq (,$(wildcard $(TOPDIR)/splash.png))
export APP_DRC_SPLASH := $(TOPDIR)/splash.png
endif
.PHONY: $(BUILD) clean all .PHONY: $(BUILD) clean all
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
@ -102,7 +146,7 @@ $(BUILD):
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
clean: clean:
@echo clean ... @echo clean ...
@rm -fr $(BUILD) $(TARGET).rpx $(TARGET).elf @rm -fr $(BUILD) $(TARGET).wuhb $(TARGET).rpx $(TARGET).elf
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
else else
@ -113,8 +157,9 @@ DEPENDS := $(OFILES:.o=.d)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# main targets # main targets
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
all : $(OUTPUT).rpx all : $(OUTPUT).wuhb
$(OUTPUT).wuhb : $(OUTPUT).rpx
$(OUTPUT).rpx : $(OUTPUT).elf $(OUTPUT).rpx : $(OUTPUT).elf
$(OUTPUT).elf : $(OFILES) $(OUTPUT).elf : $(OFILES)

View File

@ -23,6 +23,45 @@ RPLSPECS := -specs=$(WUT_ROOT)/share/wut.specs -specs=$(WUT_ROOT)/share/rpl.spec
MACHDEP = -DESPRESSO -mcpu=750 -meabi -mhard-float MACHDEP = -DESPRESSO -mcpu=750 -meabi -mhard-float
WUHB_DEPS :=
WUHB_OPTIONS :=
ifneq ($(strip $(APP_CONTENT)),)
WUHB_OPTIONS += --content=$(APP_CONTENT)
endif
ifneq ($(strip $(APP_NAME)),)
WUHB_OPTIONS += --name "$(APP_NAME)"
endif
ifneq ($(strip $(APP_SHORTNAME)),)
WUHB_OPTIONS += --short-name "$(APP_SHORTNAME)"
endif
ifneq ($(strip $(APP_AUTHOR)),)
WUHB_OPTIONS += --author "$(APP_AUTHOR)"
endif
ifneq ($(strip $(APP_ICON)),)
WUHB_DEPS += $(APP_ICON)
WUHB_OPTIONS += --icon=$(APP_ICON)
endif
ifneq ($(strip $(APP_TV_SPLASH)),)
WUHB_DEPS += $(APP_TV_SPLASH)
WUHB_OPTIONS += --tv-image=$(APP_TV_SPLASH)
endif
ifneq ($(strip $(APP_DRC_SPLASH)),)
WUHB_DEPS += $(APP_DRC_SPLASH)
WUHB_OPTIONS += --drc-image=$(APP_DRC_SPLASH)
endif
#---------------------------------------------------------------------------------
%.wuhb: %.rpx $(WUHB_DEPS)
$(SILENTCMD)wuhbtool $< $@ $(WUHB_OPTIONS)
@echo built ... $(notdir $@)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
%.rpx: %.elf %.rpx: %.elf
$(SILENTCMD)elf2rpl $< $@ $(ERROR_FILTER) $(SILENTCMD)elf2rpl $< $@ $(ERROR_FILTER)