summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandy Carter2018-08-29 20:29:56 -0700
committerSandy Carter2018-08-29 21:15:48 -0700
commite58cf8fdec17b79c3e6a91595096191adab40336 (patch)
tree7ba93287823d07aabc7709a19b31bcf471c51e74
downloadaur-e58cf8fdec17b79c3e6a91595096191adab40336.tar.gz
Add templight
-rw-r--r--.SRCINFO29
-rw-r--r--.gitignore8
-rw-r--r--GetArgumentVectorFix.patch46
-rw-r--r--PKGBUILD54
4 files changed, 137 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..e68faeca4daf
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,29 @@
+pkgbase = templight-git
+ pkgdesc = Template Instantiation Profiler and Debugger
+ pkgver = r138.91589f9
+ pkgrel = 1
+ url = https://github.com/mikael-s-persson/templight
+ arch = x86_64
+ license = custom:University of Illinois/NCSA Open Source License
+ makedepends = git
+ makedepends = subversion
+ makedepends = llvm
+ makedepends = cmake
+ depends = llvm-libs
+ depends = gcc
+ depends = clang
+ depends = compiler-rt
+ optdepends = templight-tools: Additional facilities to process the profiling data.
+ provides = templight
+ conflicts = templight
+ source = llvm::svn+http://llvm.org/svn/llvm-project/llvm/trunk
+ source = cfe::svn+http://llvm.org/svn/llvm-project/cfe/trunk
+ source = git://github.com/mikael-s-persson/templight.git
+ source = GetArgumentVectorFix.patch
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = dbc8086e8c2f05ddd4128fd3a0d39261eed19ffd0c9509a50ad656a8a5936c1f
+
+pkgname = templight-git
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..df73d7cc5008
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+*.src.tar.xz
+*.src.tar.xz.sig
+*.pkg.tar.xz
+src/
+pkg/
+templight/
+cfe/
+llvm/
diff --git a/GetArgumentVectorFix.patch b/GetArgumentVectorFix.patch
new file mode 100644
index 000000000000..ed798cb2a52b
--- /dev/null
+++ b/GetArgumentVectorFix.patch
@@ -0,0 +1,46 @@
+diff --git a/templight_driver.cpp b/templight_driver.cpp
+index 1731687..c113fce 100644
+--- a/templight_driver.cpp
++++ b/templight_driver.cpp
+@@ -57,6 +57,9 @@
+ #include "llvm/Support/TargetSelect.h"
+ #include "llvm/Support/Timer.h"
+ #include "llvm/Support/raw_ostream.h"
++#ifdef _WIN32
++#include "Windows/WindowsSupport.h"
++#endif
+
+ #include "TemplightAction.h"
+
+@@ -475,7 +478,21 @@ void ExecuteTemplightCommand(Driver &TheDriver, DiagnosticsEngine &Diags,
+
+ }
+
+-
++// llvm::sys::Process::GetArgumentVector was renamed as of rL330216
++// https://reviews.llvm.org/rL330216
++// This aims to preserves compatibility, but the better way to do it would
++// be to let InitLLVM do the job
++std::error_code GetArgumentVector(
++ SmallVectorImpl<const char *> &ArgsOut, ArrayRef<const char *> ArgsIn,
++ SpecificBumpPtrAllocator<char> &ArgAllocator) {
++#ifdef _WIN32
++ return windows::GetCommandLineArguments(ArgsOut, ArgAllocator);
++#else
++ ArgsOut.append(ArgsIn.begin(), ArgsIn.end());
++ (void)ArgAllocator;
++ return std::error_code();
++#endif
++}
+
+ int main(int argc_, const char **argv_) {
+ llvm::sys::PrintStackTraceOnErrorSignal(argv_[0]);
+@@ -486,7 +503,7 @@ int main(int argc_, const char **argv_) {
+
+ SmallVector<const char *, 256> argv;
+ llvm::SpecificBumpPtrAllocator<char> ArgAllocator;
+- std::error_code EC = llvm::sys::Process::GetArgumentVector(
++ std::error_code EC = GetArgumentVector(
+ argv, llvm::makeArrayRef(argv_, argc_), ArgAllocator);
+ if (EC) {
+ llvm::errs() << "error: couldn't get arguments: " << EC.message() << '\n';
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..8ad59778b183
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,54 @@
+pkgname=templight-git
+pkgver=r138.91589f9
+pkgrel=1
+pkgdesc="Template Instantiation Profiler and Debugger"
+arch=('x86_64')
+url="https://github.com/mikael-s-persson/templight"
+license=('custom:University of Illinois/NCSA Open Source License')
+depends=('llvm-libs' 'gcc' 'clang' 'compiler-rt')
+optdepends=('templight-tools: Additional facilities to process the profiling data.')
+makedepends=('git' 'subversion' 'llvm' 'cmake')
+provides=("templight")
+conflicts=("templight")
+source=(llvm::svn+http://llvm.org/svn/llvm-project/llvm/trunk
+ cfe::svn+http://llvm.org/svn/llvm-project/cfe/trunk
+ git://github.com/mikael-s-persson/templight.git
+ GetArgumentVectorFix.patch)
+sha256sums=('SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'dbc8086e8c2f05ddd4128fd3a0d39261eed19ffd0c9509a50ad656a8a5936c1f')
+
+pkgver() {
+ cd "$srcdir/templight"
+ echo "r$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
+}
+
+prepare() {
+ cd ${srcdir}/templight
+
+ # Patch templight
+ # https://github.com/mikael-s-persson/templight/issues/65
+ patch -p1 -i ${srcdir}/GetArgumentVectorFix.patch
+
+ # Checkout minimal clang and add templight to tools
+ cp -r ${srcdir}/cfe ${srcdir}/llvm/tools/clang
+ cp -r ${srcdir}/templight ${srcdir}/llvm/tools/clang/tools/templight
+ echo "add_clang_subdirectory(templight)" >> ${srcdir}/llvm/tools/clang/tools/CMakeLists.txt
+}
+
+build() {
+ mkdir -p "${srcdir}/llvm/build"
+ cd "${srcdir}/llvm/build"
+
+ cmake .. -DCMAKE_BUILD_TYPE=Release
+ make templight
+}
+
+package() {
+ mkdir -p "$pkgdir/usr/bin"
+ install -m755 "${srcdir}/llvm/build/bin/templight++" "$pkgdir/usr/bin"
+ install -Dm644 ${srcdir}/templight/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et: