[Libreoffice-commits] core.git: config_host.mk.in configure.ac distro-configs/LibreOfficeiOS.conf solenv/gbuild

Tor Lillqvist (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 29 06:49:03 UTC 2020


 config_host.mk.in                          |    2 
 configure.ac                               |  134 ++++++++++++++++++++---------
 distro-configs/LibreOfficeiOS.conf         |    3 
 solenv/gbuild/platform/MACOSX_ARM64_GCC.mk |   13 ++
 4 files changed, 111 insertions(+), 41 deletions(-)

New commits:
commit baab4f890c8ac99d1b8dab5790fbb7ab949100ab
Author:     Tor Lillqvist <tml at iki.fi>
AuthorDate: Tue Jun 23 21:49:26 2020 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Mon Jun 29 08:48:28 2020 +0200

    Initial WIP steps for building for macOS on Apple Silicon
    
    Don't use $host_os="darwin" for both macOS and iOS depending on
    $host_cpu. Soon macOS will run on either x86_64 or arm64. Instead, use "darwin"
    (or "macos") for macOS and "ios" for iOS.
    Some other early changes for arm64-apple-macos, too.
    
    Change-Id: Id89987d854ceba2cd87c6222db2081ccdec0c73e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96976
    Tested-by: Jenkins
    Reviewed-by: Tor Lillqvist <tml at collabora.com>

diff --git a/config_host.mk.in b/config_host.mk.in
index 3f7bbb06ce60..5b50b6f8ebe2 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -286,7 +286,7 @@ export HAVE_POSIX_FALLOCATE=@HAVE_POSIX_FALLOCATE@
 export HAVE_WDEPRECATED_COPY_DTOR=@HAVE_WDEPRECATED_COPY_DTOR@
 export HELP_ONLINE=@HELP_ONLINE@
 export HELP_OMINDEX_PAGE=@HELP_OMINDEX_PAGE@
-export HOST_PLATFORM=@host@
+export HOST_PLATFORM=@HOST_PLATFORM@
 export HSQLDB_JAR=@HSQLDB_JAR@
 export HSQLDB_USE_JDBC_4_1=@HSQLDB_USE_JDBC_4_1@
 export HUNSPELL_CFLAGS=$(gb_SPACE)@HUNSPELL_CFLAGS@
diff --git a/configure.ac b/configure.ac
index b03222285ccb..00041399ebaf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -597,6 +597,8 @@ INSTROOTBASESUFFIX=
 INSTROOTCONTENTSUFFIX=
 SDKDIRNAME=sdk
 
+HOST_PLATFORM="$host"
+
 case "$host_os" in
 
 solaris*)
@@ -675,7 +677,7 @@ cygwin*|interix*)
     LINKFLAGSNOUNDEFS=
     ;;
 
-darwin*) # macOS or iOS
+darwin*|macos*) # macOS
     test_randr=no
     test_xrender=no
     test_freetype=no
@@ -685,26 +687,45 @@ darwin*) # macOS or iOS
         mac_sanitize_path
         AC_MSG_NOTICE([sanitized the PATH to $PATH])
     fi
-    if test "$host_cpu" = "arm64" -o "$enable_ios_simulator" = "yes"; then
-        enable_gpgmepp=no
-        _os=iOS
-        test_cups=no
-        enable_mpl_subset=yes
-        enable_lotuswordpro=no
-        enable_coinmp=no
-        enable_lpsolve=no
-        enable_postgresql_sdbc=no
-        enable_extension_integration=no
-        enable_report_builder=no
-        with_ppds=no
-        if test "$enable_ios_simulator" = "yes"; then
-            host=x86_64-apple-darwin
-        fi
-    else
-        _os=Darwin
-        INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
-        INSTROOTCONTENTSUFFIX=/Contents
-        SDKDIRNAME=${PRODUCTNAME}${PRODUCTVERSION}_SDK
+    _os=Darwin
+    INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
+    INSTROOTCONTENTSUFFIX=/Contents
+    SDKDIRNAME=${PRODUCTNAME}${PRODUCTVERSION}_SDK
+    # See comment above the case "$host_os"
+    LINKFLAGSSHL="-dynamiclib -single_module"
+
+    # -fPIC is default
+    PICSWITCH=""
+
+    DLLPOST=".dylib"
+
+    # -undefined error is the default
+    LINKFLAGSNOUNDEFS=""
+;;
+
+ios*) # iOS
+    test_randr=no
+    test_xrender=no
+    test_freetype=no
+    test_fontconfig=no
+    test_dbus=no
+    if test -n "$LODE_HOME" ; then
+        mac_sanitize_path
+        AC_MSG_NOTICE([sanitized the PATH to $PATH])
+    fi
+    enable_gpgmepp=no
+    _os=iOS
+    test_cups=no
+    enable_mpl_subset=yes
+    enable_lotuswordpro=no
+    enable_coinmp=no
+    enable_lpsolve=no
+    enable_postgresql_sdbc=no
+    enable_extension_integration=no
+    enable_report_builder=no
+    with_ppds=no
+    if test "$enable_ios_simulator" = "yes"; then
+        host=x86_64-apple-darwin
     fi
     # See comment above the case "$host_os"
     LINKFLAGSSHL="-dynamiclib -single_module"
