diff options
author | Brad King <brad.king@kitware.com> | 2019-08-28 19:40:10 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-08-29 18:24:51 (GMT) |
commit | 17e2df52caed3945db1083f1319b1fa27e9dea34 (patch) | |
tree | fb7c7e246bfa473f0e142936673c573d9e2c6f99 | |
parent | db74bd1d712c1a93fd6442dbd31c47443c4c9f9b (diff) | |
download | CastXML-17e2df52caed3945db1083f1319b1fa27e9dea34.zip CastXML-17e2df52caed3945db1083f1319b1fa27e9dea34.tar.gz CastXML-17e2df52caed3945db1083f1319b1fa27e9dea34.tar.bz2 |
Port to LLVM/Clang SVN r370248 (trunk)
LLVM now compiles as C++14. It does not provide `llvm::make_unique`.
The `clang::CompilerInvocation::CreateFromArgs` signature now accepts an
`ArrayRef` for the argument range instead of iterators.
-rw-r--r-- | CMakeLists.txt | 6 | ||||
-rw-r--r-- | README.rst | 2 | ||||
-rw-r--r-- | src/RunClang.cxx | 18 |
3 files changed, 21 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 28403a5..ab8baf3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,7 +127,11 @@ if(CYGWIN OR MINGW) else() set(CMAKE_CXX_EXTENSIONS OFF) endif() -set(CMAKE_CXX_STANDARD 11) +if(LLVM_VERSION_MAJOR GREATER 9) + set(CMAKE_CXX_STANDARD 14) +else() + set(CMAKE_CXX_STANDARD 11) +endif() add_definitions(${LLVM_DEFINITIONS}) include_directories(${CLANG_INCLUDE_DIRS}) @@ -46,7 +46,7 @@ To build CastXML from source, first obtain the prerequisites: * `LLVM/Clang`_ compiler SDK install tree built using the C++ compiler. This version of CastXML has been tested with LLVM/Clang - - SVN revision ``356914`` (trunk) + - SVN revision ``370248`` (trunk) - Release ``9.0`` - Release ``8.0`` - Release ``7.0`` diff --git a/src/RunClang.cxx b/src/RunClang.cxx index 955ef98..0311a2a 100644 --- a/src/RunClang.cxx +++ b/src/RunClang.cxx @@ -56,6 +56,12 @@ # define CASTXML_OWNS_OSTREAM #endif +#if LLVM_VERSION_MAJOR > 9 +# define CASTXML_MAKE_UNIQUE std::make_unique +#else +# define CASTXML_MAKE_UNIQUE llvm::make_unique +#endif + class ASTConsumer : public clang::ASTConsumer { clang::CompilerInstance& CI; @@ -443,11 +449,11 @@ class CastXMLSyntaxOnlyAction #ifdef CASTXML_OWNS_OSTREAM } else if (std::unique_ptr<llvm::raw_ostream> OS = CI.createDefaultOutputFile(false, filename(InFile), "xml")) { - return llvm::make_unique<ASTConsumer>(CI, std::move(OS), this->Opts); + return CASTXML_MAKE_UNIQUE<ASTConsumer>(CI, std::move(OS), this->Opts); #else } else if (llvm::raw_ostream* OS = CI.createDefaultOutputFile(false, filename(InFile), "xml")) { - return llvm::make_unique<ASTConsumer>(CI, *OS, this->Opts); + return CASTXML_MAKE_UNIQUE<ASTConsumer>(CI, *OS, this->Opts); #endif } else { return nullptr; @@ -612,7 +618,13 @@ static int runClangImpl(const char* const* argBeg, const char* const* argEnd, const char* const* cmdArgBeg = cmd->getArguments().data(); const char* const* cmdArgEnd = cmdArgBeg + cmd->getArguments().size(); if (clang::CompilerInvocation::CreateFromArgs( - CI->getInvocation(), cmdArgBeg, cmdArgEnd, *diags)) { + CI->getInvocation(), +#if LLVM_VERSION_MAJOR > 9 + llvm::makeArrayRef(cmdArgBeg, cmdArgEnd), +#else + cmdArgBeg, cmdArgEnd, +#endif + *diags)) { if (diags->hasErrorOccurred()) { return 1; } |