mirror of
https://github.com/libretro/RetroArch
synced 2025-01-29 00:32:49 +00:00
fb6fe1a87c
This fixes a few subtle problems with passing CFLAGS and CXXFLAGS as environment variables for configure. First it will now only add these variables to config.mk when they are actually set. If they are unset then the default optimizations in the Makefile are set. This avoids passing more than one conflicting optimization level to the compiler. Next all CFLAGS are added to CXXFLAGS to avoid issues with forgetting to set both CFLAGS and CXXFLAGS. This results in the cxx compiler getting passed several redundant optimization levels when both the CFLAGS and CXXFLAGS environment variabls are used. Now these uses of CFLAGS in Makefile.common are set to DEF_FLAGS. This allows adding $(DEF_FLAGS) to the CXXFLAGS variable without adding redundant flags from CFLAGS. v2: Update other build files.
288 lines
7.2 KiB
Makefile
288 lines
7.2 KiB
Makefile
TARGET := retroarch_3ds
|
|
LIBRETRO =
|
|
|
|
DEBUG = 0
|
|
GRIFFIN_BUILD = 1
|
|
WHOLE_ARCHIVE_LINK = 0
|
|
BUILD_3DSX = 1
|
|
BUILD_3DS = 0
|
|
BUILD_CIA = 1
|
|
LIBCTRU_NO_DEPRECATION = 1
|
|
|
|
APP_TITLE = RetroArch 3DS
|
|
APP_DESCRIPTION = RetroArch 3DS
|
|
APP_AUTHOR = Team Libretro
|
|
APP_PRODUCT_CODE = RETROARCH-3DS
|
|
APP_UNIQUE_ID = 0xBAC00
|
|
APP_ICON = pkg/ctr/assets/default.png
|
|
APP_BANNER = pkg/ctr/assets/libretro_banner.png
|
|
APP_AUDIO = pkg/ctr/assets/silent.wav
|
|
APP_RSF = pkg/ctr/tools/template.rsf
|
|
APP_SYSTEM_MODE = 64MB
|
|
APP_SYSTEM_MODE_EXT = 124MB
|
|
APP_BIG_TEXT_SECTION = 0
|
|
APP_USE_SVCHAX = 0
|
|
|
|
include pkg/ctr/Makefile.cores
|
|
|
|
OBJ :=
|
|
OBJ += gfx/drivers/ctr_shaders/ctr_sprite.o
|
|
OBJ += ctr/ctr_system.o
|
|
OBJ += ctr/ctr_memory.o
|
|
OBJ += ctr/ctr_linear.o
|
|
OBJ += ctr/gpu_old.o
|
|
OBJ += ctr/exec-3dsx/exec_cia.o \
|
|
ctr/exec-3dsx/exec_3dsx.o \
|
|
ctr/exec-3dsx/mini-hb-menu/launch.o \
|
|
ctr/exec-3dsx/mini-hb-menu/loaders/rosalina.o \
|
|
ctr/exec-3dsx/mini-hb-menu/loaders/hax2.o \
|
|
ctr/exec-3dsx/mini-hb-menu/loaders/ninjhax1.o
|
|
|
|
ifeq ($(APP_BIG_TEXT_SECTION), 1)
|
|
APP_USE_SVCHAX = 1
|
|
LDFLAGS += -Wl,--defsym,__ctr_patch_services=__service_ptr
|
|
endif
|
|
|
|
ifeq ($(APP_USE_SVCHAX), 1)
|
|
OBJ += ctr/ctr_svchax.o
|
|
endif
|
|
|
|
DEFINES :=
|
|
ifeq ($(GRIFFIN_BUILD), 1)
|
|
OBJ += griffin/griffin.o
|
|
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
|
|
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB
|
|
#DEFINES += -DHAVE_NETWORKING -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_SOCKET_LEGACY -DHAVE_THREADS
|
|
#-DHAVE_SSL -DHAVE_BUILTINMBEDTLS -DMBEDTLS_SSL_DEBUG_ALL
|
|
#ssl is currently incompatible with griffin due to use of the "static" flag on repeating functions that will conflict when included in one file
|
|
else
|
|
HAVE_CC_RESAMPLER = 1
|
|
HAVE_MENU_COMMON = 1
|
|
HAVE_RTGA = 1
|
|
HAVE_RPNG = 1
|
|
HAVE_RJPEG = 1
|
|
HAVE_RBMP = 1
|
|
HAVE_RGUI = 1
|
|
HAVE_ZLIB = 1
|
|
HAVE_7ZIP = 1
|
|
HAVE_BUILTINZLIB = 1
|
|
HAVE_LIBRETRODB = 1
|
|
HAVE_ZARCH = 0
|
|
HAVE_MATERIALUI = 1
|
|
HAVE_XMB = 1
|
|
HAVE_STATIC_VIDEO_FILTERS = 1
|
|
HAVE_STATIC_AUDIO_FILTERS = 1
|
|
#HAVE_NETWORKING = 1
|
|
#HAVE_CHEEVOS = 1
|
|
#HAVE_SOCKET_LEGACY = 1
|
|
#HAVE_THREADS = 1
|
|
#HAVE_SSL = 1
|
|
#HAVE_BUILTINMBEDTLS = 1
|
|
|
|
include Makefile.common
|
|
CFLAGS += $(DEF_FLAGS)
|
|
BLACKLIST :=
|
|
BLACKLIST += input/input_overlay.o
|
|
BLACKLIST += tasks/task_overlay.o
|
|
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
|
|
endif
|
|
|
|
ifeq ($(strip $(DEVKITPRO)),)
|
|
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitpro")
|
|
endif
|
|
|
|
ifeq ($(strip $(CTRULIB)),)
|
|
CTRULIB = $(DEVKITPRO)/libctru
|
|
endif
|
|
|
|
APP_TITLE := $(shell echo "$(APP_TITLE)" | cut -c1-128)
|
|
APP_DESCRIPTION := $(shell echo "$(APP_DESCRIPTION)" | cut -c1-256)
|
|
APP_AUTHOR := $(shell echo "$(APP_AUTHOR)" | cut -c1-128)
|
|
APP_PRODUCT_CODE := $(shell echo $(APP_PRODUCT_CODE) | cut -c1-16)
|
|
APP_UNIQUE_ID := $(shell echo $(APP_UNIQUE_ID) | cut -c1-7)
|
|
|
|
MAKEROM_ARGS_COMMON = -rsf $(APP_RSF) -exefslogo -elf $(TARGET).elf -icon $(TARGET).icn -banner $(TARGET).bnr -DAPP_TITLE="$(APP_TITLE)" -DAPP_PRODUCT_CODE="$(APP_PRODUCT_CODE)" -DAPP_UNIQUE_ID=$(APP_UNIQUE_ID) -DAPP_SYSTEM_MODE=$(APP_SYSTEM_MODE) -DAPP_SYSTEM_MODE_EXT=$(APP_SYSTEM_MODE_EXT)
|
|
|
|
INCDIRS := -I$(CTRULIB)/include
|
|
LIBDIRS := -L. -L$(CTRULIB)/lib
|
|
|
|
|
|
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft
|
|
|
|
CFLAGS += -mword-relocations \
|
|
-fomit-frame-pointer -ffast-math \
|
|
-Werror=implicit-function-declaration \
|
|
$(ARCH)
|
|
|
|
#CFLAGS += -Wall
|
|
CFLAGS += -DARM11 -D_3DS
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CFLAGS += -O0 -g
|
|
else
|
|
CFLAGS += -O3
|
|
endif
|
|
|
|
ifeq ($(LIBCTRU_NO_DEPRECATION), 1)
|
|
CFLAGS += -DLIBCTRU_NO_DEPRECATION
|
|
endif
|
|
|
|
ifeq ($(WHOLE_ARCHIVE_LINK), 1)
|
|
WHOLE_START := -Wl,--whole-archive
|
|
WHOLE_END := -Wl,--no-whole-archive
|
|
endif
|
|
|
|
CFLAGS += -I. \
|
|
-Ideps \
|
|
-Ideps/libz \
|
|
-Ideps/7zip \
|
|
-Ideps/stb \
|
|
-Ideps/rcheevos/include \
|
|
-Ilibretro-common/include
|
|
|
|
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
|
|
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)
|
|
|
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
|
|
|
|
ASFLAGS := -g $(ARCH) -O3
|
|
LDFLAGS += -specs=ctr/3dsx_custom.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
|
|
|
CFLAGS += -std=gnu99 -ffast-math
|
|
|
|
|
|
LIBS := $(WHOLE_START) -lretro_ctr $(WHOLE_END) -lm
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
LIBS += -lctrud
|
|
else
|
|
LIBS += -lctru
|
|
endif
|
|
|
|
|
|
ifeq ($(BUILD_3DSX), 1)
|
|
TARGET_3DSX := $(TARGET).3dsx $(TARGET).smdh
|
|
endif
|
|
|
|
ifeq ($(BUILD_3DS), 1)
|
|
TARGET_3DS := $(TARGET).3ds
|
|
endif
|
|
|
|
ifeq ($(BUILD_CIA), 1)
|
|
TARGET_CIA := $(TARGET).cia
|
|
endif
|
|
|
|
.PHONY: $(BUILD) clean all
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(TARGET_3DSX) $(TARGET_3DS) $(TARGET_CIA)
|
|
$(TARGET).3dsx: $(TARGET).elf
|
|
$(TARGET).elf: $(OBJ) libretro_ctr.a
|
|
|
|
PREFIX := $(DEVKITARM)/bin/arm-none-eabi-
|
|
|
|
CC := $(PREFIX)gcc
|
|
CXX := $(PREFIX)g++
|
|
AS := $(PREFIX)as
|
|
AR := $(PREFIX)ar
|
|
OBJCOPY := $(PREFIX)objcopy
|
|
STRIP := $(PREFIX)strip
|
|
NM := $(PREFIX)nm
|
|
LD := $(CXX)
|
|
|
|
ifeq ($(strip $(CTRBANNERTOOL)),)
|
|
ifneq ($(findstring Linux,$(shell uname)),)
|
|
BANNERTOOL = pkg/ctr/tools/bannertool-linux
|
|
else ifneq ($(findstring Darwin,$(shell uname)),)
|
|
BANNERTOOL = pkg/ctr/tools/bannertool-mac
|
|
else
|
|
BANNERTOOL = pkg/ctr/tools/bannertool.exe
|
|
endif
|
|
else
|
|
BANNERTOOL = $(CTRBANNERTOOL)
|
|
endif
|
|
|
|
ifeq ($(strip $(CTRMAKEROM)),)
|
|
ifneq ($(findstring Linux,$(shell uname)),)
|
|
MAKEROM = pkg/ctr/tools/makerom-linux
|
|
else ifneq ($(findstring Darwin,$(shell uname)),)
|
|
MAKEROM = pkg/ctr/tools/makerom-mac
|
|
else
|
|
MAKEROM = pkg/ctr/tools/makerom.exe
|
|
endif
|
|
else
|
|
MAKEROM = $(CTRMAKEROM)
|
|
endif
|
|
|
|
%.o: %.vsh %.gsh
|
|
$(DEVKITARM)/bin/picasso $^ -o $*.shbin
|
|
$(DEVKITARM)/bin/bin2s $*.shbin | $(PREFIX)as -o $@
|
|
rm $*.shbin
|
|
|
|
%.o: %.vsh
|
|
$(DEVKITARM)/bin/picasso $^ -o $*.shbin
|
|
$(DEVKITARM)/bin/bin2s $*.shbin | $(PREFIX)as -o $@
|
|
rm $*.shbin
|
|
|
|
%.o: %.cpp
|
|
$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS)
|
|
|
|
%.o: %.c
|
|
$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS)
|
|
|
|
%.o: %.s
|
|
$(CC) -c -o $@ $< $(ASFLAGS)
|
|
|
|
%.o: %.S
|
|
$(CC) -c -o $@ $< $(ASFLAGS)
|
|
|
|
%.a:
|
|
$(AR) -rc $@ $^
|
|
|
|
%.vsh:
|
|
|
|
$(TARGET).smdh: $(APP_ICON)
|
|
$(DEVKITARM)/bin/smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
|
|
|
|
$(TARGET).3dsx: $(TARGET).elf
|
|
ifeq ($(APP_BIG_TEXT_SECTION), 1)
|
|
cp pkg/ctr/big_text_section.xml $(TARGET).xml
|
|
else
|
|
rm -f $(TARGET).xml
|
|
endif
|
|
$(DEVKITARM)/bin/3dsxtool $< $@ $(_3DSXFLAGS)
|
|
|
|
$(TARGET).elf: ctr/3dsx_custom_crt0.o
|
|
$(LD) $(LDFLAGS) $(OBJ) $(LIBDIRS) $(LIBS) -o $@
|
|
$(NM) -CSn $@ > $(notdir $*.lst)
|
|
|
|
$(TARGET).bnr: $(APP_BANNER) $(APP_AUDIO)
|
|
$(BANNERTOOL) makebanner -i "$(APP_BANNER)" -a "$(APP_AUDIO)" -o $@
|
|
|
|
$(TARGET).icn: $(APP_ICON)
|
|
$(BANNERTOOL) makesmdh -s "$(APP_TITLE)" -l "$(APP_TITLE)" -p "$(APP_AUTHOR)" -i $(APP_ICON) -o $@
|
|
|
|
$(TARGET).3ds: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)
|
|
$(MAKEROM) -f cci -o $@ $(MAKEROM_ARGS_COMMON) -DAPP_ENCRYPTED=true
|
|
|
|
$(TARGET).cia: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)
|
|
$(MAKEROM) -f cia -o $@ $(MAKEROM_ARGS_COMMON) -DAPP_ENCRYPTED=false
|
|
|
|
|
|
clean:
|
|
rm -f $(OBJ)
|
|
rm -f $(TARGET).3dsx
|
|
rm -f $(TARGET).elf
|
|
rm -f $(TARGET).3ds
|
|
rm -f $(TARGET).cia
|
|
rm -f $(TARGET).smdh
|
|
rm -f $(TARGET).bnr
|
|
rm -f $(TARGET).icn
|
|
rm -f ctr/ctr_config_*.o
|
|
rm -f ctr/3dsx_custom_crt0.o
|
|
|
|
.PHONY: clean
|
|
|
|
|