# This build was put together and is maintained by ModMyClassic.com for Libretro. # The purpose is to give Libretro a proper "official" build platform for classic consoles. # If you need any help in building for the classics or have any questions then please visit # https://modmyclassic.com/comp and we will help in any way possible! # Building Prerequisites ############## # arm-linux-gnueabihf-strip # patchelf # bc include version.all # Classic Readme Variables ############ CLASSIC_ALT_VER := $(shell echo $(RARCH_VERSION) | tr . _) CLASSIC_MODS_VER := Official_Retroarch_v$(CLASSIC_ALT_VER) CLASSIC_MODS_NAME := RetroArch v$(RARCH_VERSION) (Official Optimised) CLASSIC_VERSION := $(RARCH_VERSION) MOD_CREATOR := Libretro + ModMyClassic MOD_CATEGORY := RetroArch GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") # Platform dependant Variables ######## HAKCHI_DIR := RA_Platform-Hakchi HAKCHI_GIT := https://github.com/Classicmods/RA_Platform-Hakchi # General Shared Variables ############ TARGET := retroarch # Libretro Defines #################### #HAVE_CLASSIC = Classic Hook, disable some features #HAVE_C_A7A7 = Classic Armv7 Cortex A7 optimisation override #HAVE_HAKCHI = Hakchi Hook, change default configurations etc (TODO) all: $(TARGET) retroarch: #Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7) patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf) CFLAGS="-marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard" ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard --disable-discord make HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it arm-linux-gnueabihf-strip -v retroarch patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... #HAKCHI BUILD (NESC, SNESC) #FYI this build was originally known as RetroArch 'Neo' for Hakchi. @echo "** BUILDING CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" rm -fr /tmp/$(HAKCHI_DIR) cd /tmp/; git clone $(HAKCHI_GIT) cp retroarch /tmp/$(HAKCHI_DIR)/bin/retroarch echo $$(echo "Built by: " $$USER @ $$(date) \\\\\\ Git Commit: $(GIT_COMMIT)) > /tmp/$(HAKCHI_DIR)/etc/libretro/retroarch_version cp /tmp/$(HAKCHI_DIR)/readme.md /tmp/$(HAKCHI_DIR)/readme_COPY.md printf "%s\n" \ "---" \ "Name: $(CLASSIC_MODS_NAME)" \ "Creator: $(MOD_CREATOR)" \ "Category: $(MOD_CATEGORY)" \ "Version: $(CLASSIC_MODS_VER)" \ "Built on: $(shell date)" \ "Git commit: $(GIT_COMMIT)" \ "---" > /tmp/$(HAKCHI_DIR)/readme.md cat /tmp/$(HAKCHI_DIR)/readme_COPY.md >> /tmp/$(HAKCHI_DIR)/readme.md rm /tmp/$(HAKCHI_DIR)/readme_COPY.md @echo "** COMPRESSING $(CLASSIC_MODS_VER) HMOD PACKAGE **" cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" * mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod . @echo "** BUILT CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" rm -fr /tmp/$(HAKCHI_DIR) #clean up tmp @echo "*********************************************************************" @echo "*** Classic ARM7 Cortex A7 build and packages built successfully! ***" @echo "****************** Winner, Winner, Chicken Dinner! ******************" @echo "*********************************************************************" clean: rm -rf obj-unix rm -f *.d rm -f *.o rm -f audio/*.o rm -f conf/*.o rm -f gfx/*.o rm -f gfx/drivers_font/*.o rm -f gfx/drivers_font_renderer/*.o rm -f gfx/drivers_context/*.o rm -f gfx/py_state/*.o rm -f compat/*.o rm -f record/*.o rm -f input/*.o rm -f tools/*.o rm -f $(BINDIR)/retroarch rm -f $(BINDIR)/retroarch-joyconfig rm -f $(PNDDIR)/readme.html rm -f retroarch rm -f $(CLASSIC_MODS_VER).hmod