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) {}

Reply via email to