macOS: Use godot-mono-builds scripts, add macOS arm64

This changes our handmade `configure` calls to rely on the streamlined build
process from `godot-mono-builds`, so that our builds are consistent with the
ones generated there.

This enables us to target macOS arm64 easily as neikeq did the relevant work
in the `godot-mono-builds` scripts.

Includes a backport of https://github.com/mono/mono/pull/21147 to fix Mono
build with `godot-mono-builds` using a wrapper for osxcross.
This commit is contained in:
Rémi Verschelde
2021-07-12 14:46:24 +02:00
parent 28fc5dde48
commit c55dffec9a
3 changed files with 21 additions and 69 deletions

View File

@@ -19,30 +19,15 @@ ENV PATH="/root/osxcross/target/bin:${PATH}"
RUN cp -a /root/files/${mono_version} /root && \
cd /root/${mono_version} && \
export CMAKE=/root/osxcross/target/bin/x86_64-apple-darwin20.2-cmake && \
NOCONFIGURE=1 ./autogen.sh && \
./configure --prefix=/root/dependencies/mono \
--build=x86_64-linux-gnu \
--host=x86_64-apple-darwin20.2 \
--disable-boehm \
--disable-mcs-build \
--with-tls=pthread \
--disable-dtrace \
--disable-executables \
mono_cv_uscore=yes \
_lt_dar_can_shared=yes \
CC=o64-clang \
CXX=o64-clang++ && \
make -j && \
make install && \
patch -p1 < /root/files/patches/mono-btls-cmake-wrapper.patch && \
export MONO_SOURCE_ROOT=/root/${mono_version} && \
export OSXCROSS_SDK=20.2 && \
cd /root/${mono_version}/godot-mono-builds && \
python3 osx.py configure -j --target=x86_64 --target=arm64 && \
python3 osx.py make -j --target=x86_64 --target=arm64 && \
python3 bcl.py make --product=desktop && \
python3 osx.py copy-bcl --target=x86_64 --target=arm64 && \
cd /root && \
rm -rf /root/dependencies/mono/bin/mono{,-sgen} /root/dependencies/mono/lib/mono && \
ln -s /usr/bin/mono /root/dependencies/mono/bin/mono && \
ln -s /usr/bin/mono-sgen /root/dependencies/mono/bin/mono-sgen && \
ln -s /usr/lib/mono /root/dependencies/mono/lib/mono && \
mkdir -p /root/dependencies/mono/etc && \
cp -rvp /etc/mono /root/dependencies/mono/etc/ && \
cp /root/files/mono-config-macosx /root/dependencies/mono/etc/mono/config && \
rm -rf /root/${mono_version}
CMD /bin/bash

View File

