diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-02-14 01:37:10 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2020-02-17 15:44:48 +0100 |
commit | 1756130377524734cbc22927176e6de1cd5f8f91 (patch) | |
tree | 814a4737ee716c196a1636228bc5475c7eded577 | |
parent | ab6430960c92efa09b549cd70ee9e4eed47a01fe (diff) |
tdf#122218: Hack to avoid blurry text with macOS SDK 10.15
...by setting the LC_VERSION_MIN_MACOSX load command's sdk value to n/a in the
soffice executable.
See <https://bugs.documentfoundation.org/show_bug.cgi?id=122218#c167> for how
this helps, even though I have no idea why it helps.
(Adding that -platform_version linker option appears to generate warnings like
> ld: warning: passed two min versions (10.13.0, 10.13) for platform macOS. Using 10.13.
but which are probably harmless.)
(cherry picked from commit 645fe53be0dc36535dba0ed684e21ca4cda80d70)
Plus cherry-pick of follow-up b7fd89100d8653dc73955780358fe31d38b68ebf
"tdf#122218: Baseline Xcode 9.3 ld presumably doesn't support -platform_version"
(and resolving the merge conflict in desktop/Executable_soffice_bin.mk).
Change-Id: I043498c7ff2d148d4a7e1e0e9d46241b638f2eba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88667
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88697
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Tested-by: Michael Stahl <michael.stahl@cib.de>
-rw-r--r-- | config_host.mk.in | 1 | ||||
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | desktop/Executable_soffice_bin.mk | 13 |
3 files changed, 26 insertions, 0 deletions
diff --git a/config_host.mk.in b/config_host.mk.in index e621a4e03845..e47ca617845d 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -254,6 +254,7 @@ export HAVE_GCC_STACK_CLASH_PROTECTION=@HAVE_GCC_STACK_CLASH_PROTECTION@ export HAVE_GNUMAKE_FILE_FUNC=@HAVE_GNUMAKE_FILE_FUNC@ export HAVE_LD_BSYMBOLIC_FUNCTIONS=@HAVE_LD_BSYMBOLIC_FUNCTIONS@ export HAVE_LD_HASH_STYLE=@HAVE_LD_HASH_STYLE@ +export HAVE_MACOS_LD_PLATFORMVERSION=@HAVE_MACOS_LD_PLATFORMVERSION@ export HAVE_POSIX_FALLOCATE=@HAVE_POSIX_FALLOCATE@ export HELP_ONLINE=@HELP_ONLINE@ export HELP_OMINDEX_PAGE=@HELP_OMINDEX_PAGE@ diff --git a/configure.ac b/configure.ac index 156a1258063f..d56a908c0aa2 100644 --- a/configure.ac +++ b/configure.ac @@ -2762,6 +2762,7 @@ dnl =================================================================== dnl Check macOS SDK and compiler dnl =================================================================== +HAVE_MACOS_LD_PLATFORMVERSION= if test $_os = Darwin; then # If no --with-macosx-sdk option is given, look for one @@ -3000,6 +3001,16 @@ if test $_os = Darwin; then AC_MSG_CHECKING([what macOS app bundle identifier to use]) MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER]) + + AC_MSG_CHECKING([whether the linker supports -platform_version]) + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Xlinker -platform_version -Xlinker macos \ + -Xlinker $MAC_OS_X_VERSION_MIN_REQUIRED_DOTS -Xlinker 0.0.0" + AC_LINK_IFELSE([AC_LANG_PROGRAM()], + [AC_MSG_RESULT([yes]) + HAVE_MACOS_LD_PLATFORMVERSION=TRUE], + [AC_MSG_RESULT([no])]) + LDFLAGS=$save_LDFLAGS fi AC_SUBST(MACOSX_SDK_PATH) AC_SUBST(MACOSX_DEPLOYMENT_TARGET) @@ -3012,6 +3023,7 @@ AC_SUBST(MACOSX_CODESIGNING_IDENTITY) AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY) AC_SUBST(ENABLE_MACOSX_SANDBOX) AC_SUBST(MACOSX_BUNDLE_IDENTIFIER) +AC_SUBST(HAVE_MACOS_LD_PLATFORMVERSION) dnl =================================================================== dnl Check iOS SDK and compiler diff --git a/desktop/Executable_soffice_bin.mk b/desktop/Executable_soffice_bin.mk index cabd31af29f2..ecf75893ab96 100644 --- a/desktop/Executable_soffice_bin.mk +++ b/desktop/Executable_soffice_bin.mk @@ -31,6 +31,19 @@ $(eval $(call gb_Executable_set_ldflags,\ endif +ifeq ($(OS)-$(HAVE_MACOS_LD_PLATFORMVERSION),MACOSX-TRUE) +# At least when building against SDK 10.15, changing the LC_VERSION_MIN_MACOSX load command's sdk +# value from 10.15 to "n/a" (i.e., 0.0.0) is necessary to avoid blurry text in the LO UI (see +# <https://github.com/llvm/llvm-project/commit/25ce33a6e4f3b13732c0f851e68390dc2acb9123> +# "[driver][darwin] Pass -platform_version flag to the linker instead of the +# -<platform>_version_min flag", clang/test/Driver/darwin-ld-platform-version-macos.c in particular, +# for the -platform_version that Clang passes by default to new-enough ld): +$(eval $(call gb_Executable_add_ldflags,soffice_bin, \ + -Xlinker -platform_version -Xlinker macos -Xlinker $(MAC_OS_X_VERSION_MIN_REQUIRED_DOTS) \ + -Xlinker 0.0.0 \ +)) +endif + ifeq ($(OS),WNT) $(eval $(call gb_Executable_set_targettype_gui,soffice_bin,NO)) |