diff --git a/CMakeLists.txt b/CMakeLists.txt index e6dde85bc2d68090698bd0f32957cf6d37363bb1..aee0d0a2426cbc6fcff902b9f58d70a2a4e531c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -177,6 +177,9 @@ if (LIBXML2_FOUND) set(CLANG_HAVE_LIBXML 1) endif() +include(CheckIncludeFile) +check_include_file(sys/resource.h CLANG_HAVE_RLIMITS) + set(CLANG_RESOURCE_DIR "" CACHE STRING "Relative directory from the Clang binary to its resource files.") diff --git a/include/clang/Config/config.h.cmake b/include/clang/Config/config.h.cmake index 9200ed93247bbc64a39e86a39794e0c23cab582f..9bf9ea5d8a7084c8fce66a88dbb770c9008f6f8c 100644 --- a/include/clang/Config/config.h.cmake +++ b/include/clang/Config/config.h.cmake @@ -35,6 +35,9 @@ /* Define if we have libxml2 */ #cmakedefine CLANG_HAVE_LIBXML ${CLANG_HAVE_LIBXML} +/* Define if we have sys/resource.h (rlimits) */ +#cmakedefine CLANG_HAVE_RLIMITS ${CLANG_HAVE_RLIMITS} + /* The LLVM product name and version */ #define BACKEND_PACKAGE_STRING "${BACKEND_PACKAGE_STRING}" diff --git a/tools/driver/cc1_main.cpp b/tools/driver/cc1_main.cpp index b8cea41e3ea2aaaf9efee27b3921a41eaa2f5ef9..45d44a015ee38d56ac64f13b71606e5b2f8abb1b 100644 --- a/tools/driver/cc1_main.cpp +++ b/tools/driver/cc1_main.cpp @@ -15,6 +15,7 @@ #include "llvm/Option/Arg.h" #include "clang/CodeGen/ObjectFilePCHContainerOperations.h" +#include "clang/Config/config.h" #include "clang/Driver/DriverDiagnostic.h" #include "clang/Driver/Options.h" #include "clang/Frontend/CompilerInstance.h" @@ -37,12 +38,9 @@ #include "llvm/Support/raw_ostream.h" #include <cstdio> -#ifdef __has_include -#if __has_include(<sys/resource.h>) -#define HAVE_RLIMITS +#ifdef CLANG_HAVE_RLIMITS #include <sys/resource.h> #endif -#endif using namespace clang; using namespace llvm::opt; @@ -73,7 +71,7 @@ void initializePollyPasses(llvm::PassRegistry &Registry); } #endif -#ifdef HAVE_RLIMITS +#ifdef CLANG_HAVE_RLIMITS // The amount of stack we think is "sufficient". If less than this much is // available, we may be unable to reach our template instantiation depth // limit and other similar limits.