[sdks] Backport changes from master (#7084)

This allows us to start integration to the products straight from the mono:2017-12 branch, without having to wait for mono:2018-02 to be merged.
This commit is contained in:
Ludovic Henry 2018-02-16 13:01:17 -05:00 коммит произвёл Zoltan Varga
Родитель b232a3929b
Коммит 0d51a8063b
11 изменённых файлов: 478 добавлений и 62 удалений

10
sdks/builds/.gitignore поставляемый
Просмотреть файл

@ -2,11 +2,21 @@
.stamp-*
*.mk.generated
*.config.cache
mxe-Win32/
mxe-Win64/
llvm-llvm32/
llvm-llvm64/
llvm-llvmwin32/
llvm-llvmwin64/
android-armeabi-*/
android-armeabi-v7a-*/
android-arm64-v8a-*/
android-x86-*/
android-x86_64-*/
android-host-Darwin/
android-host-Linux/
android-host-mxe-Win32/
android-host-mxe-Win64/
ios-target32/
ios-target64/
ios-cross32/

Просмотреть файл

@ -1,4 +1,5 @@
TOP=$(realpath $(CURDIR)/../..)
include $(TOP)/sdks/versions.mk
include $(TOP)/sdks/paths.mk
RELEASE?=true
@ -11,11 +12,30 @@ ifeq (, $(shell which glibtoolize))
EXTRA_PATH=$(wildcard /usr/local/Cellar/libtool/*/bin/)
endif
# Some of the targets cannot be built in parallel (ex: mxe). This is a gross hack, but fixing it would mean a unknown
# amount of change. For example, we could invoke the MXE targets with `$(MAKE) -f mxe.mk build-mxe-Win32` and move the
# .NOTPARALLEL there.
.NOTPARALLEL:
all: package
## Common Mono targets
$(TOP)/configure: $(TOP)/configure.ac $(TOP)/autogen.sh
cd $(TOP) && PATH=$(EXTRA_PATH):$$PATH NOCONFIGURE=1 ./autogen.sh
TARGETS=
## MXE targets
ifndef DISABLE_ANDROID
# FIXME add iOS support(?)
include mxe.mk
endif
## LLVM targets
ifeq ($(and $(DISABLE_ANDROID),$(DISABLE_IOS)),)
include llvm.mk
endif
## BCL targets
ifndef DISABLE_BCL
include bcl.mk
@ -40,6 +60,8 @@ endif
.PHONY: $(foreach target,$(TARGETS),toolchain-$(target))
$(foreach target,$(TARGETS),toolchain-$(target)): toolchain-%: .stamp-%-toolchain
$(foreach target,$(TARGETS),.stamp-$(target)-configure): .stamp-%-configure: .stamp-%-toolchain
.PHONY: $(foreach target,$(TARGETS),configure-$(target))
$(foreach target,$(TARGETS),configure-$(target)): configure-%: .stamp-%-configure

Просмотреть файл

@ -3,9 +3,8 @@
# Parameters:
# $(1): target
# $(2): arch
# $(3): platform
# $(4): abi_name
# $(5): host_triple
# $(3): abi_name
# $(4): host_triple
#
# Flags:
# android_$(1)_CFLAGS
@ -13,17 +12,17 @@
# android_$(1)_LDFLAGS
define AndroidTargetTemplate
_android_$(1)_AR=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-ar
_android_$(1)_AS=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-as
_android_$(1)_CC=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-clang
_android_$(1)_CXX=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-clang++
_android_$(1)_CPP=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-cpp -I$$(TOP)/sdks/builds/toolchains/android-$(1)/usr/include
_android_$(1)_CXXCPP=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-cpp -I$$(TOP)/sdks/builds/toolchains/android-$(1)/usr/include
_android_$(1)_AR=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-ar
_android_$(1)_AS=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-as
_android_$(1)_CC=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-clang
_android_$(1)_CXX=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-clang++
_android_$(1)_CPP=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-cpp -I$$(TOP)/sdks/builds/toolchains/android-$(1)/usr/include
_android_$(1)_CXXCPP=$$(CCACHE) $$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-cpp -I$$(TOP)/sdks/builds/toolchains/android-$(1)/usr/include
_android_$(1)_DLLTOOL=
_android_$(1)_LD=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-ld
_android_$(1)_OBJDUMP="$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-objdump"
_android_$(1)_RANLIB=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-ranlib
_android_$(1)_STRIP=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(4)-strip
_android_$(1)_LD=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-ld
_android_$(1)_OBJDUMP="$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-objdump"
_android_$(1)_RANLIB=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-ranlib
_android_$(1)_STRIP=$$(TOP)/sdks/builds/toolchains/android-$(1)/bin/$(3)-strip
_android_$(1)_AC_VARS= \
mono_cv_uscore=yes \
@ -45,8 +44,8 @@ _android_$(1)_CXXFLAGS= \
_android_$(1)_LDFLAGS= \
-z now -z relro -z noexecstack \
-ldl -lm -llog -lc -lgcc \
-Wl,-rpath-link=$$(NDK_DIR)/platforms/android-$(3)/arch-$(2)/usr/lib,-dynamic-linker=/system/bin/linker \
-L$$(NDK_DIR)/platforms/android-$(3)/arch-$(2)/usr/lib \
-Wl,-rpath-link=$$(NDK_DIR)/platforms/android-$$(ANDROID_PLATFORM_VERSION_$(1))/arch-$(2)/usr/lib,-dynamic-linker=/system/bin/linker \
-L$$(NDK_DIR)/platforms/android-$$(ANDROID_PLATFORM_VERSION_$(1))/arch-$(2)/usr/lib \
$$(android_$(1)_LDFLAGS)
_android_$(1)_CONFIGURE_ENVIRONMENT = \
@ -66,7 +65,7 @@ _android_$(1)_CONFIGURE_ENVIRONMENT = \
RANLIB="$$(_android_$(1)_RANLIB)"
_android_$(1)_CONFIGURE_FLAGS= \
--host=$(5) \
--host=$(4) \
--cache-file=$$(TOP)/sdks/builds/android-$(1)-$$(CONFIGURATION).config.cache \
--prefix=$$(TOP)/sdks/out/android-$(1)-$$(CONFIGURATION) \
--disable-boehm \
@ -83,7 +82,7 @@ _android_$(1)_CONFIGURE_FLAGS= \
--without-ikvm-native
.stamp-android-$(1)-toolchain:
python "$$(NDK_DIR)/build/tools/make_standalone_toolchain.py" --verbose --force --api=$(3) --arch=$(2) --install-dir=$$(TOP)/sdks/builds/toolchains/android-$(1)
python "$$(NDK_DIR)/build/tools/make_standalone_toolchain.py" --verbose --force --api=$$(ANDROID_PLATFORM_VERSION_$(1)) --arch=$(2) --install-dir=$$(TOP)/sdks/builds/toolchains/android-$(1)
touch $$@
.stamp-android-$(1)-$$(CONFIGURATION)-configure: $$(TOP)/configure .stamp-android-$(1)-toolchain
@ -127,23 +126,175 @@ endef
android_armeabi_CFLAGS=-D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -march=armv5te
android_armeabi_CXXFLAGS=-D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -march=armv5te
android_armeabi_LDFLAGS=-Wl,--fix-cortex-a8
$(eval $(call AndroidTargetTemplate,armeabi,arm,9,arm-linux-androideabi,armv5-linux-androideabi))
$(eval $(call AndroidTargetTemplate,armeabi,arm,arm-linux-androideabi,armv5-linux-androideabi))
## android-armeabi-v7a
android_armeabi-v7a_CFLAGS=-D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -march=armv7-a -mtune=cortex-a8 -mfpu=vfp -mfloat-abi=softfp
android_armeabi-v7a_CXXFLAGS=-D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -march=armv7-a -mtune=cortex-a8 -mfpu=vfp -mfloat-abi=softfp
android_armeabi-v7a_LDFLAGS=-Wl,--fix-cortex-a8
$(eval $(call AndroidTargetTemplate,armeabi-v7a,arm,9,arm-linux-androideabi,armv5-linux-androideabi))
$(eval $(call AndroidTargetTemplate,armeabi-v7a,arm,arm-linux-androideabi,armv5-linux-androideabi))
## android-arm64-v8a
android_arm64-v8a_CFLAGS=-D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -DL_cuserid=9 -DANDROID64
android_arm64-v8a_CXXFLAGS=-D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -DL_cuserid=9 -DANDROID64
$(eval $(call AndroidTargetTemplate,arm64-v8a,arm64,21,aarch64-linux-android,aarch64-linux-android))
$(eval $(call AndroidTargetTemplate,arm64-v8a,arm64,aarch64-linux-android,aarch64-linux-android))
## android-x86
$(eval $(call AndroidTargetTemplate,x86,x86,9,i686-linux-android,i686-linux-android))
$(eval $(call AndroidTargetTemplate,x86,x86,i686-linux-android,i686-linux-android))
## android-x86_64
android_x86_64_CFLAGS=-DL_cuserid=9
android_x86_64_CXXFLAGS=-DL_cuserid=9
$(eval $(call AndroidTargetTemplate,x86_64,x86_64,21,x86_64-linux-android,x86_64-linux-android))
$(eval $(call AndroidTargetTemplate,x86_64,x86_64,x86_64-linux-android,x86_64-linux-android))
##
# Parameters
# $(1): target
#
# Flags:
# android_$(1)_CFLAGS
#
# Notes:
# XA doesn't seem to build differently for Darwin and Linux, seems like a bug on their end
define AndroidHostTemplate
_android_$(1)_AR=ar
_android_$(1)_AS=as
_android_$(1)_CC=cc
_android_$(1)_CXX=c++
_android_$(1)_CXXCPP=cpp
_android_$(1)_LD=ld
_android_$(1)_RANLIB=ranlib
_android_$(1)_STRIP=strip
_android_$(1)_CFLAGS= \
-ggdb3 -O0 -fno-omit-frame-pointer \
$$(android_$(1)_CFLAGS)
_android_$(1)_CONFIGURE_ENVIRONMENT= \
AR="$$(_android_$(1)_AR)" \
AS="$$(_android_$(1)_AS)" \
CC="$$(_android_$(1)_CC)" \
CFLAGS="$$(_android_$(1)_CFLAGS)" \
CXX="$$(_android_$(1)_CXX)" \
CXXCPP="$$(_android_$(1)_CXXCPP)" \
LD="$$(_android_$(1)_LD)" \
RANLIB="$$(_android_$(1)_RANLIB)" \
STRIP="$$(_android_$(1)_STRIP)"
_android_$(1)_CONFIGURE_FLAGS= \
--cache-file=$$(TOP)/sdks/builds/android-$(1).config.cache \
--prefix=$$(TOP)/sdks/out/android-$(1) \
--disable-boehm \
--disable-iconv \
--disable-mono-debugger \
--disable-nls \
--enable-dynamic-btls \
--enable-maintainer-mode \
--with-mcs-docs=no \
--with-monodroid \
--with-profile4_x=no \
--without-ikvm-native
.stamp-android-$(1)-toolchain:
touch $$@
.stamp-android-$(1)-configure: $$(TOP)/configure .stamp-android-$(1)-toolchain
mkdir -p $$(TOP)/sdks/builds/android-$(1)
cd $$(TOP)/sdks/builds/android-$(1) && $$< $$(_android_$(1)_CONFIGURE_ENVIRONMENT) $$(_android_$(1)_CONFIGURE_FLAGS)
touch $$@
.PHONY: package-android-$(1)
package-android-$(1):
$$(MAKE) -C $$(TOP)/sdks/builds/android-$(1)/mono install
$$(MAKE) -C $$(TOP)/sdks/builds/android-$(1)/support install
.PHONY: clean-android-$(1)
clean-android-$(1):
rm -rf .stamp-android-$(1)-toolchain .stamp-android-$(1)-configure $$(TOP)/sdks/builds/android-$(1) $$(TOP)/sdks/builds/android-$(1).config.cache $$(TOP)/sdks/out/android-$(1)
TARGETS += android-$(1)
endef
android_host-Darwin_CFLAGS=-mmacosx-version-min=10.9
$(eval $(call AndroidHostTemplate,host-Darwin))
$(eval $(call AndroidHostTemplate,host-Linux))
##
# Parameters
# $(1): target
# $(2): arch
# $(3): mxe
define AndroidHostMxeTemplate
_android_$(1)_PATH=$$(TOP)/sdks/out/mxe-$(3)/bin
_android_$(1)_AR=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-ar
_android_$(1)_AS=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-as
_android_$(1)_CC=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-gcc
_android_$(1)_CXX=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-g++
_android_$(1)_DLLTOOL=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-dlltool
_android_$(1)_LD=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-ld
_android_$(1)_OBJDUMP=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-objdump
_android_$(1)_RANLIB=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-ranlib
_android_$(1)_STRIP=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-strip
_android_$(1)_AC_VARS= \
ac_cv_header_zlib_h=no \
ac_cv_search_dlopen=no
_android_$(1)_CFLAGS= \
-ggdb3 -O0 -fno-omit-frame-pointer \
-DXAMARIN_PRODUCT_VERSION=0
_android_$(1)_CXXFLAGS= \
-ggdb3 -O0 -fno-omit-frame-pointer \
-DXAMARIN_PRODUCT_VERSION=0
_android_$(1)_CONFIGURE_ENVIRONMENT= \
AR="$$(_android_$(1)_AR)" \
AS="$$(_android_$(1)_AS)" \
CC="$$(_android_$(1)_CC)" \
CFLAGS="$$(_android_$(1)_CFLAGS)" \
CXX="$$(_android_$(1)_CXX)" \
CXXFLAGS="$$(_android_$(1)_CXXFLAGS)" \
LD="$$(_android_$(1)_LD)" \
RANLIB="$$(_android_$(1)_RANLIB)" \
STRIP="$$(_android_$(1)_STRIP)"
_android_$(1)_CONFIGURE_FLAGS= \
--host=$(2)-w64-mingw32.static \
--target=$(2)-w64-mingw32.static \
--cache-file=$$(TOP)/sdks/builds/android-$(1).config.cache \
--prefix=$$(TOP)/sdks/out/android-$(1) \
--disable-boehm \
--disable-llvm \
--disable-mcs-build \
--disable-nls \
--enable-maintainer-mode \
--with-monodroid
.stamp-android-$(1)-toolchain:
touch $$@
.stamp-android-$(1)-configure: $$(TOP)/configure .stamp-android-$(1)-toolchain | package-mxe-$(3)
mkdir -p $$(TOP)/sdks/builds/android-$(1)
cd $$(TOP)/sdks/builds/android-$(1) && PATH="$$$$PATH:$$(_android_$(1)_PATH)" $$< $$(_android_$(1)_AC_VARS) $$(_android_$(1)_CONFIGURE_ENVIRONMENT) $$(_android_$(1)_CONFIGURE_FLAGS)
touch $$@
.PHONY: package-android-$(1)
package-android-$(1):
$$(MAKE) -C $$(TOP)/sdks/builds/android-$(1)/mono install
$$(MAKE) -C $$(TOP)/sdks/builds/android-$(1)/support install
.PHONY: clean-android-$(1)
clean-android-$(1):
rm -rf .stamp-android-$(1)-toolchain .stamp-android-$(1)-configure $$(TOP)/sdks/builds/android-$(1) $$(TOP)/sdks/builds/android-$(1).config.cache $$(TOP)/sdks/out/android-$(1)
TARGETS += android-$(1)
endef
$(eval $(call AndroidHostMxeTemplate,host-mxe-Win32,i686,Win32))
$(eval $(call AndroidHostMxeTemplate,host-mxe-Win64,x86_64,Win64))

Просмотреть файл

@ -11,10 +11,10 @@ $(TOP)/sdks/out/bcl/monodroid $(TOP)/sdks/out/bcl/monotouch $(TOP)/sdks/out/bcl/
mkdir -p $@
.PHONY: package-bcl
package-bcl: $(TOP)/sdks/out/bcl/monodroid $(TOP)/sdks/out/bcl/monotouch $(TOP)/sdks/out/bcl/wasm
cp -R $(TOP)/mcs/class/lib/monodroid/* $(TOP)/sdks/out/bcl/monodroid
cp -R $(TOP)/mcs/class/lib/monotouch/* $(TOP)/sdks/out/bcl/monotouch
cp -R $(TOP)/mcs/class/lib/wasm/* $(TOP)/sdks/out/bcl/wasm
package-bcl: | $(TOP)/sdks/out/bcl/monodroid $(TOP)/sdks/out/bcl/monotouch $(TOP)/sdks/out/bcl/wasm
if [ -d $(TOP)/mcs/class/lib/monodroid ]; then cp -R $(TOP)/mcs/class/lib/monodroid/* $(TOP)/sdks/out/bcl/monodroid; fi
if [ -d $(TOP)/mcs/class/lib/monotouch ]; then cp -R $(TOP)/mcs/class/lib/monotouch/* $(TOP)/sdks/out/bcl/monotouch; fi
if [ -d $(TOP)/mcs/class/lib/wasm ]; then cp -R $(TOP)/mcs/class/lib/wasm/* $(TOP)/sdks/out/bcl/wasm; fi
.PHONY: clean-bcl
clean-bcl:

18
sdks/builds/download-llvm.sh Executable file
Просмотреть файл

@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -ex
LLVM_REV=$1
URL=http://xamjenkinsartifact.blob.core.windows.net/build-package-osx-llvm/llvm-osx64-$LLVM_REV.tar.gz
curl --output tmp.tar.gz $URL
rm -rf llvm-tmp
mkdir -p llvm-tmp
tar -xC llvm-tmp -f tmp.tar.gz
rm -rf ../out/ios-{llvm32,llvm64}
mkdir -p ../out/ios-llvm32 ../out/ios-llvm64
cp -r llvm-tmp/usr64/* ../out/ios-llvm64
cp -r llvm-tmp/usr32/* ../out/ios-llvm32
rm -rf llvm-tmp tmp.tar.gz

Просмотреть файл

@ -11,20 +11,19 @@
PLATFORM_BIN=$(XCODE_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/bin
_ios_CFLAGS= \
ios_CFLAGS= \
$(if $(filter $(RELEASE),true),-O2,-O0 -ggdb3 -gdwarf-2) \
-DMONOTOUCH=1
_ios_CPPFLAGS= \
ios_CPPFLAGS= \
$(if $(filter $(RELEASE),true),-O2,-O0 -ggdb3 -gdwarf-2) \
-DMONOTOUCH=1
_ios_CXXFLAGS= \
ios_CXXFLAGS= \
$(if $(filter $(RELEASE),true),-O2,-O0 -ggdb3 -gdwarf-2) \
-DMONOTOUCH=1
_ios_LDFLAGS= \
-Wl,-no_weak_imports
ios_LDFLAGS=
##
# Parameters
@ -57,11 +56,11 @@ _ios_$(1)_AC_VARS= \
ac_cv_func_utimensat=no \
mono_cv_sizeof_sunpath=104 \
mono_cv_uscore=yes \
$(ios_$(1)_AC_VARS)
$$(ios_$(1)_AC_VARS)
_ios_$(1)_CFLAGS= \
$$(_ios_CFLAGS) \
-isysroot $(XCODE_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=6.0 \
$$(ios_CFLAGS) \
-isysroot $(XCODE_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$$(IOS_VERSION).sdk -miphoneos-version-min=$$(IOS_VERSION_MIN) \
-Wl,-application_extension \
-fexceptions \
-DSMALL_CONFIG -DDISABLE_POLICY_EVIDENCE=1 -DDISABLE_PROCESS_HANDLING=1 -D_XOPEN_SOURCE -DHOST_IOS -DHAVE_LARGE_FILE_SUPPORT=1 \
@ -69,8 +68,8 @@ _ios_$(1)_CFLAGS= \
$$(ios_$(1)_CFLAGS)
_ios_$(1)_CPPFLAGS= \
$$(_ios_CPPFLAGS) \
-isysroot $(XCODE_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=6.0 \
$$(ios_CPPFLAGS) \
-isysroot $(XCODE_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$$(IOS_VERSION).sdk -miphoneos-version-min=$$(IOS_VERSION_MIN) \
-arch $(2) \
-Wl,-application_extension \
-DSMALL_CONFIG -DDISABLE_POLICY_EVIDENCE=1 -DDISABLE_PROCESS_HANDLING=1 -D_XOPEN_SOURCE -DHOST_IOS -DHAVE_LARGE_FILE_SUPPORT=1 \
@ -78,8 +77,8 @@ _ios_$(1)_CPPFLAGS= \
$$(ios_$(1)_CPPFLAGS)
_ios_$(1)_CXXFLAGS= \
$$(_ios_CXXFLAGS) \
-isysroot $(XCODE_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=6.0 \
$$(ios_CXXFLAGS) \
-isysroot $(XCODE_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$$(IOS_VERSION).sdk -miphoneos-version-min=$$(IOS_VERSION_MIN) \
-arch $(2) \
-Wl,-application_extension \
-DSMALL_CONFIG -DDISABLE_POLICY_EVIDENCE=1 -DDISABLE_PROCESS_HANDLING=1 -D_XOPEN_SOURCE -DHOST_IOS -DHAVE_LARGE_FILE_SUPPORT=1 \
@ -87,7 +86,8 @@ _ios_$(1)_CXXFLAGS= \
$$(ios_$(1)_CPPFLAGS)
_ios_$(1)_LDFLAGS= \
$$(_ios_LDFLAGS) \
$$(ios_LDFLAGS) \
-Wl,-no_weak_imports \
-arch $(2) \
-framework CoreFoundation \
-lobjc -lc++ \
@ -178,31 +178,31 @@ _ios_$(1)_AC_VARS= \
$(ios_$(1)_AC_VARS)
_ios_$(1)_CFLAGS= \
$$(_ios_CFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -mios-simulator-version-min=6.0 \
$$(ios_CFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$$(IOS_VERSION).sdk -mios-simulator-version-min=$$(IOS_VERSION_MIN) \
-arch $(2) \
-Wl,-application_extension \
-DHOST_IOS \
$$(ios_$(1)_CFLAGS)
_ios_$(1)_CPPFLAGS= \
$$(_ios_CPPFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -mios-simulator-version-min=6.0 \
$$(ios_CPPFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$$(IOS_VERSION).sdk -mios-simulator-version-min=$$(IOS_VERSION_MIN) \
-arch $(2) \
-Wl,-application_extension \
-DHOST_IOS \
$$(ios_$(1)_CPPFLAGS)
_ios_$(1)_CXXFLAGS= \
$$(_ios_CXXFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -mios-simulator-version-min=6.0 \
$$(ios_CXXFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$$(IOS_VERSION).sdk -mios-simulator-version-min=$$(IOS_VERSION_MIN) \
-arch $(2) \
-Wl,-application_extension\
-DHOST_IOS \
$$(ios_$(1)_CXXFLAGS)
_ios_$(1)_LDFLAGS= \
$$(_ios_LDFLAGS) \
$$(ios_LDFLAGS) \
$$(ios_$(1)_LDFLAGS)
_ios_$(1)_CONFIGURE_ENVIRONMENT = \
@ -226,7 +226,6 @@ _ios_$(1)_CONFIGURE_FLAGS= \
--disable-visibility-hidden \
--enable-maintainer-mode \
--enable-minimal=com,remoting,shared_perfcounters \
--with-glib=embedded \
--with-tls=pthread \
--without-ikvm-native
@ -259,16 +258,30 @@ $(eval $(call iOSSimulatorTemplate,sim64,x86_64))
$(TOP)/tools/offsets-tool/MonoAotOffsetsDumper.exe: $(wildcard $(TOP)/tools/offsets-tool/*.cs)
$(MAKE) -C $(dir $@) MonoAotOffsetsDumper.exe
LLVM_REV=3b82b3c9041eb997f627f881a67d20be37264e9c
# Download a prebuilt llvm
.stamp-ios-llvm-$(LLVM_REV):
./download-llvm.sh $(LLVM_REV)
touch $@
build-ios-llvm: .stamp-ios-llvm-$(LLVM_REV)
clean-ios-llvm:
$(RM) -rf ../out/ios-llvm64 ../out/ios-llvm32 .stamp-ios-llvm-$(LLVM_REV)
##
# Parameters:
# $(1): target (cross32 or cross64)
# $(2): arch (arm or aarch64)
# $(3): llvm (llvm32 or llvm64)
#
# Flags:
# ios_$(1)_AC_VARS
# ios_$(1)_CFLAGS
# ios_$(1)_CXXFLAGS
# ios_$(1)_LDFLAGS
# ios_$(1)_CONFIGURE_FLAGS
define iOSCrossTemplate
_ios_$(1)_CC=$$(CCACHE) $$(PLATFORM_BIN)/clang
@ -278,25 +291,25 @@ _ios_$(1)_AC_VARS= \
$$(ios_$(1)_AC_VARS)
_ios_$(1)_CFLAGS= \
$$(_ios_CFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.7 \
$$(ios_CFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$$(MACOS_VERSION).sdk -mmacosx-version-min=$$(MACOS_VERSION_MIN) \
-Qunused-arguments \
$$(ios_$(1)_CFLAGS)
_ios_$(1)_CXXFLAGS= \
$$(_ios_CXXFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.7 \
$$(ios_CXXFLAGS) \
-isysroot $$(XCODE_DIR)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$$(MACOS_VERSION).sdk -mmacosx-version-min=$$(MACOS_VERSION_MIN) \
-Qunused-arguments \
-stdlib=libc++ \
$$(ios_$(1)_CXXFLAGS)
_ios_$(1)_LDFLAGS= \
$$(_ios_LDFLAGS) \
$$(ios_LDFLAGS) \
-stdlib=libc++ \
$$(ios_$(1)_LDFLAGS)
_ios_$(1)_CONFIGURE_FLAGS= \
--build=i386-apple-darwin10 \
$$(ios_$(1)_CONFIGURE_FLAGS) \
--target=$(2)-darwin \
--cache-file=$$(TOP)/sdks/builds/ios-$(1).config.cache \
--prefix=$$(TOP)/sdks/out/ios-$(1) \
@ -310,9 +323,7 @@ _ios_$(1)_CONFIGURE_FLAGS= \
--enable-icall-symbol-map \
--enable-minimal=com,remoting \
--with-cross-offsets=$(2)-apple-darwin10.h \
--with-glib=embedded
# _ios_$(1)_CONFIGURE_FLAGS += --enable-llvm --with-llvm=../llvm/usr
--with-llvm=$$(TOP)/sdks/out/ios-$(3)
_ios_$(1)_CONFIGURE_ENVIRONMENT= \
CC="$$(_ios_$(1)_CC)" \
@ -324,7 +335,7 @@ _ios_$(1)_CONFIGURE_ENVIRONMENT= \
.stamp-ios-$(1)-toolchain:
touch $$@
.stamp-ios-$(1)-configure: $$(TOP)/configure
.stamp-ios-$(1)-configure: $$(TOP)/configure | build-ios-llvm
mkdir -p $$(TOP)/sdks/builds/ios-$(1)
cd $$(TOP)/sdks/builds/ios-$(1) && PATH="$$(PLATFORM_BIN):$$$$PATH" $$(TOP)/configure $$(_ios_$(1)_AC_VARS) $$(_ios_$(1)_CONFIGURE_ENVIRONMENT) $$(_ios_$(1)_CONFIGURE_FLAGS)
touch $$@
@ -336,7 +347,7 @@ $$(TOP)/sdks/builds/ios-$(1)/$(2)-apple-darwin10.h: .stamp-ios-$(1)-configure $$
cd $$(TOP)/sdks/builds/ios-$(1) && \
MONO_PATH=$(TOP)/tools/offsets-tool/CppSharp/osx_32 \
mono --arch=32 --debug $$(TOP)/tools/offsets-tool/MonoAotOffsetsDumper.exe \
--abi $(2)-apple-darwin10 --platform ios --out $$(TOP)/sdks/builds/ios-$(1)/ --mono $$(TOP) --targetdir $$(TOP)/sdks/builds/ios-$(1)
--gen-ios --abi $(2)-apple-darwin10 --out $$(TOP)/sdks/builds/ios-$(1)/ --mono $$(TOP) --targetdir $$(TOP)/sdks/builds/ios-$(1)
build-ios-$(1): $$(TOP)/sdks/builds/ios-$(1)/$(2)-apple-darwin10.h
@ -352,5 +363,8 @@ TARGETS += ios-$(1)
endef
$(eval $(call iOSCrossTemplate,cross32,arm))
$(eval $(call iOSCrossTemplate,cross64,aarch64))
ios_cross32_CONFIGURE_FLAGS=--build=i386-apple-darwin10
$(eval $(call iOSCrossTemplate,cross32,arm,llvm32))
$(eval $(call iOSCrossTemplate,cross64,aarch64,llvm64))

127
sdks/builds/llvm.mk Normal file
Просмотреть файл

@ -0,0 +1,127 @@
$(TOP)/sdks/builds/toolchains/llvm:
git clone -b master https://github.com/mono/llvm.git $@
$(TOP)/sdks/builds/toolchains/llvm/configure: | $(TOP)/sdks/builds/toolchains/llvm
##
# Parameters
# $(1): target
# $(2): arch
define LLVMTemplate
_llvm_$(1)_CXXFLAGS= \
-stdlib=libc++ \
-mmacosx-version-min=10.9
_llvm_$(1)_LDFLAGS= \
-mmacosx-version-min=10.9
_llvm_$(1)_CONFIGURE_ENVIRONMENT= \
CXXFLAGS="$$(_llvm_$(1)_CXXFLAGS)" \
LDFLAGS="$$(_llvm_$(1)_LDFLAGS)"
_llvm_$(1)_CONFIGURE_FLAGS= \
--host=$(2)-apple-darwin10 \
--cache-file=$$(TOP)/sdks/builds/llvm-$(1).config.cache \
--prefix=$$(TOP)/sdks/out/llvm-$(1) \
--enable-assertions=no \
--enable-optimized \
--enable-targets="arm,aarch64,x86" \
--enable-libcpp
.stamp-llvm-$(1)-toolchain: | $$(TOP)/sdks/builds/toolchains/llvm
touch $$@
.stamp-llvm-$(1)-configure: $$(TOP)/sdks/builds/toolchains/llvm/configure
mkdir -p $$(TOP)/sdks/builds/llvm-$(1)
cd $$(TOP)/sdks/builds/llvm-$(1) && $$< $$(_llvm_$(1)_CONFIGURE_ENVIRONMENT) $$(_llvm_$(1)_CONFIGURE_FLAGS)
touch $$@
.PHONY: package-llvm-$(1)
package-llvm-$(1):
$$(MAKE) -C $$(TOP)/sdks/builds/llvm-$(1) install
.PHONY: clean-llvm-$(1)
clean-llvm-$(1):
rm -rf .stamp-llvm-$(1)-toolchain .stamp-llvm-$(1)-configure $$(TOP)/sdks/builds/llvm-$(1) $$(TOP)/sdks/builds/llvm-$(1).config.cache $$(TOP)/sdks/out/llvm-$(1)
TARGETS += llvm-$(1)
endef
$(eval $(call LLVMTemplate,llvm32,i386))
$(eval $(call LLVMTemplate,llvm64,x86_64))
##
# Parameters
# $(1): target
# $(2): arch
# $(3): mxe
#
# Flags
# llvm_$(1)_CONFIGURE_ENVIRONMENT
define LLVMMxeTemplate
_llvm_$(1)_PATH=$$(TOP)/sdks/out/mxe-$(3)/bin
_llvm_$(1)_AR=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-ar
_llvm_$(1)_AS=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-as
_llvm_$(1)_CC=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-gcc
_llvm_$(1)_CXX=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-g++
_llvm_$(1)_DLLTOOL=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-dlltool
_llvm_$(1)_LD=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-ld
_llvm_$(1)_OBJDUMP=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-objdump
_llvm_$(1)_RANLIB=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-ranlib
_llvm_$(1)_STRIP=$$(TOP)/sdks/out/mxe-$(3)/bin/$(2)-w64-mingw32.static-strip
_llvm_$(1)_CXXFLAGS=
_llvm_$(1)_LDFLAGS=
_llvm_$(1)_CONFIGURE_ENVIRONMENT = \
AR="$$(_llvm_$(1)_AR)" \
AS="$$(_llvm_$(1)_AS)" \
CC="$$(_llvm_$(1)_CC)" \
CXX="$$(_llvm_$(1)_CXX)" \
DLLTOOL="$$(_llvm_$(1)_DLLTOOL)" \
LD="$$(_llvm_$(1)_LD)" \
OBJDUMP="$$(_llvm_$(1)_OBJDUMP)" \
RANLIB="$$(_llvm_$(1)_RANLIB)" \
STRIP="$$(_llvm_$(1)_STRIP)" \
CXXFLAGS="$$(_llvm_$(1)_CXXFLAGS)" \
LDFLAGS="$$(_llvm_$(1)_LDFLAGS)"
_llvm_$(1)_CONFIGURE_FLAGS = \
--host=$(2)-w64-mingw32.static \
--cache-file=$$(TOP)/sdks/builds/llvm-$(1).config.cache \
--prefix=$$(TOP)/sdks/out/llvm-$(1) \
--enable-assertions=no \
--enable-optimized \
--enable-targets="arm,aarch64,x86" \
--disable-pthreads \
--disable-zlib
.stamp-llvm-$(1)-toolchain: | $$(TOP)/sdks/builds/toolchains/llvm
cd $$(TOP)/sdks/builds/toolchains/llvm && git checkout $(LLVM_HASH)
touch $$@
.stamp-llvm-$(1)-configure: $$(TOP)/sdks/builds/toolchains/llvm/configure | package-mxe-$(3)
mkdir -p $$(TOP)/sdks/builds/llvm-$(1)
cd $$(TOP)/sdks/builds/llvm-$(1) && PATH="$$$$PATH:$$(_llvm_$(1)_PATH)" $$< $$(_llvm_$(1)_CONFIGURE_ENVIRONMENT) $$(_llvm_$(1)_CONFIGURE_FLAGS)
touch $$@
.PHONY: package-llvm-$(1)
package-llvm-$(1):
$$(MAKE) -C $$(TOP)/sdks/builds/llvm-$(1) install
.PHONY: clean-llvm-$(1)
clean-llvm-$(1):
rm -rf .stamp-llvm-$(1)-toolchain .stamp-llvm-$(1)-configure $$(TOP)/sdks/builds/llvm-$(1) $$(TOP)/sdks/builds/llvm-$(1).config.cache $$(TOP)/sdks/out/llvm-$(1)
TARGETS += llvm-$(1)
endef
$(eval $(call LLVMMxeTemplate,llvmwin32,i686,Win32))
$(eval $(call LLVMMxeTemplate,llvmwin64,x86_64,Win64))

39
sdks/builds/mxe.mk Normal file
Просмотреть файл

@ -0,0 +1,39 @@
$(TOP)/sdks/builds/toolchains/mxe:
git clone -b xamarin https://github.com/xamarin/mxe.git $@
##
# Parameters
# $(1): target
# $(2): arch
define MxeTemplate
.stamp-mxe-$(1)-toolchain: | $$(TOP)/sdks/builds/toolchains/mxe
cd $$(TOP)/sdks/builds/toolchains/mxe && git checkout $$(MXE_HASH)
touch $$@
.stamp-mxe-$(1)-configure:
touch $$@
.PHONY: build-custom-mxe-$(1)
build-custom-mxe-$(1):
PATH="$$$$PATH:$$(dir $$(shell which autopoint))" $$(MAKE) -C $$(TOP)/sdks/builds/toolchains/mxe gcc cmake zlib pthreads dlfcn-win32 mman-win32 \
MXE_TARGETS="$(2)-w64-mingw32.static" PREFIX="$$(TOP)/sdks/out/mxe-$(1)" OS_SHORT_NAME="disable-native-plugins"
.PHONY: setup-custom-mxe-$(1)
setup-custom-mxe-$(1):
.PHONY: package-mxe-$(1)
package-mxe-$(1):
.PHONY: clean-mxe-$(1)
clean-mxe-$(1):
$$(MAKE) -C $$(TOP)/sdks/builds/toolchains/mxe clean \
MXE_TARGETS="$(2)-w64-mingw32.static" PREFIX="$$(TOP)/sdks/out/mxe-$(1)"
TARGETS += mxe-$(1)
endef
$(eval $(call MxeTemplate,Win32,i686))
$(eval $(call MxeTemplate,Win64,x86_64))

Просмотреть файл

@ -27,7 +27,7 @@ $(TOP)/sdks/builds/toolchains/emsdk:
.stamp-wasm-interp-toolchain: .stamp-wasm-toolchain
touch $@
.stamp-wasm-interp-configure: $(TOP)/configure .stamp-wasm-interp-toolchain
.stamp-wasm-interp-configure: $(TOP)/configure
mkdir -p $(TOP)/sdks/builds/wasm-interp
cd $(TOP)/sdks/builds/wasm-interp && source $(TOP)/sdks/builds/toolchains/emsdk/emsdk_env.sh && CFLAGS="-Os -g" emconfigure $(TOP)/configure $(WASM_INTERP_CONFIGURE_FLAGS)
touch $@

Просмотреть файл

@ -43,7 +43,7 @@ ifndef DISABLE_IOS
CheckXcodeDir=$(or $(and $(wildcard $(1))),$(warning Could not find Xcode in "$(1)"))
ifneq ($(call CheckXcodeDir,/Applications/Xcode.app/Contents/Developer),)
XCODE_DIR=/Applications/Xcode.app/Contents/Developer
XCODE_DIR=/Applications/$(XCODE_VERSION).app/Contents/Developer
else
$(error Could not find Xcode)
endif

35
sdks/versions.mk Normal file
Просмотреть файл

@ -0,0 +1,35 @@
# MXE
MXE_HASH?=a926b16d8e07b6125484223794b412f89b9acce0
# LLVM
LLVM_HASH?=3b82b3c9041eb997f627f881a67d20be37264e9c
# Android
ANDROID_PLATFORM_VERSION_armeabi?=9
ANDROID_PLATFORM_VERSION_armeabi-v7a?=9
ANDROID_PLATFORM_VERSION_arm64-v8a?=21
ANDROID_PLATFORM_VERSION_x86?=9
ANDROID_PLATFORM_VERSION_x86_64?=21
# iOS
## Xcode needs to be installed in /Applications/$(XCODE_VERSION).app
XCODE_VERSION?=Xcode91
MACOS_VERSION?=10.13
MACOS_VERSION_MIN?=10.7
IOS_VERSION?=11.1
IOS_VERSION_MIN?=6.0
TVOS_VERSION?=11.1
TVOS_VERSION_MIN?=9.0
WATCHOS_VERSION?=4.1
WATCHOS_VERSION_MIN?=2.0
# WebAssembly