summaryrefslogtreecommitdiffstats
path: root/src/castxml.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-07-27 17:12:47 (GMT)
committerBrad King <brad.king@kitware.com>2018-07-27 17:13:45 (GMT)
commita345f628237a36c9ca55364760e41ff7a936e7da (patch)
tree6e4a868fe12a8e02d87eb0b5063c38e95827ec4a /src/castxml.cxx
parent98a626ecb1aa522ca4f2575aeddc4ca3bb8c76db (diff)
downloadCastXML-a345f628237a36c9ca55364760e41ff7a936e7da.zip
CastXML-a345f628237a36c9ca55364760e41ff7a936e7da.tar.gz
CastXML-a345f628237a36c9ca55364760e41ff7a936e7da.tar.bz2
Port to LLVM/Clang SVN r338041 (trunk)
LLVM/Clang commit r334518 (Refactor ExecuteAndWait to take StringRefs, 2018-06-12) changed the signature of `ExecuteAndWait`. Update our call. LLVM/Clang commit r330216 (Rename sys::Process::GetArgumentVector -> sys::windows::GetCommandLineArguments, 2018-04-17) removed the `GetArgumentVector` API we were using. Instead use `InitLLVM` to get proper command-line arguments as was done for Clang by LLVM/Clang commit r330067 (Use InitLLVM in clang as well, 2018-04-13).
Diffstat (limited to 'src/castxml.cxx')
-rw-r--r--src/castxml.cxx13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/castxml.cxx b/src/castxml.cxx
index 9b75e94..4989857 100644
--- a/src/castxml.cxx
+++ b/src/castxml.cxx
@@ -28,6 +28,10 @@
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/raw_ostream.h"
+#if LLVM_VERSION_MAJOR >= 7
+#include "llvm/Support/InitLLVM.h"
+#endif
+
#include <iostream>
#include <set>
#include <sstream>
@@ -55,13 +59,20 @@ int main(int argc_in, const char** argv_in)
{
suppressInteractiveErrors();
+#if LLVM_VERSION_MAJOR >= 7
+ llvm::InitLLVM initLLVM(argc_in, argv_in);
+ llvm::SmallVector<const char*, 64> argv(argv_in, argv_in + argc_in);
+#else
llvm::SmallVector<const char*, 64> argv;
llvm::SpecificBumpPtrAllocator<char> argAlloc;
if (std::error_code e = llvm::sys::Process::GetArgumentVector(
argv, llvm::ArrayRef<const char*>(argv_in, argc_in), argAlloc)) {
llvm::errs() << "error: could not get arguments: " << e.message() << "\n";
return 1;
- } else if (argv.empty()) {
+ }
+#endif
+
+ if (argv.empty()) {
llvm::errs() << "error: no argv[0]?!\n";
return 1;
}