git: dd89b97ac0fc - main - devel/flang-clang: fix build with libc++ 14

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Tue, 26 Apr 2022 19:15:48 UTC
The branch main has been updated by dim (src committer):

URL: https://cgit.FreeBSD.org/ports/commit/?id=dd89b97ac0fccbb4486ca60e2ed33f8d434719ed

commit dd89b97ac0fccbb4486ca60e2ed33f8d434719ed
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2022-04-09 15:12:07 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2022-04-26 19:15:37 +0000

    devel/flang-clang: fix build with libc++ 14
    
    During an exp-run for llvm 14 (see bug 261742), it turned out that
    devel/flang-clang fails to build with libc++ 14:
    
    -- Performing Test LLVM_NO_OLD_LIBSTDCXX - Failed
    CMake Error at /usr/local/llvm70/lib/cmake/llvm/CheckCompilerVersion.cmake:38 (message):
      Host Clang must be able to find libstdc++4.8 or newer!
    Call Stack (most recent call first):
      /usr/local/llvm70/lib/cmake/llvm/HandleLLVMOptions.cmake:9 (include)
      CMakeLists.txt:95 (include)
    
    -- Configuring incomplete, errors occurred!
    See also "/wrkdirs/usr/ports/devel/flang-clang/work/.build/CMakeFiles/CMakeOutput.log".
    See also "/wrkdirs/usr/ports/devel/flang-clang/work/.build/CMakeFiles/CMakeError.log".
    *** Error code 1
    
    This is because libc++ 14 no longer builds if the compiler doesn't
    support __builtin_is_constant_evaluated(). Similar to other ports, add a
    wrapper to make it work.
    
    PR:             263179
    Approved by:    maintainer timeout (2 weeks)
    MFH:            2022Q2
---
 devel/flang-clang/Makefile                              | 3 +++
 devel/flang-clang/files/builtin_is_constant_evaluated.h | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/devel/flang-clang/Makefile b/devel/flang-clang/Makefile
index 79ebf1af1de9..01cd5778a93a 100644
--- a/devel/flang-clang/Makefile
+++ b/devel/flang-clang/Makefile
@@ -41,6 +41,9 @@ CMAKE_INSTALL_PREFIX=	${PREFIX}/flang
 CC=		${LOCALBASE}/llvm${LLVM_VER}/bin/clang
 CXX=		${LOCALBASE}/llvm${LLVM_VER}/bin/clang++
 
+# Support __builtin_is_constant_evaluated(), for libc++ >= 14
+CXXFLAGS+=	-include ${FILESDIR}/builtin_is_constant_evaluated.h
+
 post-patch:
 	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/lib/Driver/ToolChains/FreeBSD.cpp
 
diff --git a/devel/flang-clang/files/builtin_is_constant_evaluated.h b/devel/flang-clang/files/builtin_is_constant_evaluated.h
new file mode 100644
index 000000000000..724481d30d8f
--- /dev/null
+++ b/devel/flang-clang/files/builtin_is_constant_evaluated.h
@@ -0,0 +1,4 @@
+#ifndef DEFINED___BUILTIN_IS_CONSTANT_EVALUATED
+#define DEFINED___BUILTIN_IS_CONSTANT_EVALUATED
+constexpr bool __builtin_is_constant_evaluated() { return false; }
+#endif