From b4aae072c8cb90dc3753afcc36722219255f979e Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 23 Nov 2021 00:41:25 +0100 Subject: [PATCH] [runtime] Build for ARM64/simulators. --- Make.config | 16 ++++++++++------ mk/rules.mk | 44 +++++++++++++++++++++++++++++++++++++++++++ runtime/Makefile | 4 ++++ tools/mtouch/Makefile | 2 ++ 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/Make.config b/Make.config index 1a24d2cc66..493bcb5662 100644 --- a/Make.config +++ b/Make.config @@ -303,9 +303,11 @@ OBJC_CFLAGS=-ObjC++ -std=c++14 -fno-exceptions -stdlib=libc++ COMMON_SIMULATOR_CFLAGS=-mios-simulator-version-min=$(MIN_IOS_SDK_VERSION) -isysroot $(SIMULATOR_SDK) $(CFLAGS) -g $(IOS_COMMON_DEFINES) SIMULATOR86_CFLAGS=$(COMMON_SIMULATOR_CFLAGS) -arch i386 SIMULATOR64_CFLAGS=$(COMMON_SIMULATOR_CFLAGS) -arch x86_64 +SIMULATOR_ARM64_CFLAGS=$(COMMON_SIMULATOR_CFLAGS) -arch arm64 COMMON_SIMULATOR_OBJC_CFLAGS=-fobjc-abi-version=2 -fobjc-legacy-dispatch $(CFLAGS) $(OBJC_CFLAGS) SIMULATOR86_OBJC_CFLAGS=$(COMMON_SIMULATOR_OBJC_CFLAGS) $(SIMULATOR86_CFLAGS) SIMULATOR64_OBJC_CFLAGS=$(COMMON_SIMULATOR_OBJC_CFLAGS) $(SIMULATOR64_CFLAGS) +SIMULATOR_ARM64_OBJC_CFLAGS=$(COMMON_SIMULATOR_OBJC_CFLAGS) $(SIMULATOR_ARM64_CFLAGS) MACCATALYST_COMMON_CFLAGS=-target x86_64-apple-ios$(MIN_MACCATALYST_SDK_VERSION)-macabi -arch x86_64 -g $(IOS_COMMON_DEFINES) \ -isysroot $(XCODE_DEVELOPER_ROOT)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(MACOS_SDK_VERSION).sdk \ @@ -379,7 +381,9 @@ XAMARIN_TVOS_SDK = $(MONOTOUCH_PREFIX)/SDKs/Xamarin.AppleTVOS.sdk SIMULATORTV_SDK = $(XCODE_DEVELOPER_ROOT)/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator$(TVOS_SDK_VERSION).sdk SIMULATORTV_CFLAGS = -arch x86_64 -mtvos-simulator-version-min=$(MIN_TVOS_SDK_VERSION) -isysroot $(SIMULATORTV_SDK) $(CFLAGS) -g $(IOS_COMMON_DEFINES) +SIMULATORTV_ARM64_CFLAGS = -arch arm64 -mtvos-simulator-version-min=$(MIN_TVOS_SDK_VERSION) -isysroot $(SIMULATORTV_SDK) $(CFLAGS) -g $(IOS_COMMON_DEFINES) SIMULATORTV_OBJC_CFLAGS = $(SIMULATORTV_CFLAGS) $(COMMON_SIMULATOR_OBJC_CFLAGS) +SIMULATORTV_ARM64_OBJC_CFLAGS = $(SIMULATORTV_ARM64_CFLAGS) $(COMMON_SIMULATOR_OBJC_CFLAGS) DEVICETV_SDK = $(XCODE_DEVELOPER_ROOT)/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS$(TVOS_SDK_VERSION).sdk DEVICETV_CFLAGS = -arch arm64 -mtvos-version-min=$(MIN_TVOS_SDK_VERSION) -isysroot $(DEVICETV_SDK) $(CFLAGS) -fembed-bitcode $(IOS_COMMON_DEFINES) @@ -564,22 +568,22 @@ DOTNET_PLATFORMS= ifdef INCLUDE_IOS DOTNET_PLATFORMS+=iOS ifdef INCLUDE_DEVICE -DOTNET_IOS_RUNTIME_IDENTIFIERS=ios-arm ios-arm64 iossimulator-x86 iossimulator-x64 +DOTNET_IOS_RUNTIME_IDENTIFIERS=ios-arm ios-arm64 iossimulator-x86 iossimulator-x64 iossimulator-arm64 DOTNET_IOS_RUNTIME_IDENTIFIERS_32=ios-arm iossimulator-x86 -DOTNET_IOS_RUNTIME_IDENTIFIERS_64=ios-arm64 iossimulator-x64 +DOTNET_IOS_RUNTIME_IDENTIFIERS_64=ios-arm64 iossimulator-x64 iossimulator-arm64 else -DOTNET_IOS_RUNTIME_IDENTIFIERS=iossimulator-x86 iossimulator-x64 +DOTNET_IOS_RUNTIME_IDENTIFIERS=iossimulator-x86 iossimulator-x64 iossimulator-arm64 DOTNET_IOS_RUNTIME_IDENTIFIERS_32=iossimulator-x86 -DOTNET_IOS_RUNTIME_IDENTIFIERS_64=iossimulator-x64 +DOTNET_IOS_RUNTIME_IDENTIFIERS_64=iossimulator-x64 iossimulator-arm64 endif endif ifdef INCLUDE_TVOS DOTNET_PLATFORMS+=tvOS ifdef INCLUDE_DEVICE -DOTNET_TVOS_RUNTIME_IDENTIFIERS=tvos-arm64 tvossimulator-x64 +DOTNET_TVOS_RUNTIME_IDENTIFIERS=tvos-arm64 tvossimulator-x64 tvossimulator-arm64 else -DOTNET_TVOS_RUNTIME_IDENTIFIERS=tvossimulator-x64 +DOTNET_TVOS_RUNTIME_IDENTIFIERS=tvossimulator-x64 tvossimulator-arm64 endif endif diff --git a/mk/rules.mk b/mk/rules.mk index 411231e44f..2d309e3389 100644 --- a/mk/rules.mk +++ b/mk/rules.mk @@ -3,6 +3,7 @@ COMMON_I:= -I. SIM32_I := $(COMMON_I) SIM64_I := $(COMMON_I) +SIM_ARM64_I := $(COMMON_I) DEV7_I := $(COMMON_I) DEV7s_I := $(COMMON_I) DEV64_I := $(COMMON_I) @@ -13,11 +14,15 @@ DEVW_I := $(COMMON_I) DEVW64_32_I := $(COMMON_I) SIM_TV_I:= $(COMMON_I) +SIM_ARM64_TV_I := $(COMMON_I) DEV_TV_I:= $(COMMON_I) define NativeCompilationTemplate ## ios simulator + +### X86 + .libs/iphonesimulator/%$(1).x86.o: %.m $(EXTRA_DEPENDENCIES) | .libs/iphonesimulator $$(call Q_2,OBJC, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR86_OBJC_CFLAGS) $$(EXTRA_DEFINES) $(SIM32_I) -g $(2) -c $$< -o $$@ @@ -33,6 +38,8 @@ define NativeCompilationTemplate .libs/iphonesimulator/%$(1).x86.framework: | .libs/iphonesimulator $$(call Q_2,LD, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR86_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -F$(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks -fapplication-extension +### X64 + .libs/iphonesimulator/%$(1).x86_64.o: %.m $(EXTRA_DEPENDENCIES) | .libs/iphonesimulator $$(call Q_2,OBJC, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR64_OBJC_CFLAGS) $$(EXTRA_DEFINES) $(SIM64_I) -g $(2) -c $$< -o $$@ @@ -48,6 +55,24 @@ define NativeCompilationTemplate .libs/iphonesimulator/%$(1).x86_64.framework: | .libs/iphonesimulator $$(call Q_2,LD, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR64_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -F$(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks -fapplication-extension +### ARM64 + +.libs/iphonesimulator/%$(1).arm64.o: %.m $(EXTRA_DEPENDENCIES) | .libs/iphonesimulator + $$(call Q_2,OBJC, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR_ARM64_OBJC_CFLAGS) $$(EXTRA_DEFINES) $(SIM_ARM64_I) -g $(2) -c $$< -o $$@ + +.libs/iphonesimulator/%$(1).arm64.o: %.c $(EXTRA_DEPENDENCIES) | .libs/iphonesimulator + $$(call Q_2,CC, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR_ARM64_CFLAGS) $$(EXTRA_DEFINES) $(SIM_ARM64_I) -g $(2) -c $$< -o $$@ + +.libs/iphonesimulator/%$(1).arm64.o: %.s $(EXTRA_DEPENDENCIES) | .libs/iphonesimulator + $$(call Q_2,ASM, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR_ARM64_CFLAGS) $(SIM64_I) -g $(2) -c $$< -o $$@ + +.libs/iphonesimulator/%$(1).arm64.dylib: | .libs/iphonesimulator + $$(call Q_2,LD, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR_ARM64_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -L$(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/lib -fapplication-extension + +.libs/iphonesimulator/%$(1).arm64.framework: | .libs/iphonesimulator + $$(call Q_2,LD, [iphonesimulator]) $(SIMULATOR_CC) $(SIMULATOR_ARM64_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -F$(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks -fapplication-extension + + ## ios device .libs/iphoneos/%$(1).armv7.o: %.m $(EXTRA_DEPENDENCIES) | .libs/iphoneos @@ -181,6 +206,8 @@ define NativeCompilationTemplate ## tv simulator +### X64 + .libs/tvsimulator/%$(1).x86_64.o: %.m $(EXTRA_DEPENDENCIES) | .libs/tvsimulator $$(call Q_2,OBJC, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_OBJC_CFLAGS) $$(EXTRA_DEFINES) $(SIM_TV_I) -g $(2) -c $$< -o $$@ @@ -196,6 +223,23 @@ define NativeCompilationTemplate .libs/tvsimulator/%$(1).x86_64.framework: | .libs/tvsimulator $$(call Q_2,LD, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -F$(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks -fapplication-extension +### ARM64 + +.libs/tvsimulator/%$(1).arm64.o: %.m $(EXTRA_DEPENDENCIES) | .libs/tvsimulator + $$(call Q_2,OBJC, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_ARM64_OBJC_CFLAGS) $$(EXTRA_DEFINES) $(SIM_ARM64_TV_I) -g $(2) -c $$< -o $$@ + +.libs/tvsimulator/%$(1).arm64.o: %.c $(EXTRA_DEPENDENCIES) | .libs/tvsimulator + $$(call Q_2,CC, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_ARM64_CFLAGS) $$(EXTRA_DEFINES) $(SIM_ARM64_TV_I) -g $(2) -c $$< -o $$@ + +.libs/tvsimulator/%$(1).arm64.o: %.s $(EXTRA_DEPENDENCIES) | .libs/tvsimulator + $$(call Q_2,ASM, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_ARM64_CFLAGS) $$(EXTRA_DEFINES) $(SIM_ARM64_TV_I) -g $(2) -c $$< -o $$@ + +.libs/tvsimulator/%$(1).arm64.dylib: | .libs/tvsimulator + $$(call Q_2,LD, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_ARM64_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -L$(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/lib -fapplication-extension + +.libs/tvsimulator/%$(1).arm64.framework: | .libs/tvsimulator + $$(call Q_2,LD, [tvsimulator]) $(SIMULATOR_CC) $(SIMULATORTV_ARM64_CFLAGS) $$(EXTRA_FLAGS) -dynamiclib -o $$@ $$^ -F$(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks -fapplication-extension + ## tv device .libs/tvos/%$(1).arm64.o: %.m $(EXTRA_DEPENDENCIES) | .libs/tvos diff --git a/runtime/Makefile b/runtime/Makefile index 419bc9fde2..1c13e3d96d 100644 --- a/runtime/Makefile +++ b/runtime/Makefile @@ -604,10 +604,12 @@ $(foreach platform,$(DOTNET_CORECLR_PLATFORMS),$(foreach rid,$(DOTNET_$(platform # a few lookup tables, because the data we have is not always in the format we need it DOTNET_iossimulator-x64_ARCHITECTURES=x86_64 +DOTNET_iossimulator-arm64_ARCHITECTURES=arm64 DOTNET_iossimulator-x86_ARCHITECTURES=x86 DOTNET_ios-arm_ARCHITECTURES=armv7 armv7s DOTNET_ios-arm64_ARCHITECTURES=arm64 DOTNET_tvossimulator-x64_ARCHITECTURES=x86_64 +DOTNET_tvossimulator-arm64_ARCHITECTURES=arm64 DOTNET_tvos-arm64_ARCHITECTURES=arm64 DOTNET_osx-x64_ARCHITECTURES=x86_64 DOTNET_osx-arm64_ARCHITECTURES=arm64 @@ -615,10 +617,12 @@ DOTNET_maccatalyst-x64_ARCHITECTURES=x86_64 DOTNET_maccatalyst-arm64_ARCHITECTURES=arm64 DOTNET_iossimulator-x64_SDK_PLATFORM=iphonesimulator +DOTNET_iossimulator-arm64_SDK_PLATFORM=iphonesimulator DOTNET_iossimulator-x86_SDK_PLATFORM=iphonesimulator DOTNET_ios-arm_SDK_PLATFORM=iphoneos DOTNET_ios-arm64_SDK_PLATFORM=iphoneos DOTNET_tvossimulator-x64_SDK_PLATFORM=tvsimulator +DOTNET_tvossimulator-arm64_SDK_PLATFORM=tvsimulator DOTNET_tvos-arm64_SDK_PLATFORM=tvos DOTNET_osx-x64_SDK_PLATFORM=mac DOTNET_osx-arm64_SDK_PLATFORM=mac diff --git a/tools/mtouch/Makefile b/tools/mtouch/Makefile index 67db479bf4..1a6f370da9 100644 --- a/tools/mtouch/Makefile +++ b/tools/mtouch/Makefile @@ -246,10 +246,12 @@ define RunRegistrar endef $(eval $(call RunRegistrar,ios,i386,32,$(IOS_SDK_VERSION),iOS,$(SIMULATOR86_CFLAGS),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/SDKs/MonoTouch.iphonesimulator.sdk/include,$(MONOTOUCH_MONO_PATH),iOS,iossimulator-x86)) $(eval $(call RunRegistrar,ios,x86_64,64,$(IOS_SDK_VERSION),iOS,$(SIMULATOR64_CFLAGS),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/SDKs/MonoTouch.iphonesimulator.sdk/include,$(MONOTOUCH_MONO_PATH),iOS,iossimulator-x64)) +$(eval $(call RunRegistrar,ios,arm64,64,$(IOS_SDK_VERSION),iOS,$(SIMULATOR_ARM64_CFLAGS),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/SDKs/MonoTouch.iphonesimulator.sdk/include,$(MONOTOUCH_MONO_PATH),iOS,iossimulator-arm64)) $(eval $(call RunRegistrar,ios,armv7,32,$(IOS_SDK_VERSION),iOS,$(DEVICE7_CFLAGS),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/SDKs/MonoTouch.iphoneos.sdk/include,$(MONOTOUCH_MONO_PATH),iOS,armv7)) $(eval $(call RunRegistrar,ios,armv7s,32,$(IOS_SDK_VERSION),iOS,$(DEVICE7S_CFLAGS),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/SDKs/MonoTouch.iphoneos.sdk/include,$(MONOTOUCH_MONO_PATH),iOS,armv7s)) $(eval $(call RunRegistrar,ios,arm64,64,$(IOS_SDK_VERSION),iOS,$(DEVICE64_CFLAGS),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/SDKs/MonoTouch.iphoneos.sdk/include,$(MONOTOUCH_MONO_PATH),iOS,ios-arm64)) $(eval $(call RunRegistrar,tvos,x86_64,64,$(TVOS_SDK_VERSION),TVOS,$(SIMULATORTV_CFLAGS),$(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/include,$(MONOTOUCH_TV_MONO_PATH),tvOS,tvossimulator-x64)) +$(eval $(call RunRegistrar,tvos,arm64,64,$(TVOS_SDK_VERSION),TVOS,$(SIMULATORTV_ARM64_CFLAGS),$(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/include,$(MONOTOUCH_TV_MONO_PATH),tvOS,tvossimulator-arm64)) $(eval $(call RunRegistrar,tvos,arm64,64,$(TVOS_SDK_VERSION),TVOS,$(DEVICETV_CFLAGS),$(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/include,$(MONOTOUCH_TV_MONO_PATH),tvOS,tvos-arm64)) $(eval $(call RunRegistrar,watchos,x86_64,64,$(WATCH_SDK_VERSION),WatchOS,$(SIMULATORWATCH64_CFLAGS),$(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/include,$(MONOTOUCH_WATCH_MONO_PATH),watchOS,watchos-x64)) $(eval $(call RunRegistrar,watchos,i386,32,$(WATCH_SDK_VERSION),WatchOS,$(SIMULATORWATCH_CFLAGS),$(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/include,$(MONOTOUCH_WATCH_MONO_PATH),watchOS,watchos-x86))