[libcxx-commits] [libcxx] [libc++] Guard include of <features.h> with __has_include (PR #127691)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Feb 18 11:40:50 PST 2025
https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/127691
Some configurations define __AMDGPU__ or __NVPTX__ on platforms that don't provide <features.h>, such as CUDA on Mac.
>From 1ec64e8f73ffefa55706106e220c686463f3270f Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Tue, 18 Feb 2025 14:39:45 -0500
Subject: [PATCH] [libc++] Guard include of <features.h> with __has_include
Some configurations define __AMDGPU__ or __NVPTX__ on platforms
that don't provide <features.h>, such as CUDA on Mac.
---
libcxx/include/__configuration/platform.h | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/libcxx/include/__configuration/platform.h b/libcxx/include/__configuration/platform.h
index cff99376ee24b..8d0f8f63f5213 100644
--- a/libcxx/include/__configuration/platform.h
+++ b/libcxx/include/__configuration/platform.h
@@ -32,12 +32,14 @@
// Need to detect which libc we're using if we're on Linux.
#if defined(__linux__) || defined(__AMDGPU__) || defined(__NVPTX__)
-# include <features.h>
-# if defined(__GLIBC_PREREQ)
-# define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
-# else
-# define _LIBCPP_GLIBC_PREREQ(a, b) 0
-# endif // defined(__GLIBC_PREREQ)
+# if __has_include(<features.h>)
+# include <features.h>
+# if defined(__GLIBC_PREREQ)
+# define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
+# else
+# define _LIBCPP_GLIBC_PREREQ(a, b) 0
+# endif // defined(__GLIBC_PREREQ)
+# endif
#endif
#ifndef __BYTE_ORDER__
More information about the libcxx-commits
mailing list