DEBUG = 0 HAVE_LOGGER = 0 HAVE_FILE_LOGGER = 0 WHOLE_ARCHIVE_LINK = 0 BIG_STACK = 1 PC_DEVELOPMENT_IP_ADDRESS = 255.255.255.255 PC_DEVELOPMENT_UDP_PORT = 3490 RARCH_CONSOLE = 0 USBGECKO = 0 ifneq ($(EMSCRIPTEN),) platform = emscripten endif ifeq ($(platform),) platform = unix ifeq ($(shell uname -a),) platform = win else ifneq ($(findstring MINGW,$(shell uname -a)),) platform = win else ifneq ($(findstring Darwin,$(shell uname -a)),) platform = osx else ifneq ($(findstring win,$(shell uname -a)),) platform = win endif endif # system platform system_platform = unix ifeq ($(shell uname -a),) EXE_EXT = .exe system_platform = win else ifneq ($(findstring Darwin,$(shell uname -a)),) system_platform = osx else ifneq ($(findstring MINGW,$(shell uname -a)),) system_platform = win endif TARGET_NAME := retroarch INCLUDE := LDFLAGS := LIBDIRS := SHADER_CG_DIR := media/shaders_cg OVERLAY_DIR := media/overlays SHADER_GLSL_DIR := media/shaders_glsl PYTHON2 := python2$(EXE_EXT) PYTHON3 := python3$(EXE_EXT) GIT := git$(EXE_EXT) ifeq ($(WHOLE_ARCHIVE_LINK), 1) WHOLE_START := -Wl,--whole-archive WHOLE_END := -Wl,--no-whole-archive endif LIBS := $(WHOLE_START) -lretro_$(platform) $(WHOLE_END) libogc_platform := ifeq ($(platform), ngc) libogc_platform := 1 else ifeq ($(platform), wii) libogc_platform := 1 endif # PS3 ifeq ($(platform), ps3) #TODO MEDIA_SHADER_DIR := pkg/ps3/USRDIR/cores/shaders RARCH_CONSOLE = 1 # PS3 - Cobra else ifeq ($(platform), ps3-cobra) #TODO MEDIA_SHADER_DIR := ps3/iso/PS3_GAME/USRDIR/cores/shaders RARCH_CONSOLE = 1 # NGC/Wii - libogc else ifeq ($(libogc_platform), 1) CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) LD = $(DEVKITPPC)/bin/powerpc-eabi-ld$(EXE_EXT) ELF2DOL = $(DEVKITPPC)/bin/elf2dol$(EXE_EXT) EXT_TARGET := $(TARGET_NAME)_$(platform).dol EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf INCLUDE += -I. -I$(DEVKITPRO)/libogc/include -Ideps/zlib ifeq ($(platform), ngc) LIBDIRS += -L$(DEVKITPRO)/libogc/lib/cube MACHDEP := -DHW_DOL -mogc else ifeq ($(platform), wii) LIBDIRS += -L$(DEVKITPRO)/libogc/lib/wii MACHDEP := -DHW_RVL -mrvl endif LIBDIRS += -L. MACHDEP += -DGEKKO -mcpu=750 -meabi -mhard-float -DMSB_FIRST ifeq ($(platform), ngc) LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map ifeq ($(BIG_STACK), 1) LDFLAGS += -T bootstrap/gx/ogc.ld endif else ifeq ($(platform), wii) LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size ifeq ($(BIG_STACK), 1) LDFLAGS += -T bootstrap/gx/rvl.ld endif endif LIBS += -lfat -logc ifeq ($(platform), wii) LIBS += -lwiiuse -lbte ifeq ($(USBGECKO), 1) LIBS += -ldb endif else ifeq ($(platform), ngc) ifeq ($(HAVE_LOGGER), 1) LIBS += -lbba endif endif CFLAGS += -DGEKKO HAVE_FILTERS_BUILTIN := 1 HAVE_THREADS := 1 HAVE_RPNG := 1 HAVE_RJPEG := 1 HAVE_RBMP := 1 HAVE_RTGA := 1 HAVE_OVERLAY := 1 HAVE_BUILTIN_AUTOCONFIG := 1 HAVE_ZLIB := 1 HAVE_7ZIP := 1 RARCH_CONSOLE = 1 ifeq ($(platform), wii) HAVE_WIIUSB_HID := 1 HAVE_RARCH_EXEC := 1 HAVE_RSOUND := 1 APP_BOOTER_DIR = wii/app_booter PLATOBJS := $(APP_BOOTER_DIR)/app_booter.binobj ifeq ($(USBGECKO), 1) CFLAGS += -DUSBGECKO endif endif # Libxenon (Xbox 360) else ifeq ($(platform), xenon360) CC = xenon-gcc$(EXE_EXT) CXX = xenon-g++$(EXE_EXT) OBJCOPY = xenon-objcopy$(EXE_EXT) LD = xenon-ld$(EXE_EXT) STRIP = xenon-strip$(EXE_EXT) INCLUDE += -I$(DEVKITXENON)/usr/include EXT_TARGET := $(TARGET_NAME)_$(platform).elf32 EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf LIBS += -lxenon -lm -lc LIBDIRS += -L. -L$(DEVKITXENON)/usr/lib -L$(DEVKITXENON)/xenon/lib/32 LDFLAGS += -Wl,-q -m32 -n -T$(DEVKITXENON)/app.lds PLATCFLAGS := -DHAVE_GETOPT_LONG=1 PLATCFLAGS += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts PLATCFLAGS += -u read -u _start -u exc_base HAVE_THREADS := 1 HAVE_GETOPT_LONG := 1 RARCH_CONSOLE = 1 # PSP else ifeq ($(platform), psp1) CC = psp-gcc$(EXE_EXT) CXX = psp-g++$(EXE_EXT) LD = psp-ld$(EXE_EXT) INCLUDE += -I$(PSPSDK)/psp/sdk/include EXT_TARGET := $(TARGET_NAME)_$(platform).elf EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf PLATCFLAGS := -DPSP -D_PSP_FW_VERSION=150 -G0 \ -D_MIPS_ARCH_ALLEGREX LIBS += -lpspgu -lpspgum -lm -lpspaudio -lpspfpu -lpsppower -lpsprtc -lpspkernel LIBDIRS += -L. LDFLAGS += -Wl,-q BUILD_PRX = 1 HAVE_RPNG := 1 HAVE_RJPEG := 1 HAVE_RBMP := 1 HAVE_RTGA := 1 HAVE_KERNEL_PRX := 1 RARCH_CONSOLE = 1 ifeq ($(BUILD_PRX), 1) LDFLAGS += $(addprefix -L,$(PSPSDK)/lib) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) endif # Vita else ifeq ($(platform), vita) CC = arm-vita-eabi-gcc$(EXE_EXT) CXX = arm-vita-eabi-g++$(EXE_EXT) LD = arm-vita-eabi-ld$(EXE_EXT) EXT_TARGET := $(TARGET_NAME)_$(platform).velf EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf MACHDEP := -DVITA PLATCFLAGS := -O3 -mfloat-abi=hard -ffast-math -fsingle-precision-constant LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub -lSceNetCtl_stub\ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub -lUVLoader_stub \ -lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lfreetype -lz -lm -lc -lpng PLATOBJS += libretro-common/conversion/s16_to_float_neon.o \ audio/drivers_resampler/sinc_resampler_neon.o \ audio/drivers_resampler/cc_resampler_neon.o LIBDIRS += -L. LDFLAGS += -Wl,-q HAVE_FILTERS_BUILTIN := 1 HAVE_BUILTIN_AUTOCONFIG := 1 HAVE_RPNG := 1 HAVE_RJPEG := 1 HAVE_RBMP := 1 HAVE_RTGA := 1 HAVE_ZLIB := 1 HAVE_VITA2D := 1 HAVE_NETWORKING := 1 HAVE_NETPLAY := 1 HAVE_OVERLAY := 1 RARCH_CONSOLE = 1 endif CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(PLATCFLAGS) $(INCLUDE) OBJ = griffin/griffin.o $(PLATOBJS) INCLUDE += -I./libretro-common/include ifeq ($(HAVE_LOGGER), 1) CFLAGS += -DHAVE_LOGGER CFLAGS += -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) endif ifeq ($(platform), wii) CFLAGS += -DHAVE_SOCKET_LEGACY endif ifeq ($(platform), vita) CFLAGS += -DHAVE_SOCKET_LEGACY endif ifeq ($(HAVE_KERNEL_PRX), 1) CFLAGS += -DHAVE_KERNEL_PRX endif ifeq ($(HAVE_WIIUSB_HID), 1) CFLAGS += -DHAVE_WIIUSB_HID -DHAVE_HID endif ifeq ($(HAVE_VITA2D), 1) CFLAGS += -DHAVE_VITA2D endif ifeq ($(HAVE_LIBRETRODB), 1) CFLAGS += -DHAVE_LIBRETRODB endif ifeq ($(BIG_STACK),1) CFLAGS += -DBIG_STACK endif ifeq ($(HAVE_RJPEG), 1) CFLAGS += -DHAVE_RJPEG endif ifeq ($(HAVE_FILE_LOGGER), 1) CFLAGS += -DHAVE_FILE_LOGGER endif ifeq ($(HAVE_RARCH_EXEC), 1) CFLAGS += -DHAVE_RARCH_EXEC endif ifeq ($(HAVE_ZLIB), 1) CFLAGS += -DHAVE_ZLIB -DWANT_ZLIB endif ifeq ($(HAVE_RPNG), 1) CFLAGS += -DHAVE_RPNG endif ifeq ($(HAVE_RBMP), 1) CFLAGS += -DHAVE_RBMP endif ifeq ($(HAVE_RTGA), 1) CFLAGS += -DHAVE_RTGA endif ifeq ($(HAVE_7ZIP), 1) CFLAGS += -DHAVE_7ZIP endif ifeq ($(HAVE_OVERLAY), 1) CFLAGS += -DHAVE_OVERLAY endif ifeq ($(HAVE_BUILTIN_AUTOCONFIG), 1) CFLAGS += -DHAVE_BUILTIN_AUTOCONFIG endif ifeq ($(HAVE_NETWORKING), 1) CFLAGS += -DHAVE_NETWORKING endif ifeq ($(HAVE_NETPLAY), 1) CFLAGS += -DHAVE_NETPLAY endif ifeq ($(RARCH_CONSOLE), 1) CFLAGS += -DRARCH_CONSOLE endif ifeq ($(RARCH_MOBILE), 1) CFLAGS += -DRARCH_MOBILE endif CFLAGS += -std=gnu99 -DSINC_LOWER_QUALITY -DHAVE_RGUI -DHAVE_MENU -DHAVE_GRIFFIN=1 -Wno-char-subscripts -DRARCH_INTERNAL ifeq ($(HAVE_FILTERS_BUILTIN), 1) CFLAGS += -DHAVE_FILTERS_BUILTIN endif ifeq ($(HAVE_THREADS), 1) CFLAGS += -DHAVE_THREADS ifeq ($(platform), psp1) LIBS += -lpthread-psp endif endif ifeq ($(HAVE_VITA2D), 1) LIBS := -lvita2d $(LIBS) endif ifeq ($(HAVE_RSOUND), 1) CFLAGS += -DHAVE_RSOUND endif ifeq ($(HAVE_GETOPT_LONG), 1) CFLAGS += -DHAVE_GETOPT_LONG=1 endif ifeq ($(DEBUG), 1) CFLAGS += -O0 -g -DDEBUG else ifeq ($(platform), psp1) CFLAGS += -O2 else CFLAGS += -O3 endif all: $(EXT_TARGET) %.dol: %.elf $(ELF2DOL) $< $@ %.velf: %.elf arm-vita-eabi-strip -g $< vita-elf-create $< $@ $(VITASDK)/bin/db.json $(VITASDK)/bin/extra.json %.elf32: %.elf ifeq ($(platform), xenon360) $(OBJCOPY) -O elf32-powerpc --adjust-vma 0x80000000 $< $@ endif %.prx: %.elf ifeq ($(platform),psp1) psp-prxgen $< $@ endif $(EXT_INTER_TARGET): $(OBJ) $(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS) %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< %.o: %.S $(CC) $(CFLAGS) -c -o $@ $< %.bmpobj: %.bmp $(LD) -r -b binary -o $@ $< %.binobj: %.bin $(LD) -r -b binary -o $@ $< $(APP_BOOTER_DIR)/app_booter.bin: $(MAKE) -C $(APP_BOOTER_DIR) pkg: all ifeq ($(platform), wii) cp -r $(EXT_TARGET) pkg/wii/CORE.dol else ifeq ($(platform), ngc) cp -r $(EXT_TARGET) pkg/ngc/CORE.dol else ifeq ($(platform), psp1) psp-fixup-imports$(EXT) $(EXT_TARGET) endif shaders-checkout: @if test -d $(SHADER_CG_DIR); then \ echo "[SHADER CHECKOUT::] Git pulling common-shaders..."; \ cd $(SHADER_CG_DIR); \ $(GIT) pull; \ cd ../../../../..; \ else \ echo "[SHADER CHECKOUT::] Git cloning common-shaders first..."; \ $(GIT) clone git://github.com/libretro/common-shaders.git $(SHADER_CG_DIR); \ fi shaders-deploy: ifeq ($(platform), ps3) @if test -d $(MEDIA_SHADER_DIR); then \ cp -r $(SHADER_CG_DIR)/* $(MEDIA_SHADER_DIR); \ else \ echo "[DEPLOY PS3::] Creating PS3 shader directory first..."; \ mkdir -p $(MEDIA_SHADER_DIR) || bin/true; \ fi @echo "[DEPLOY PS3::] Copied shaders to PS3 shaders directory." else ifeq ($(platform), ps3-cobra) @if test -d $(MEDIA_SHADER_DIR); then \ cp -r $(SHADER_CG_DIR)/* $(MEDIA_SHADER_DIR); \ else \ echo "[DEPLOY PS3::] Creating PS3 shader directory first..."; \ mkdir -p $(MEDIA_SHADER_DIR) || bin/true; \ fi @echo "[DEPLOY PS3::] Copied shaders to PS3 shaders directory." endif shaders-convert-glsl: $(PYTHON3) tools/cg2glsl.py $(SHADER_CG_DIR) $(SHADER_GLSL_DIR) overlays-checkout: @if test -d $(OVERLAY_DIR); then \ echo "[OVERLAY CHECKOUT::] Git pulling common-overlays..."; \ cd $(OVERLAY_DIR); \ $(GIT) pull; \ cd ../../../../..; \ else \ echo "[OVERLAY CHECKOUT::] Git cloning common-overlays first..."; \ $(GIT) clone git://github.com/libretro/common-overlays.git $(OVERLAY_DIR); \ fi clean: rm -f $(EXT_TARGET) rm -f $(EXT_INTER_TARGET) rm -f $(OBJ) ifeq ($(platform), wii) $(MAKE) -C $(APP_BOOTER_DIR) clean endif .PHONY: clean