From 36ca676c9962f10f7e254fbb3b55b7fe33334bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20B?= Date: Tue, 27 Feb 2024 20:50:06 +0100 Subject: [PATCH] fix makefile (shader and texture rules) (#296) * fix makefile (shader and texture rules) they're now part of devkitARM base rules, not needed anymore, in fact there was a conflict. The t3x for romfs needed to be more specific. this is based on the changes to 3ds-examples/graphics/gpu/gpusprite which was the base of the post-citro2d rewrite Makefile * copy paste error --- Makefile | 84 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/Makefile b/Makefile index 1a20868..d314464 100644 --- a/Makefile +++ b/Makefile @@ -100,7 +100,7 @@ CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 ASFLAGS := -g $(ARCH) LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) -LIBS := `arm-none-eabi-pkg-config --libs vorbisidec libarchive jansson libpng` -lcitro2d -lcitro3d -lctrud -lm +LIBS := `arm-none-eabi-pkg-config --libs vorbisidec libarchive jansson libpng` -lcitro2d -lcitro3d -lctru -lm #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing @@ -147,13 +147,24 @@ else endif #--------------------------------------------------------------------------------- -export T3XFILES := $(GFXFILES:.t3s=.t3x) +#--------------------------------------------------------------------------------- +ifeq ($(GFXBUILD),$(BUILD)) +#--------------------------------------------------------------------------------- +export T3XFILES := $(GFXFILES:.t3s=.t3x) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- +export ROMFS_T3XFILES := $(patsubst %.t3s, $(GFXBUILD)/%.t3x, $(GFXFILES)) +export T3XHFILES := $(patsubst %.t3s, $(BUILD)/%.h, $(GFXFILES)) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) export OFILES_BIN := $(addsuffix .o,$(BINFILES)) \ $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(if $(filter $(BUILD),$(GFXBUILD)),$(addsuffix .o,$(T3XFILES))) + $(addsuffix .o,$(T3XFILES)) export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) @@ -223,17 +234,38 @@ else endif #--------------------------------------------------------------------------------- -all: - @mkdir -p $(BUILD) $(GFXBUILD) $(OUTDIR) +all: $(BUILD) $(GFXBUILD) $(DEPSDIR) $(ROMFS_T3XFILES) $(T3XHFILES) $(OUTDIR) @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile @$(BANNERTOOL) makebanner $(BANNER_IMAGE_ARG) "$(BANNER_IMAGE)" $(BANNER_AUDIO_ARG) "$(BANNER_AUDIO)" -o "$(BUILD)/banner.bnr" @$(BANNERTOOL) makesmdh -s "$(APP_TITLE)" -l "$(APP_DESCRIPTION)" -p "$(APP_AUTHOR)" -i "$(APP_ICON)" -f "$(ICON_FLAGS)" -o "$(BUILD)/icon.icn" $(MAKEROM) -f cia -o "$(OUTPUT).cia" -target t -exefslogo $(MAKEROM_ARGS) +$(BUILD): + @mkdir -p $@ + +ifneq ($(GFXBUILD),$(BUILD)) +$(GFXBUILD): + @mkdir -p $@ +endif + +ifneq ($(DEPSDIR),$(BUILD)) +$(DEPSDIR): + @mkdir -p $@ +endif + +$(OUTDIR): + @mkdir -p $@ + #--------------------------------------------------------------------------------- clean: - @echo clean ... - @rm -fr $(BUILD) $(GFXBUILD) $(OUTDIR) + $(SILENTMSG) clean ... + @rm -fr $(BUILD) $(GFXBUILD) $(DEPSDIR) $(OUTDIR) + +#--------------------------------------------------------------------------------- +$(GFXBUILD)/%.t3x $(BUILD)/%.h : %.t3s +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @tex3ds -i $< -H $(BUILD)/$*.h -d $(DEPSDIR)/$*.d -o $(GFXBUILD)/$*.t3x #--------------------------------------------------------------------------------- else @@ -256,42 +288,18 @@ $(OUTPUT).elf : $(OFILES) @$(bin2o) #--------------------------------------------------------------------------------- -.PRECIOUS : %.t3x +.PRECIOUS : %.t3x %.shbin +#--------------------------------------------------------------------------------- %.t3x.o %_t3x.h : %.t3x #--------------------------------------------------------------------------------- - @$(bin2o) + $(SILENTMSG) $(notdir $<) + $(bin2o) #--------------------------------------------------------------------------------- -# rules for assembling GPU shaders +%.shbin.o %_shbin.h : %.shbin #--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $*.shbin) - $(eval DEPSFILE := $(DEPSDIR)/$*.shbin.d) - echo "$(CURBIN).o: $< $1" > $(DEPSFILE) - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $*.shbin.o -endef - -%.shbin.o %_shbin.h : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o %_shbin.h : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o %_shbin.h : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)$(file))) - -#--------------------------------------------------------------------------------- -%.t3x %.h : %.t3s -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @tex3ds -i $< -H $*.h -d $*.d -o $(TOPDIR)/$(GFXBUILD)/$*.t3x + $(SILENTMSG) $(notdir $<) + $(bin2o) -include $(DEPSDIR)/*.d