@@ -1,46 +0,0 @@
<configuration>
<dllmap dll="i:cygwin1.dll" target="libc.dylib" os="!windows" />
<dllmap dll="libc" target="libc.dylib" os="!windows"/>
<dllmap dll="intl" target="libintl.dylib" os="!windows"/>
<dllmap dll="intl" name="bind_textdomain_codeset" target="libc.dylib" os="solaris"/>
<dllmap dll="libintl" name="bind_textdomain_codeset" target="libc.dylib" os="solaris"/>
<dllmap dll="libintl" target="libintl.dylib" os="!windows"/>
<dllmap dll="i:libxslt.dll" target="libxslt.dylib" os="!windows"/>
<dllmap dll="i:odbc32.dll" target="libodbc.dylib" os="!windows"/>
<dllmap dll="i:odbc32.dll" target="libiodbc.dylib" os="osx"/>
<dllmap dll="oci" target="libclntsh.dylib" os="!windows"/>
<dllmap dll="db2cli" target="libdb2_36.dylib" os="!windows"/>
<dllmap dll="MonoPosixHelper" target="$mono_libdir/libMonoPosixHelper.dylib" os="!windows" />
<dllmap dll="System.Native" target="$mono_libdir/libmono-native-compat.dylib" os="!windows" />
<dllmap dll="System.Net.Security.Native" target="$mono_libdir/libmono-native-compat.dylib" os="!windows" />
<dllmap dll="System.Security.Cryptography.Native.Apple" target="$mono_libdir/libmono-native-compat.dylib" os="osx" />
<dllmap dll="libmono-btls-shared" target="$mono_libdir/libmono-btls-shared.dylib" os="!windows" />
<dllmap dll="i:msvcrt" target="libc.dylib" os="!windows"/>
<dllmap dll="i:msvcrt.dll" target="libc.dylib" os="!windows"/>
<dllmap dll="sqlite" target="libsqlite.0.dylib" os="!windows"/>
<dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="!windows"/>
<dllmap dll="libX11" target="libX11.dylib" os="!windows" />
<dllmap dll="libgdk-x11-2.0" target="libgdk-x11-2.0.dylib" os="!windows"/>
<dllmap dll="libgdk_pixbuf-2.0" target="libgdk_pixbuf-2.0.so.0" os="!windows"/>
<dllmap dll="libgtk-x11-2.0" target="libgtk-x11-2.0.dylib" os="!windows"/>
<dllmap dll="libglib-2.0" target="libglib-2.0.so.0" os="!windows"/>
<dllmap dll="libgobject-2.0" target="libgobject-2.0.so.0" os="!windows"/>
<dllmap dll="libgnomeui-2" target="libgnomeui-2.so.0" os="!windows"/>
<dllmap dll="librsvg-2" target="librsvg-2.so.2" os="!windows"/>
<dllmap dll="libXinerama" target="libXinerama.so.1" os="!windows" />
<dllmap dll="libasound" target="libasound.so.2" os="!windows" />
<dllmap dll="libcairo-2.dll" target="libcairo.so.2" os="!windows"/>
<dllmap dll="libcairo-2.dll" target="libcairo.2.dylib" os="osx"/>
<dllmap dll="libcups" target="libcups.so.2" os="!windows"/>
<dllmap dll="libcups" target="libcups.dylib" os="osx"/>
<dllmap dll="i:kernel32.dll">
<dllentry dll="__Internal" name="CopyMemory" target="mono_win32_compat_CopyMemory"/>
<dllentry dll="__Internal" name="FillMemory" target="mono_win32_compat_FillMemory"/>
<dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/>
<dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/>
</dllmap>
<dllmap dll="gdiplus" target="libgdiplus.dylib" os="!windows"/>
<dllmap dll="gdiplus.dll" target="libgdiplus.dylib" os="!windows"/>
<dllmap dll="gdi32" target="libgdiplus.dylib" os="!windows"/>
<dllmap dll="gdi32.dll" target="libgdiplus.dylib" os="!windows"/>
</configuration>

View File

@@ -0,0 +1,13 @@
diff --git a/mono/btls/Makefile.am b/mono/btls/Makefile.am
index 9a385443..094b26f4 100644
--- a/mono/btls/Makefile.am
+++ b/mono/btls/Makefile.am
@@ -58,7 +58,7 @@ all-local: build-shared/libmono-btls-shared$(libsuffix)
build-shared/$(BUILDFILE):
-mkdir -p build-shared
- (cd build-shared && CC="$(CC)" CXX="$(CXX)" "$(CMAKE)" $(CMAKE_ARGS) $(BTLS_CMAKE_ARGS) -DBUILD_SHARED_LIBS=1 "$(abs_top_srcdir)/mono/btls")
+ (cd build-shared && CC="$(CC)" CXX="$(CXX)" $(CMAKE) $(CMAKE_ARGS) $(BTLS_CMAKE_ARGS) -DBUILD_SHARED_LIBS=1 "$(abs_top_srcdir)/mono/btls")
if NINJA
build-shared/libmono-btls-shared$(libsuffix): build-shared/$(BUILDFILE) $(MONO_BTLS_SOURCES_FILES)