summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-08-28 19:40:10 (GMT)
committerBrad King <brad.king@kitware.com>2019-08-29 18:24:51 (GMT)
commit17e2df52caed3945db1083f1319b1fa27e9dea34 (patch)
treefb7c7e246bfa473f0e142936673c573d9e2c6f99
parentdb74bd1d712c1a93fd6442dbd31c47443c4c9f9b (diff)
downloadCastXML-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.txt6
-rw-r--r--README.rst2
-rw-r--r--src/RunClang.cxx18
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})
diff --git a/README.rst b/README.rst
index d55b07b..efccd9a 100644
--- a/README.rst
+++ b/README.rst
@@ -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;
}