From 8aa19fe09277f2a373f2a5c647e44ffc14182a52 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 8 Mar 2024 23:52:30 +0200 Subject: [PATCH] Update libretro's Makefile to support more targets (cherry picked from commit 17f0ff2cf782cd0f93fb680d23809894d0c7a66b) --- libretro/Makefile | 80 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/libretro/Makefile b/libretro/Makefile index f4f068a24..0789d01a5 100644 --- a/libretro/Makefile +++ b/libretro/Makefile @@ -41,6 +41,9 @@ else ifneq ($(findstring Darwin,$(shell uname -a)),) ifeq ($(shell uname -p),powerpc) arch = ppc endif + ifeq ($(shell uname -p),arm) + arch = arm + endif else ifneq ($(findstring MINGW,$(shell uname -a)),) system_platform = win endif @@ -52,15 +55,8 @@ endif CORE_DIR = .. TARGET_NAME = sameboy -LIBM = -lm +LIBM = -lm -ifeq ($(ARCHFLAGS),) -ifeq ($(archs),ppc) - ARCHFLAGS = -arch ppc -arch ppc64 -else - ARCHFLAGS = -arch i386 -arch x86_64 -endif -endif ifneq ($(SANITIZER),) CFLAGS := -fsanitize=$(SANITIZER) $(CFLAGS) @@ -68,13 +64,6 @@ ifneq ($(SANITIZER),) LDFLAGS := -fsanitize=$(SANITIZER) $(LDFLAGS) -lasan endif -ifeq ($(platform), osx) -ifndef ($(NOUNIVERSAL)) - CFLAGS += $(ARCHFLAGS) - LFLAGS += $(ARCHFLAGS) -endif -endif - ifeq ($(STATIC_LINKING), 1) EXT := a endif @@ -91,7 +80,7 @@ else ifeq ($(platform), linux-portable) LIBM := # (armv7 a7, hard point, neon based) ### # NESC, SNESC, C64 mini -else ifeq ($(platform), classic_armv7_a7) +else ifeq ($(platform),$(filter $(platform),classic_armv7_a7 unix-armv7-hardfloat-neon)) TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC SHARED := -shared -Wl,--version-script=$(CORE_DIR)/libretro/link.T -Wl,--no-undefined @@ -149,8 +138,8 @@ else ifeq ($(platform), libnx) # Nintendo WiiU else ifeq ($(platform), wiiu) TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC ?= $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - AR ?= $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) + CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) + AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) CFLAGS += -DGEKKO -DHW_RVL -DWIIU -mwup -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -I$(DEVKITPRO)/libogc/include CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int STATIC_LINKING = 1 @@ -158,10 +147,40 @@ else ifneq (,$(findstring osx,$(platform))) TARGET := $(TARGET_NAME)_libretro.dylib fpic := -fPIC SHARED := -dynamiclib + MACSOSVER = `sw_vers -productVersion | cut -d. -f 1` + OSXVER = `sw_vers -productVersion | cut -d. -f 2` + OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` + MINVERSION := + +ifeq ($(UNIVERSAL),1) + ifeq ($(archs),ppc) + ARCHFLAGS = -arch ppc -arch ppc64 + else ifeq ($(archs),arm64) + ARCHFLAGS = -arch x86_64 -arch arm64 + else + ARCHFLAGS = -arch i386 -arch x86_64 + endif + CFLAGS += $(ARCHFLAGS) + LFLAGS += $(ARCHFLAGS) + endif + + ifeq ($(CROSS_COMPILE),1) + TARGET_RULE = -target $(LIBRETRO_APPLE_PLATFORM) -isysroot $(LIBRETRO_APPLE_ISYSROOT) + CFLAGS += $(TARGET_RULE) + CPPFLAGS += $(TARGET_RULE) + CXXFLAGS += $(TARGET_RULE) + LDFLAGS += $(TARGET_RULE) + endif + + CFLAGS += $(ARCHFLAGS) + CXXFLAGS += $(ARCHFLAGS) + LDFLAGS += $(ARCHFLAGS) + else ifneq (,$(findstring ios,$(platform))) - TARGET := $(TARGET_NAME)_libretro_ios.dylib + TARGET := $(TARGET_NAME)_libretro_ios.dylib fpic := -fPIC SHARED := -dynamiclib + MINVERSION := ifeq ($(IOSSDK),) IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) @@ -169,17 +188,28 @@ endif DEFINES := -DIOS ifeq ($(platform),ios-arm64) - CC = cc -arch armv64 -isysroot $(IOSSDK) + CC = cc -arch armv64 -isysroot $(IOSSDK) else - CC = cc -arch armv7 -isysroot $(IOSSDK) + CC = cc -arch armv7 -isysroot $(IOSSDK) endif ifeq ($(platform),$(filter $(platform),ios9 ios-arm64)) -CC += -miphoneos-version-min=8.0 -CFLAGS += -miphoneos-version-min=8.0 + MINVERSION = -miphoneos-version-min=8.0 else -CC += -miphoneos-version-min=5.0 -CFLAGS += -miphoneos-version-min=5.0 + MINVERSION = -miphoneos-version-min=5.0 endif + CFLAGS += $(MINVERSION) + +else ifeq ($(platform), tvos-arm64) + EXT?=dylib + TARGET := $(TARGET_NAME)_libretro_tvos.$(EXT) + fpic := -fPIC + SHARED := -dynamiclib + DEFINES := -DIOS +ifeq ($(IOSSDK),) + IOSSDK := $(shell xcodebuild -version -sdk appletvos Path) +endif + CC = cc -arch arm64 -isysroot $(IOSSDK) + else ifneq (,$(findstring qnx,$(platform))) TARGET := $(TARGET_NAME)_libretro_qnx.so fpic := -fPIC