driver: Support checking for rlimits via cmake (when bootstrapping)

Summary:
Add a cmake check for sys/resource.h and replace the __has_include() check with its result, in order to make it possible to use rlimits when building with compilers not supporting __has_include() -- i.e. when bootstrapping.

// Please also re-apply dfcd52eb1d8e5d322404b40414cb7331c7380a8c (llvm-config.h fix)

Patch by: Michał Górny

Reviewers: rsmith, beanz

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D23744

llvm-svn: 279559
This commit is contained in:
Chris Bieneman 2016-08-23 20:07:07 +00:00
parent ac03bce825
commit a6b39ab66c
3 changed files with 9 additions and 5 deletions

View File

@ -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.")

View File

@ -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}"

View File

@ -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.