TARGET := retroarch_wiiu BUILD_HBL_ELF = 1 BUILD_RPX = 1 DEBUG = 0 GRIFFIN_BUILD = 0 WHOLE_ARCHIVE_LINK = 0 PC_DEVELOPMENT_IP_ADDRESS ?= PC_DEVELOPMENT_TCP_PORT ?= OBJ := OBJ += wiiu/system/memory.o OBJ += wiiu/system/exception_handler.o OBJ += wiiu/system/missing_libc_functions.o OBJ += wiiu/fs/sd_fat_devoptab.o OBJ += wiiu/fs/fs_utils.o OBJ += wiiu/controller_patcher/ControllerPatcher.o OBJ += wiiu/controller_patcher/ControllerPatcherWrapper.o OBJ += wiiu/controller_patcher/ConfigReader.o OBJ += wiiu/controller_patcher/config/ConfigParser.o OBJ += wiiu/controller_patcher/config/ConfigValues.o OBJ += wiiu/controller_patcher/network/ControllerPatcherNet.o OBJ += wiiu/controller_patcher/network/TCPServer.o OBJ += wiiu/controller_patcher/network/UDPClient.o OBJ += wiiu/controller_patcher/network/UDPServer.o OBJ += wiiu/controller_patcher/patcher/ControllerPatcherUtils.o OBJ += wiiu/controller_patcher/patcher/ControllerPatcherHID.o OBJ += wiiu/controller_patcher/utils/CPRetainVars.o OBJ += wiiu/controller_patcher/utils/CPStringTools.o OBJ += wiiu/controller_patcher/utils/PadConst.o OBJ += wiiu/controller_patcher/utils/FSHelper.o OBJ += wiiu/tex_shader.o OBJ += wiiu/hbl.o DEFINES := ifeq ($(GRIFFIN_BUILD), 1) OBJ += griffin/griffin.o DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_LIBRETRODB DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_CC_RESAMPLER DEFINES += -DHAVE_STB_FONT -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DHAVE_LIBRETRODB -DHAVE_NETWORKING # DEFINES += -DWANT_IFADDRS # DEFINES += -DHAVE_FREETYPE DEFINES += -DHAVE_XMB -DHAVE_MATERIALUI else 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_KEYMAPPER = 1 HAVE_LIBRETRODB = 1 HAVE_ZARCH = 0 HAVE_MATERIALUI = 1 HAVE_XMB = 1 HAVE_STB_FONT = 1 # HAVE_FREETYPE = 1 HAVE_LANGEXTRA = 1 HAVE_LIBRETRODB = 1 HAVE_NETWORKING = 1 HAVE_CHEEVOS = 1 # WANT_IFADDRS = 1 include Makefile.common BLACKLIST := BLACKLIST += input/input_overlay.o BLACKLIST += tasks/task_overlay.o BLACKLIST += $(LIBRETRO_COMM_DIR)/net/net_ifinfo.o OBJ := $(filter-out $(BLACKLIST),$(OBJ)) OBJ += gfx/drivers/wiiu_gfx.o OBJ += gfx/drivers_font/wiiu_font.o OBJ += menu/drivers_display/menu_display_wiiu.o OBJ += input/drivers/wiiu_input.o OBJ += input/drivers_joypad/wiiu_joypad.o OBJ += audio/drivers/wiiu_audio.o OBJ += frontend/drivers/platform_wiiu.o OBJ += gfx/video_filters/2xsai.o OBJ += gfx/video_filters/super2xsai.o OBJ += gfx/video_filters/supereagle.o OBJ += gfx/video_filters/2xbr.o OBJ += gfx/video_filters/darken.o OBJ += gfx/video_filters/epx.o OBJ += gfx/video_filters/scale2x.o OBJ += gfx/video_filters/blargg_ntsc_snes.o OBJ += gfx/video_filters/lq2x.o OBJ += gfx/video_filters/phosphor2x.o OBJ += libretro-common/audio/dsp_filters/echo.o OBJ += libretro-common/audio/dsp_filters/eq.o OBJ += libretro-common/audio/dsp_filters/chorus.o OBJ += libretro-common/audio/dsp_filters/iir.o OBJ += libretro-common/audio/dsp_filters/panning.o OBJ += libretro-common/audio/dsp_filters/phaser.o OBJ += libretro-common/audio/dsp_filters/reverb.o OBJ += libretro-common/audio/dsp_filters/wahwah.o endif DEFINES += -DHAVE_KEYMAPPER ifeq ($(strip $(DEVKITPPC)),) $(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC") endif ifeq ($(strip $(DEVKITPRO)),) $(error "Please set DEVKITPRO in your environment. export DEVKITPRO=devkitPRO") endif export PATH := $(PATH):$(DEVKITPPC)/bin PREFIX := powerpc-eabi- CC := $(PREFIX)gcc CXX := $(PREFIX)g++ AS := $(PREFIX)as AR := $(PREFIX)ar OBJCOPY := $(PREFIX)objcopy STRIP := $(PREFIX)strip NM := $(PREFIX)nm LD := $(CXX) ELF2RPL := wiiu/wut/elf2rpl/elf2rpl ifneq ($(findstring Linux,$(shell uname -a)),) else ifneq ($(findstring Darwin,$(shell uname -a)),) else ELF2RPL := $(ELF2RPL).exe endif INCDIRS := -I. -Ideps/libz -Ideps/7zip -Ilibretro-common/include -Iwiiu -Iwiiu/include -I$(DEVKITPRO)/portlibs/ppc/include LIBDIRS := -L. -L$(DEVKITPRO)/portlibs/ppc/lib CFLAGS := -mwup -mcpu=750 -meabi -mhard-float LDFLAGS := ifeq ($(DEBUG), 1) CFLAGS += -O0 -g else CFLAGS += -O3 endif LDFLAGS := $(CFLAGS) ASFLAGS := $(CFLAGS) -mregnames CFLAGS += -ffast-math -Werror=implicit-function-declaration #CFLAGS += -fomit-frame-pointer -mword-relocations #CFLAGS += -Wall #todo: remove -DWIIU and use the built-in macros instead (HW_WUP or __wiiu__). CFLAGS += -DWIIU -DMSB_FIRST CFLAGS += -DHAVE_MAIN CFLAGS += -DHAVE_UPDATE_ASSETS CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES) ifneq ($(PC_DEVELOPMENT_IP_ADDRESS),) CFLAGS += -DPC_DEVELOPMENT_IP_ADDRESS='"$(PC_DEVELOPMENT_IP_ADDRESS)"' endif ifneq ($(PC_DEVELOPMENT_TCP_PORT),) CFLAGS += -DPC_DEVELOPMENT_TCP_PORT=$(PC_DEVELOPMENT_TCP_PORT) endif ifeq ($(WHOLE_ARCHIVE_LINK), 1) WHOLE_START := -Wl,--whole-archive WHOLE_END := -Wl,--no-whole-archive endif CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -D_GNU_SOURCE LDFLAGS += -Wl,--gc-sections LIBS := $(WHOLE_START) -lretro_wiiu $(WHOLE_END) -lm -lfat -liosuhax RPX_OBJ = wiiu/system/stubs_rpl.o HBL_ELF_OBJ = wiiu/system/dynamic.o wiiu/system/stubs_elf.o RPX_LDFLAGS := -pie -fPIE RPX_LDFLAGS += -z common-page-size=64 -z max-page-size=64 RPX_LDFLAGS += -T wiiu/link_rpl.ld RPX_LDFLAGS += -nostartfiles HBL_ELF_LDFLAGS := -T wiiu/link_elf.ld TARGETS := ifeq ($(BUILD_RPX), 1) TARGETS += $(TARGET).rpx endif ifeq ($(BUILD_HBL_ELF), 1) TARGETS += $(TARGET).elf endif DEPFLAGS = -MT $@ -MMD -MP -MF $*.Tdepend POSTCOMPILE = mv -f $*.Tdepend $*.depend all: $(TARGETS) %.o: %.cpp %.o: %.cpp %.depend $(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS) $(DEPFLAGS) $(POSTCOMPILE) %.o: %.c %.o: %.c %.depend $(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS) $(DEPFLAGS) $(POSTCOMPILE) %.o: %.S %.o: %.S %.depend $(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS) $(POSTCOMPILE) %.o: %.s %.o: %.s %.depend $(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS) $(POSTCOMPILE) %.a: $(AR) -rc $@ $^ %.depend: ; $(ELF2RPL): $(MAKE) -C wiiu/wut/elf2rpl/ $(TARGET).elf: $(OBJ) $(HBL_ELF_OBJ) libretro_wiiu.a wiiu/link_elf.ld $(LD) $(OBJ) $(HBL_ELF_OBJ) $(LDFLAGS) $(HBL_ELF_LDFLAGS) $(LIBDIRS) $(LIBS) -o $@ $(TARGET).rpx.elf: $(OBJ) $(RPX_OBJ) libretro_wiiu.a wiiu/link_elf.ld $(LD) $(OBJ) $(RPX_OBJ) $(LDFLAGS) $(RPX_LDFLAGS) $(LIBDIRS) $(LIBS) -o $@ $(TARGET).rpx: $(TARGET).rpx.elf $(ELF2RPL) -$(ELF2RPL) $(TARGET).rpx.elf $@ clean: rm -f $(OBJ) $(RPX_OBJ) $(HBL_ELF_OBJ) $(TARGET).elf $(TARGET).rpx.elf $(TARGET).rpx rm -f $(OBJ:.o=.depend) $(RPX_OBJ:.o=.depend) $(HBL_ELF_OBJ:.o=.depend) .PHONY: clean all .PRECIOUS: %.depend -include $(OBJ:.o=.depend) $(RPX_OBJ:.o=.depend) $(HBL_ELF_OBJ:.o=.depend)