@@ -716,6 +737,10 @@ darwin*) # macOS or iOS
 
     # -undefined error is the default
     LINKFLAGSNOUNDEFS=""
+
+    # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios" part,
+    # so use arm64-apple-darwin as before for now.
+    HOST_PLATFORM=arm64-apple-darwin
 ;;
 
 freebsd*)
@@ -827,6 +852,8 @@ haiku*)
     ;;
 esac
 
+AC_SUBST(HOST_PLATFORM)
+
 if test "$_os" = "Android" ; then
     # Verify that the NDK and SDK options are proper
     if test -z "$with_android_ndk"; then
@@ -2860,8 +2887,16 @@ if test $_os = Darwin; then
         ;;
     esac
 
+    if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
+        AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
+    fi
+
     if test "$with_macosx_version_min_required" = "" ; then
-        with_macosx_version_min_required="10.10";
+        if test "$host_cpu" = x86_64; then
+            with_macosx_version_min_required="10.10";
+        else
+            with_macosx_version_min_required="11.0";
+        fi
     fi
 
     if test "$with_macosx_version_max_allowed" = "" ; then
@@ -2923,13 +2958,23 @@ if test $_os = Darwin; then
         AC_MSG_CHECKING([what C compiler to use])
         CC="`xcrun -find clang`"
         CC_BASE=`first_arg_basename "$CC"`
-        CC+=" -m64 $lto -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
+        if test "$host_cpu" = x86_64; then
+            CC+=" -target x86_64-apple-macos"
+        else
+            CC+=" -target arm64-apple-macos"
+        fi
+        CC+=" $lto -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
         AC_MSG_RESULT([$CC])
 
         AC_MSG_CHECKING([what C++ compiler to use])
         CXX="`xcrun -find clang++`"
         CXX_BASE=`first_arg_basename "$CXX"`
-        CXX+=" -m64 $lto $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
+        if test "$host_cpu" = x86_64; then
+            CXX+=" -target x86_64-apple-macos"
+        else
+            CXX+=" -target arm64-apple-macos"
+        fi
+        CXX+=" $lto $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
         AC_MSG_RESULT([$CXX])
 
         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
@@ -3280,10 +3325,9 @@ if test "$_os" = "WINNT"; then
         BITNESS_OVERRIDE=64
     fi
 fi
-if test "$_os" = "iOS"; then
+if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
     cross_compiling="yes"
 fi
-
 if test "$cross_compiling" = "yes"; then
     export CROSS_COMPILING=TRUE
 else
@@ -4289,7 +4333,7 @@ cygwin*)
     SCPDEFS="$SCPDEFS -D_MSC_VER"
     ;;
 
-darwin*)
+darwin*|macos*)
     COM=GCC
     USING_X11=
     OS=MACOSX
@@ -4297,23 +4341,15 @@ darwin*)
     P_SEP=:
 
     case "$host_cpu" in
-    arm)
-        AC_MSG_ERROR([Can't build 32-bit code for iOS])
-        ;;
     arm64)
-        OS=iOS
-        RTL_OS=iOS
         if test "$enable_ios_simulator" = "yes"; then
-            AC_MSG_ERROR([iOS simulator is only available in OSX not iOS])
+            OS=iOS
         else
             CPUNAME=ARM64
-            RTL_ARCH=ARM_EABI
-            PLATFORMID=ios_arm64
+            RTL_ARCH=AARCH
+            PLATFORMID=macosx_arm64
         fi
         ;;
-    i*86)
-        AC_MSG_ERROR([Can't build 64-bit code in 32-bit OS])
-        ;;
     x86_64)
         if test "$enable_ios_simulator" = "yes"; then
             OS=iOS
@@ -4328,6 +4364,28 @@ darwin*)
     esac
     ;;
 
+ios*)
+    COM=GCC
+    USING_X11=
+    OS=iOS
+    RTL_OS=iOS
+    P_SEP=:
+
+    case "$host_cpu" in
+    arm64)
+        if test "$enable_ios_simulator" = "yes"; then
+            AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
+        fi
+        ;;
+    *)
+        AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
+        ;;
+    esac
+    CPUNAME=ARM64
+    RTL_ARCH=ARM_EABI
+    PLATFORMID=ios_arm64
+    ;;
+
 dragonfly*)
     COM=GCC
     USING_X11=TRUE
diff --git a/distro-configs/LibreOfficeiOS.conf b/distro-configs/LibreOfficeiOS.conf
index 12f48f3073b7..2fc9b2ddf1d8 100644
--- a/distro-configs/LibreOfficeiOS.conf
+++ b/distro-configs/LibreOfficeiOS.conf
@@ -28,5 +28,4 @@
 --without-tls
 
 # iOS device
---host=arm64-apple-darwin
-
+--host=arm64-apple-ios
diff --git a/solenv/gbuild/platform/MACOSX_ARM64_GCC.mk b/solenv/gbuild/platform/MACOSX_ARM64_GCC.mk
new file mode 100644
index 000000000000..d8845ccbb3f9
--- /dev/null
+++ b/solenv/gbuild/platform/MACOSX_ARM64_GCC.mk
@@ -0,0 +1,13 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+include $(GBUILDDIR)/platform/macosx.mk
+
+# vim: set noet sw=4 ts=4:


More information about the Libreoffice-commits mailing list