From 6bbd8514886e4ef295df08027a5b5d9903b2d8bd Mon Sep 17 00:00:00 2001 From: Luiz Pestana Date: Mon, 23 Aug 2021 15:43:20 -0300 Subject: [PATCH] Add a project template for the switch --- projects/switch-nx/Makefile | 219 ++++++++++++++++++ projects/switch-nx/icon.jpg | Bin 0 -> 7575 bytes .../switch-nx/romfs/resources/raylib_logo.png | Bin 0 -> 3672 bytes .../switch-nx/source/textures_logo_raylib.c | 63 +++++ 4 files changed, 282 insertions(+) create mode 100644 projects/switch-nx/Makefile create mode 100644 projects/switch-nx/icon.jpg create mode 100644 projects/switch-nx/romfs/resources/raylib_logo.png create mode 100644 projects/switch-nx/source/textures_logo_raylib.c diff --git a/projects/switch-nx/Makefile b/projects/switch-nx/Makefile new file mode 100644 index 000000000..592cf4b83 --- /dev/null +++ b/projects/switch-nx/Makefile @@ -0,0 +1,219 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITPRO)),) +$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=/devkitpro") +endif + +ifeq ($(strip $(RAYLIB_NX)),) +$(error "Please set RAYLIB_NX in your environment. export RAYLIB_NX=/raylib-nx") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITPRO)/libnx/switch_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 +# ROMFS is the directory containing data to be added to RomFS, relative to the Makefile (Optional) +# +# NO_ICON: if set to anything, do not use icon. +# NO_NACP: if set to anything, no .nacp file is generated. +# APP_TITLE is the name of the app stored in the .nacp file (Optional) +# APP_AUTHOR is the author of the app stored in the .nacp file (Optional) +# APP_VERSION is the version of the app stored in the .nacp file (Optional) +# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional) +# ICON is the filename of the icon (.jpg), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .jpg +# - icon.jpg +# - /default_icon.jpg +# +# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .json +# - config.json +# If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead +# of a homebrew executable (.nro). This is intended to be used for sysmodules. +# NACP building is skipped as well. +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source +DATA := data +INCLUDES := include +ROMFS := romfs + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE + +CFLAGS := -g -Wall -O2 -ffunction-sections \ + $(ARCH) $(DEFINES) + +CFLAGS += $(INCLUDE) -D__SWITCH__ + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lraylib -lEGL -lGLESv2 -lglapi -ldrm_nouveau -lnx -lm +# remove the next line if you dont need audio +LIBS += `$(PREFIX)pkg-config --libs sdl2` + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(PORTLIBS) $(LIBNX) + + +#--------------------------------------------------------------------------------- +# 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)) \ + $(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 +#--------------------------------------------------------------------------------- +export LD := $(CXX) + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) +export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) +export OFILES := $(OFILES_BIN) $(OFILES_SRC) +export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) + +export INCLUDE := -I$(RAYLIB_NX)/src $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := -L$(RAYLIB_NX)/src $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +ifeq ($(strip $(CONFIG_JSON)),) + jsons := $(wildcard *.json) + ifneq (,$(findstring $(TARGET).json,$(jsons))) + export APP_JSON := $(TOPDIR)/$(TARGET).json + else + ifneq (,$(findstring config.json,$(jsons))) + export APP_JSON := $(TOPDIR)/config.json + endif + endif +else + export APP_JSON := $(TOPDIR)/$(CONFIG_JSON) +endif + +ifeq ($(strip $(ICON)),) + icons := $(wildcard *.jpg) + ifneq (,$(findstring $(TARGET).jpg,$(icons))) + export APP_ICON := $(TOPDIR)/$(TARGET).jpg + else + ifneq (,$(findstring icon.jpg,$(icons))) + export APP_ICON := $(TOPDIR)/icon.jpg + endif + endif +else + export APP_ICON := $(TOPDIR)/$(ICON) +endif + +ifeq ($(strip $(NO_ICON)),) + export NROFLAGS += --icon=$(APP_ICON) +endif + +ifeq ($(strip $(NO_NACP)),) + export NROFLAGS += --nacp=$(CURDIR)/$(TARGET).nacp +endif + +ifneq ($(APP_TITLEID),) + export NACPFLAGS += --titleid=$(APP_TITLEID) +endif + +ifneq ($(ROMFS),) + export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS) +endif + +.PHONY: $(BUILD) clean all + +#--------------------------------------------------------------------------------- +all: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... +ifeq ($(strip $(APP_JSON)),) + @rm -fr $(BUILD) $(TARGET).nro $(TARGET).nacp $(TARGET).elf +else + @rm -fr $(BUILD) $(TARGET).nsp $(TARGET).nso $(TARGET).npdm $(TARGET).elf +endif + + +#--------------------------------------------------------------------------------- +else +.PHONY: all + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +ifeq ($(strip $(APP_JSON)),) + +all : $(OUTPUT).nro + +ifeq ($(strip $(NO_NACP)),) +$(OUTPUT).nro : $(OUTPUT).elf $(OUTPUT).nacp +else +$(OUTPUT).nro : $(OUTPUT).elf +endif + +else + +all : $(OUTPUT).nsp + +$(OUTPUT).nsp : $(OUTPUT).nso $(OUTPUT).npdm + +$(OUTPUT).nso : $(OUTPUT).elf + +endif + +$(OUTPUT).elf : $(OFILES) + +$(OFILES_SRC) : $(HFILES_BIN) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o %_bin.h : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- diff --git a/projects/switch-nx/icon.jpg b/projects/switch-nx/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7fa0af4b793d4f2a25a2018f609fc3d48023bf0b GIT binary patch literal 7575 zcmeHL2~bm6)_wumH$ep1WS1obn^ghX1CoF&A%KKMK*B002ne(dD2sp~kc1$ciXlJ( zL4>e_(1@~xMZ&(cBAe_gppA-T=UdG~(jE{8F} zmvw?{j1Uh)<7hyic#lZ<;Vqs@Hh~#g^ziQB70AK+zvvM;t zv$3&r{bU6(F&|=Ks#6jfaMXWbBR}6P1yV>ETUuvLpX*de*f$_|Ia`CTSp*%X=BC|z|DMs&d z!98Xi+fcSexv}#p?Hs$L8kl01vf$k{&9Y?rLraQO{|R#^$xarlGj}{US7Kgp|A%N{ z>7nwYEcsWI9Fzv+IZ;`>+$1nuz=`C8N1;+UWTvhsFfZl0Reg$)e=obo4X`nW2KU%r z6!#)UDe3_n%C7JPB@1{m4vUO}=wcAoTbj89|LaDV!B)f}#T`p6QLVh1p#l9uLREs= z*_*VGX&)|js9$$b0#Or4KCT74nP!i7_T z(EKPgvz-1=LlzY80Gr3!m04&K6=W`zrYnIl*zg~P{9&O27Nb=xQj!e%;NGF3ACq*K zT2?@<*9++xlZW+n0mMIG`Y$F>g!an$^_2a>_G5|`FD2Isx62Mm88U|dT^NsVY_nPn z$MxRWvKz%RM*bX_(LV=f?9YK2|8rmt)|r2ArhY%f2U+-M!2H|1`F%A1<;_7_{hCw1 zADjR3=AVzv|4ZJ0WC}Wl%eA1-bOz{38mlTMZAfC90JvH-jWBhg(%$?2259t%`F)Np zpUjHg^vw$0r*dN%ourYSKHZXfFuJFCK#CtVvqq#I18i~V{ey~DB-r(d^VpCR-6Vvq$ zay?HEhCt`HimE||!S$ge`ncxaNzgzr<_rTkHpBq#q678GF_zi5anFvbtLLjWN8#Ax zYnPG-1n%FnvN*kNWR=lMP89he1lV&al04^{u7=!eX*HC}+&ZyucBh|IYrk;>pQPol zeWQ^KKljF?!$tKhQe*7gb91e5*L_isUb=B{-lRsE_L2oG%$=jvtnZ^7;TJj|Wv*MhR98XQ94I%LZOrz4aOR$7miJO&2E~|oR=*wsA z%0E0VL~u_#UqS_|Pk8$rkA*dxO70|38NdwuRRh1+i~@xF5_SGn0ZVyUo(Vpv)}uTy zJen9&?l&%r8rVp1eNgGTeRTjU6*b}W)nXuDCZct92}-7>j{0k@yzsVvqsBX+{bjTO z$@Vrzd6T+27{5d+nfkIINWm za{JtK7d}73-^Fyu=1ReiTJ`Xwm@7h$>HeI~b)z>ZlyMIEC?Yj5i{cy60V!e5v6`tN zb_+#_v>`M~y0afeH)rWmPSiRp?<}h;ZC`v^LwWMSn`jjMnH<$k=CKQOVFcaM@Z$%GMPQzM$URI&dSJ%}1;-Z5_M?!uk+ z6knfb&!^k5Iqr`lYi_{q&s`9Ui(wtCfqg`yv?hAyY8vWCY0_Y2$moT~@BJKu34ZtT zkEeIe{}A55siG^Q!ww#ajXE3R&b-5VIcn5fPw&hG(HES*_z)YQ?&g1~wKV5!MPJef z1JtZd$kugrXwCThQ@_! zTYIrHfb&jSS)s4qFMvjvVe;R`U*xlps7k+=E;?#4P+NY^J9U~?{G8h5n_5>PO5!9J zun4k9^NF=siH7%6s(QL#MX4)wBxr;|7a*zviRLvDxYvK zGx-+FQ}}W3DZMhC(We8=irHc;cDrYT!3l3!4m5_cR⁣ky*EP=Iq2p` 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 B9Nz!{ literal 0 HcmV?d00001 diff --git a/projects/switch-nx/romfs/resources/raylib_logo.png b/projects/switch-nx/romfs/resources/raylib_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..15bbaa2f42d01ac30fb672d31ab00701e6c32895 GIT binary patch literal 3672 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 F{U1buITru` literal 0 HcmV?d00001 diff --git a/projects/switch-nx/source/textures_logo_raylib.c b/projects/switch-nx/source/textures_logo_raylib.c new file mode 100644 index 000000000..6cc00a778 --- /dev/null +++ b/projects/switch-nx/source/textures_logo_raylib.c @@ -0,0 +1,63 @@ +/******************************************************************************************* +* +* raylib [textures] example - Texture loading and drawing +* +* This example has been created using raylib 1.0 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2014 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include +#include "raylib.h" + +int main(void) +{ + // Init romfs if needed + romfsInit(); + + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 1280; + const int screenHeight = 720; + + InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture loading and drawing"); + + // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) + Texture2D texture = LoadTexture("romfs:/resources/raylib_logo.png"); // Texture loading + //--------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + // TODO: Update your variables here + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + DrawTexture(texture, screenWidth/2 - texture.width/2, screenHeight/2 - texture.height/2, WHITE); + + DrawText("this IS a texture!", 360, 370, 10, GRAY); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadTexture(texture); // Texture unloading + + CloseWindow(); // Close window and OpenGL context + + romfsExit(); // Close romfs + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file