config_host/config_options.h.in | 2 ++ configure.ac | 3 +++ include/i18nlangtag/lang.h | 7 +++++-- include/o3tl/strong_int.hxx | 7 +++++-- 4 files changed, 15 insertions(+), 4 deletions(-)
New commits: commit fea3c9d69cad1a0408883bf5dc44670cc53fcbc2 Author: Stephan Bergmann <[email protected]> AuthorDate: Wed Sep 25 08:56:30 2024 +0200 Commit: Stephan Bergmann <[email protected]> CommitDate: Wed Sep 25 15:13:11 2024 +0200 Confine a hack to known-broken --enable-pch The hack was introduced in 7db1150b2c4a9adb993084d2dceedb450781b1dc "fix macos build with clang 16". (And for our --enable-pch for Clang being known-broken, also see ffc1ab15ae358315516aab319778a254688afbd3 "Work around some Clang PCH consteval issue by disabling HAVE_CPP_CONSTEVAL".) Change-Id: I5dcd7f96ba39bf4d0748940778699cb7d368f449 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173891 Reviewed-by: Stephan Bergmann <[email protected]> Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins diff --git a/config_host/config_options.h.in b/config_host/config_options.h.in index e87f6e8db806..7339d48a47e5 100644 --- a/config_host/config_options.h.in +++ b/config_host/config_options.h.in @@ -9,6 +9,8 @@ #define ENABLE_MERGELIBS_MORE 0 +#define ENABLE_PCH 0 + #define ENABLE_RUNTIME_OPTIMIZATIONS 0 // Used to turn off visibility for some classes/symbols when linking with --enable-mergelibs diff --git a/configure.ac b/configure.ac index 32df06e53e70..459ce88b930e 100644 --- a/configure.ac +++ b/configure.ac @@ -6595,6 +6595,9 @@ else AC_MSG_ERROR([Unknown value for --enable-pch]) fi AC_SUBST(ENABLE_PCH) +if test -n "$ENABLE_PCH"; then + AC_DEFINE(ENABLE_PCH) +fi # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then AC_PATH_PROG([CCACHE_BIN],[ccache],[not found]) diff --git a/include/i18nlangtag/lang.h b/include/i18nlangtag/lang.h index 1bd03fb51c98..18d92a2a1038 100644 --- a/include/i18nlangtag/lang.h +++ b/include/i18nlangtag/lang.h @@ -80,6 +80,7 @@ http://support.microsoft.com/default.aspx?scid=KB;en-us;q221435 */ +#include <config_options.h> #include <sal/types.h> #include <o3tl/strong_int.hxx> #include <ostream> @@ -90,8 +91,10 @@ constexpr LanguageType primary(LanguageType lt) { return LanguageType(sal_uInt16 namespace o3tl { -// when compiling LO on macOS, debug builds will display a linking error -#if !(defined MACOSX && defined __clang__ && __clang_major__ == 16) +// when compiling LO on macOS, debug builds will display a linking error where, see +// <https://lists.freedesktop.org/archives/libreoffice/2024-February/091564.html>, "Our Clang +// --enable-pch setup is known broken": +#if !(defined MACOSX && defined __clang__ && __clang_major__ == 16 && ENABLE_PCH) // delete "sal_Int16" constructor via specialization: values > 0x7FFF are // actually used, and unfortunately passed around in the API as signed // "short", so use this to find all places where casts must be inserted diff --git a/include/o3tl/strong_int.hxx b/include/o3tl/strong_int.hxx index aea775805bda..c0df5f75efc8 100644 --- a/include/o3tl/strong_int.hxx +++ b/include/o3tl/strong_int.hxx @@ -25,6 +25,7 @@ #include <cassert> #include <type_traits> #include <compare> +#include <config_options.h> namespace o3tl { @@ -84,8 +85,10 @@ template <typename UNDERLYING_TYPE, typename PHANTOM_TYPE> struct strong_int { public: -// when compiling LO on macOS, debug builds will display a linking error -#if defined MACOSX && defined __clang__ && __clang_major__ == 16 +// when compiling LO on macOS, debug builds will display a linking error where, see +// <https://lists.freedesktop.org/archives/libreoffice/2024-February/091564.html>, "Our Clang +// --enable-pch setup is known broken": +#if defined MACOSX && defined __clang__ && __clang_major__ == 16 && ENABLE_PCH explicit constexpr strong_int(unsigned long long value) : m_value(value) {} explicit constexpr strong_int(unsigned long value) : m_value(value) {} explicit constexpr strong_int(long value) : m_value(value) {}
