123e1ed65SLouis Dionne // -*- C++ -*- 223e1ed65SLouis Dionne //===----------------------------------------------------------------------===// 323e1ed65SLouis Dionne // 423e1ed65SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 523e1ed65SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 623e1ed65SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 723e1ed65SLouis Dionne // 823e1ed65SLouis Dionne //===----------------------------------------------------------------------===// 923e1ed65SLouis Dionne 1023e1ed65SLouis Dionne #ifndef _LIBCPP___CONFIGURATION_COMPILER_H 1123e1ed65SLouis Dionne #define _LIBCPP___CONFIGURATION_COMPILER_H 1223e1ed65SLouis Dionne 1323e1ed65SLouis Dionne #include <__config_site> 1423e1ed65SLouis Dionne 1523e1ed65SLouis Dionne #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER 1623e1ed65SLouis Dionne # pragma GCC system_header 1723e1ed65SLouis Dionne #endif 1823e1ed65SLouis Dionne 1923e1ed65SLouis Dionne #if defined(__apple_build_version__) 2023e1ed65SLouis Dionne // Given AppleClang XX.Y.Z, _LIBCPP_APPLE_CLANG_VER is XXYZ (e.g. AppleClang 14.0.3 => 1403) 2123e1ed65SLouis Dionne # define _LIBCPP_COMPILER_CLANG_BASED 2223e1ed65SLouis Dionne # define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000) 2323e1ed65SLouis Dionne #elif defined(__clang__) 2423e1ed65SLouis Dionne # define _LIBCPP_COMPILER_CLANG_BASED 2523e1ed65SLouis Dionne # define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) 2623e1ed65SLouis Dionne #elif defined(__GNUC__) 2723e1ed65SLouis Dionne # define _LIBCPP_COMPILER_GCC 2823e1ed65SLouis Dionne # define _LIBCPP_GCC_VER (__GNUC__ * 100 + __GNUC_MINOR__) 2923e1ed65SLouis Dionne #endif 3023e1ed65SLouis Dionne 3123e1ed65SLouis Dionne #ifdef __cplusplus 3223e1ed65SLouis Dionne 3323e1ed65SLouis Dionne // Warn if a compiler version is used that is not supported anymore 3423e1ed65SLouis Dionne // LLVM RELEASE Update the minimum compiler versions 3523e1ed65SLouis Dionne # if defined(_LIBCPP_CLANG_VER) 36*7f845cbaSNikolas Klauser # if _LIBCPP_CLANG_VER < 1800 37*7f845cbaSNikolas Klauser # warning "Libc++ only supports Clang 18 and later" 3823e1ed65SLouis Dionne # endif 3923e1ed65SLouis Dionne # elif defined(_LIBCPP_APPLE_CLANG_VER) 4023e1ed65SLouis Dionne # if _LIBCPP_APPLE_CLANG_VER < 1500 4123e1ed65SLouis Dionne # warning "Libc++ only supports AppleClang 15 and later" 4223e1ed65SLouis Dionne # endif 4323e1ed65SLouis Dionne # elif defined(_LIBCPP_GCC_VER) 449e940438SNikolas Klauser # if _LIBCPP_GCC_VER < 1400 459e940438SNikolas Klauser # warning "Libc++ only supports GCC 14 and later" 4623e1ed65SLouis Dionne # endif 4723e1ed65SLouis Dionne # endif 4823e1ed65SLouis Dionne 4923e1ed65SLouis Dionne #endif 5023e1ed65SLouis Dionne 5123e1ed65SLouis Dionne #endif // _LIBCPP___CONFIGURATION_COMPILER_H 52