mirror of
https://github.com/libretro/RetroArch.git
synced 2024-12-01 04:00:32 +00:00
410 lines
12 KiB
Makefile
410 lines
12 KiB
Makefile
TARGET := retroarch_3ds
|
|
LIBRETRO =
|
|
|
|
DEBUG = 0
|
|
GRIFFIN_BUILD = 1
|
|
WHOLE_ARCHIVE_LINK = 0
|
|
BIG_STACK = 0
|
|
BUILD_3DSX = 1
|
|
BUILD_CIA = 1
|
|
|
|
APP_TITLE = Retroarch 3DS
|
|
APP_DESCRIPTION = Retroarch 3DS
|
|
APP_AUTHOR = Team Libretro
|
|
APP_PRODUCT_CODE = RETROARCH-3DS
|
|
APP_UNIQUE_ID = 0xBAC00
|
|
APP_ICON = ctr/default.png
|
|
APP_BANNER = ctr/libretro_banner.png
|
|
APP_AUDIO = ctr/silent.wav
|
|
APP_CIA_RSF = ctr/tools/template-cia.rsf
|
|
APP_3DS_RSF = ctr/tools/template-3ds.rsf
|
|
|
|
|
|
ifeq ($(BIG_STACK),1)
|
|
CTR_STACK_SIZE = 0x400000
|
|
else
|
|
CTR_STACK_SIZE = 0x100000
|
|
endif
|
|
CTR_LINEAR_HEAP_SIZE = 0x600000
|
|
|
|
include ctr/Makefile.cores
|
|
|
|
|
|
OBJS :=
|
|
OBJS += gfx/drivers/ctr_sprite.o
|
|
|
|
ifeq ($(GRIFFIN_BUILD), 1)
|
|
OBJS += griffin/griffin.o
|
|
else
|
|
OBJS += libretro-common/file/file_extract.o
|
|
OBJS += performance.o
|
|
OBJS += libretro-common/compat/compat.o
|
|
OBJS += libretro-common/compat/compat_fnmatch.o
|
|
OBJS += libretro-common/memmap/memalign.o
|
|
OBJS += libretro-common/file/config_file.o
|
|
OBJS += libretro-common/file/config_file_userdata.o
|
|
OBJS += core_options.o
|
|
OBJS += cheats.o
|
|
OBJS += libretro-common/hash/rhash.o
|
|
OBJS += gfx/video_context_driver.o
|
|
OBJS += gfx/drivers_context/gfx_null_ctx.o
|
|
OBJS += gfx/image/image.o
|
|
OBJS += gfx/video_texture.o
|
|
OBJS += libretro-common/formats/tga/rtga.o
|
|
OBJS += libretro-common/formats/png/rpng.o
|
|
OBJS += libretro-common/formats/png/rpng_encode.o
|
|
OBJS += libretro-common/formats/bmp/rbmp_encode.o
|
|
OBJS += gfx/drivers/ctr_gfx.o
|
|
OBJS += gfx/drivers/nullgfx.o
|
|
OBJS += gfx/font_renderer_driver.o
|
|
OBJS += gfx/drivers_font_renderer/bitmapfont.o
|
|
OBJS += gfx/font_driver.o
|
|
OBJS += input/input_autodetect.o
|
|
OBJS += input/input_joypad_driver.o
|
|
OBJS += input/input_joypad.o
|
|
OBJS += input/input_hid_driver.o
|
|
OBJS += input/input_common.o
|
|
OBJS += input/input_keymaps.o
|
|
OBJS += input/input_remapping.o
|
|
OBJS += input/input_sensor.o
|
|
OBJS += input/keyboard_line.o
|
|
OBJS += input/drivers/ctr_input.o
|
|
OBJS += input/drivers_joypad/ctr_joypad.o
|
|
OBJS += input/autoconf/builtin_ctr.o
|
|
OBJS += input/drivers/nullinput.o
|
|
OBJS += input/drivers_joypad/null_joypad.o
|
|
OBJS += input/drivers_joypad/hid_joypad.o
|
|
OBJS += input/drivers_hid/null_hid.o
|
|
OBJS += gfx/video_state_tracker.o
|
|
OBJS += libretro-common/queues/fifo_buffer.o
|
|
OBJS += audio/audio_resampler_driver.o
|
|
OBJS += audio/drivers_resampler/sinc.o
|
|
OBJS += audio/drivers_resampler/nearest.o
|
|
OBJS += audio/drivers_resampler/cc_resampler.o
|
|
OBJS += camera/drivers/nullcamera.o
|
|
OBJS += location/drivers/nulllocation.o
|
|
OBJS += audio/drivers/ctr_audio.o
|
|
OBJS += audio/drivers/nullaudio.o
|
|
OBJS += gfx/video_driver.o
|
|
OBJS += gfx/video_common.o
|
|
OBJS += gfx/video_pixel_converter.o
|
|
OBJS += gfx/video_viewport.o
|
|
OBJS += input/input_driver.o
|
|
OBJS += audio/audio_driver.o
|
|
OBJS += camera/camera_driver.o
|
|
OBJS += location/location_driver.o
|
|
OBJS += menu/menu_driver.o
|
|
OBJS += driver.o
|
|
OBJS += libretro-common/gfx/scaler/scaler_filter.o
|
|
OBJS += libretro-common/gfx/scaler/pixconv.o
|
|
OBJS += libretro-common/gfx/scaler/scaler.o
|
|
OBJS += libretro-common/gfx/scaler/scaler_int.o
|
|
OBJS += gfx/video_filters/2xsai.o
|
|
OBJS += gfx/video_filters/super2xsai.o
|
|
OBJS += gfx/video_filters/supereagle.o
|
|
OBJS += gfx/video_filters/2xbr.o
|
|
OBJS += gfx/video_filters/darken.o
|
|
OBJS += gfx/video_filters/epx.o
|
|
OBJS += gfx/video_filters/scale2x.o
|
|
OBJS += gfx/video_filters/blargg_ntsc_snes.o
|
|
OBJS += gfx/video_filters/lq2x.o
|
|
OBJS += gfx/video_filters/phosphor2x.o
|
|
OBJS += audio/audio_filters/echo.o
|
|
OBJS += audio/audio_filters/eq.o
|
|
OBJS += audio/audio_filters/chorus.o
|
|
OBJS += audio/audio_filters/iir.o
|
|
OBJS += audio/audio_filters/panning.o
|
|
OBJS += audio/audio_filters/phaser.o
|
|
OBJS += audio/audio_filters/reverb.o
|
|
OBJS += audio/audio_filters/wahwah.o
|
|
OBJS += libretro-common/dynamic/dylib.o
|
|
OBJS += dynamic.o
|
|
OBJS += gfx/video_filter.o
|
|
OBJS += audio/audio_dsp_filter.o
|
|
OBJS += cores/dynamic_dummy.o
|
|
OBJS += content.o
|
|
OBJS += libretro-common/file/file_path.o
|
|
OBJS += file_path_special.o
|
|
OBJS += libretro-common/file/dir_list.o
|
|
OBJS += libretro-common/file/retro_dirent.o
|
|
OBJS += libretro-common/file/retro_file.o
|
|
OBJS += dir_list_special.o
|
|
OBJS += libretro-common/string/string_list.o
|
|
OBJS += libretro-common/string/stdstring.o
|
|
OBJS += file_ops.o
|
|
OBJS += libretro-common/file/nbio/nbio_stdio.o
|
|
OBJS += libretro-common/file/file_list.o
|
|
OBJS += libretro-common/queues/message_queue.o
|
|
OBJS += patch.o
|
|
OBJS += configuration.o
|
|
OBJS += rewind.o
|
|
OBJS += frontend/frontend_driver.o
|
|
OBJS += frontend/drivers/platform_ctr.o
|
|
OBJS += frontend/drivers/platform_null.o
|
|
OBJS += core_info.o
|
|
OBJS += ui/ui_companion_driver.o
|
|
OBJS += ui/drivers/ui_null.o
|
|
OBJS += frontend/frontend.o
|
|
OBJS += libretro_version_1.o
|
|
OBJS += retroarch.o
|
|
OBJS += retroarch_info.o
|
|
OBJS += runloop.o
|
|
OBJS += runloop_data.o
|
|
OBJS += runloop_msg.o
|
|
OBJS += system.o
|
|
OBJS += msg_hash.o
|
|
OBJS += intl/msg_hash_de.o
|
|
OBJS += intl/msg_hash_es.o
|
|
OBJS += intl/msg_hash_eo.o
|
|
OBJS += intl/msg_hash_fr.o
|
|
OBJS += intl/msg_hash_it.o
|
|
OBJS += intl/msg_hash_nl.o
|
|
OBJS += intl/msg_hash_pt.o
|
|
OBJS += intl/msg_hash_pl.o
|
|
OBJS += intl/msg_hash_us.o
|
|
OBJS += movie.o
|
|
OBJS += record/record_driver.o
|
|
OBJS += record/drivers/record_null.o
|
|
OBJS += tasks/task_file_transfer.o
|
|
OBJS += screenshot.o
|
|
OBJS += playlist.o
|
|
OBJS += menu/menu.o
|
|
OBJS += menu/menu_hash.o
|
|
OBJS += menu/menu_input.o
|
|
OBJS += menu/menu_entry.o
|
|
OBJS += menu/menu_entries.o
|
|
OBJS += menu/menu_setting.o
|
|
OBJS += menu/menu_list.o
|
|
OBJS += menu/menu_cbs.o
|
|
OBJS += menu/menu_video.o
|
|
OBJS += menu/cbs/menu_cbs_ok.o
|
|
OBJS += menu/cbs/menu_cbs_cancel.o
|
|
OBJS += menu/cbs/menu_cbs_select.o
|
|
OBJS += menu/cbs/menu_cbs_start.o
|
|
OBJS += menu/cbs/menu_cbs_info.o
|
|
OBJS += menu/cbs/menu_cbs_refresh.o
|
|
OBJS += menu/cbs/menu_cbs_left.o
|
|
OBJS += menu/cbs/menu_cbs_right.o
|
|
OBJS += menu/cbs/menu_cbs_title.o
|
|
OBJS += menu/cbs/menu_cbs_deferred_push.o
|
|
OBJS += menu/cbs/menu_cbs_scan.o
|
|
OBJS += menu/cbs/menu_cbs_get_value.o
|
|
OBJS += menu/menu_iterate.o
|
|
OBJS += menu/cbs/menu_cbs_up.o
|
|
OBJS += menu/cbs/menu_cbs_down.o
|
|
OBJS += menu/cbs/menu_cbs_contentlist_switch.o
|
|
OBJS += menu/menu_shader.o
|
|
OBJS += menu/menu_navigation.o
|
|
OBJS += menu/menu_display.o
|
|
OBJS += menu/menu_displaylist.o
|
|
OBJS += menu/menu_animation.o
|
|
OBJS += menu/intl/menu_hash_de.o
|
|
OBJS += menu/intl/menu_hash_es.o
|
|
OBJS += menu/intl/menu_hash_eo.o
|
|
OBJS += menu/intl/menu_hash_fr.o
|
|
OBJS += menu/intl/menu_hash_it.o
|
|
OBJS += menu/intl/menu_hash_nl.o
|
|
OBJS += menu/intl/menu_hash_pl.o
|
|
OBJS += menu/intl/menu_hash_pt.o
|
|
OBJS += menu/intl/menu_hash_us.o
|
|
OBJS += menu/drivers/null.o
|
|
OBJS += menu/drivers/rgui.o
|
|
OBJS += command_event.o
|
|
OBJS += deps/zlib/adler32.o
|
|
OBJS += deps/zlib/compress.o
|
|
OBJS += deps/zlib/crc32.o
|
|
OBJS += deps/zlib/deflate.o
|
|
OBJS += deps/zlib/gzclose.o
|
|
OBJS += deps/zlib/gzlib.o
|
|
OBJS += deps/zlib/gzread.o
|
|
OBJS += deps/zlib/gzwrite.o
|
|
OBJS += deps/zlib/inffast.o
|
|
OBJS += deps/zlib/inflate.o
|
|
OBJS += deps/zlib/inftrees.o
|
|
OBJS += deps/zlib/trees.o
|
|
OBJS += deps/zlib/uncompr.o
|
|
OBJS += deps/zlib/zutil.o
|
|
OBJS += deps/zlib/ioapi.o
|
|
OBJS += deps/zlib/unzip.o
|
|
OBJS += audio/audio_utils.o
|
|
endif
|
|
|
|
|
|
ifeq ($(strip $(DEVKITARM)),)
|
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
|
endif
|
|
|
|
ifeq ($(strip $(CTRULIB)),)
|
|
$(error "Please set CTRULIB in your environment. export CTRULIB=<path to>ctrulib")
|
|
endif
|
|
|
|
ifeq ($(strip $(AEMSTRO)),)
|
|
$(error "Please set AEMSTRO in your environment. export AEMSTRO=<path to>aemstro")
|
|
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)
|
|
|
|
|
|
INCDIRS := -I$(CTRULIB)/include
|
|
LIBDIRS := -L. -L$(CTRULIB)/lib
|
|
|
|
|
|
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp
|
|
|
|
CFLAGS += -mword-relocations \
|
|
-fomit-frame-pointer -ffast-math \
|
|
$(ARCH)
|
|
|
|
#CFLAGS += -Wall
|
|
CFLAGS += -DARM11 -D_3DS
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CFLAGS += -O0 -g
|
|
else
|
|
CFLAGS += -O3
|
|
endif
|
|
|
|
ifeq ($(WHOLE_ARCHIVE_LINK), 1)
|
|
WHOLE_START := -Wl,--whole-archive
|
|
WHOLE_END := -Wl,--no-whole-archive
|
|
endif
|
|
|
|
ifneq ($(CTR_STACK_SIZE),)
|
|
CFLAGS += -DCTR_STACK_SIZE=$(CTR_STACK_SIZE)
|
|
endif
|
|
|
|
ifneq ($(CTR_LINEAR_HEAP_SIZE),)
|
|
CFLAGS += -DCTR_LINEAR_HEAP_SIZE=$(CTR_LINEAR_HEAP_SIZE)
|
|
endif
|
|
|
|
CFLAGS += -I. -Ideps/zlib -Ideps/7zip -Ilibretro-common/include
|
|
|
|
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE -DSINC_LOWEST_QUALITY
|
|
CFLAGS += -DHAVE_GRIFFIN=1 -DHAVE_FILTERS_BUILTIN -DHAVE_MENU -DHAVE_RGUI
|
|
CFLAGS += -DHAVE_ZLIB -DHAVE_RPNG -DWANT_ZLIB -DHAVE_BUILTIN_AUTOCONFIG
|
|
#-DHAVE_LIBRETRO_MANAGEMENT -DWANT_RPNG -DHAVE_7ZIP
|
|
|
|
|
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
|
|
|
|
ASFLAGS := -g $(ARCH) -O3
|
|
LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
|
|
|
CFLAGS += -std=gnu99 -ffast-math
|
|
|
|
|
|
LIBS := $(WHOLE_START) -lretro_ctr $(WHOLE_END) -lctru -lm
|
|
|
|
|
|
ifeq ($(BUILD_3DSX), 1)
|
|
TARGET_3DSX := $(TARGET).3dsx $(TARGET).smdh
|
|
endif
|
|
|
|
ifeq ($(BUILD_CIA), 1)
|
|
TARGET_CIA := $(TARGET).cia
|
|
endif
|
|
|
|
.PHONY: $(BUILD) clean all
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(TARGET_3DSX) $(TARGET_CIA)
|
|
$(TARGET).3dsx: $(TARGET).elf
|
|
$(TARGET).elf: $(OBJS) libretro_ctr.a
|
|
|
|
ctr_sprite_shader_shbin.h: gfx/drivers/ctr_sprite.o
|
|
gfx/drivers/ctr_gfx.c: ctr_sprite_shader_shbin.h
|
|
griffin/griffin.o: gfx/drivers/ctr_gfx.c
|
|
|
|
|
|
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)
|
|
|
|
ifneq ($(findstring Linux,$(shell uname -a)),)
|
|
MAKEROM = ctr/tools/makerom-linux
|
|
BANNERTOOL = ctr/tools/bannertool-linux
|
|
else ifneq ($(findstring Darwin,$(shell uname -a)),)
|
|
MAKEROM = ctr/tools/makerom-mac
|
|
BANNERTOOL = ctr/tools/bannertool-mac
|
|
else
|
|
MAKEROM = ctr/tools/makerom.exe
|
|
BANNERTOOL = ctr/tools/bannertool.exe
|
|
endif
|
|
|
|
|
|
%.o: %.shader
|
|
python $(AEMSTRO)/aemstro_as.py $< $(notdir $<).shbin
|
|
$(DEVKITARM)/bin/bin2s $(notdir $<).shbin | $(PREFIX)as -o $@
|
|
echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(notdir $<).shbin | tr . _)`.h
|
|
echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(notdir $<).shbin | tr . _)`.h
|
|
echo "extern const u32" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(notdir $<).shbin | tr . _)`.h
|
|
rm $(notdir $<).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:
|
|
|
|
%.smdh: $(APP_ICON)
|
|
smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
|
|
|
|
%.3dsx: %.elf
|
|
-3dsxtool $< $@ $(_3DSXFLAGS)
|
|
|
|
%.elf:
|
|
$(LD) $(LDFLAGS) $(OBJS) $(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)_stripped.elf: $(TARGET).elf
|
|
cp $(TARGET).elf $@
|
|
$(STRIP) $@
|
|
|
|
$(TARGET).cia: $(TARGET)_stripped.elf $(TARGET).bnr $(TARGET).icn
|
|
$(MAKEROM) -f cia -o $@ -rsf $(APP_CIA_RSF) -target t -exefslogo -elf $(TARGET)_stripped.elf -icon $(TARGET).icn -banner $(TARGET).bnr -DAPP_TITLE="$(APP_TITLE)" -DAPP_PRODUCT_CODE="$(APP_PRODUCT_CODE)" -DAPP_UNIQUE_ID=$(APP_UNIQUE_ID)
|
|
|
|
clean:
|
|
rm -f $(OBJS)
|
|
rm -f $(TARGET).3dsx
|
|
rm -f $(TARGET).elf
|
|
rm -f $(TARGET)_stripped.elf
|
|
rm -f $(TARGET).cia
|
|
rm -f $(TARGET).bnr
|
|
rm -f $(TARGET).icn
|
|
rm -f *_shader_shbin.h
|
|
|
|
.PHONY: clean
|
|
|