diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2017-04-28 15:36:10 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-04-28 15:36:51 +0200 |
commit | 55ea9cbfaf3229879eba2aa9024e247dcc6d1930 (patch) | |
tree | e93d4de260c5f2028da4ccd967381c337ec17d5f /community/emscripten-fastcomp | |
parent | c529e08b39870357e8f10ddd9fb48b4aea2543bd (diff) | |
download | aports-55ea9cbfaf3229879eba2aa9024e247dcc6d1930.tar.bz2 aports-55ea9cbfaf3229879eba2aa9024e247dcc6d1930.tar.xz |
community/emscripten-fastcomp: move from testing
Diffstat (limited to 'community/emscripten-fastcomp')
3 files changed, 163 insertions, 0 deletions
diff --git a/community/emscripten-fastcomp/APKBUILD b/community/emscripten-fastcomp/APKBUILD new file mode 100644 index 0000000000..93ca8d06df --- /dev/null +++ b/community/emscripten-fastcomp/APKBUILD @@ -0,0 +1,84 @@ +# Contributor: Jakub Jirutka <jakub@jirutka.cz> +# Maintainer: Jakub Jirutka <jakub@jirutka.cz> + +# NOTE: This is a fork of LLVM project needed for emscripten. It provides +# JSBackend and WebAssembly, these will be hopefully someday merged into +# upstream LLVM. +# TODO: Remove unneeded binaries. +pkgname=emscripten-fastcomp +# Keep in sync with package emscripten! +pkgver=1.37.9 +pkgrel=2 +pkgdesc="The Clang + LLVM backend for Emscripten" +url="https://kripken.github.io/emscripten-site/" +arch="all" +license="UOI-NCSA" +depends="python2" +makedepends="cmake paxmark zlib-dev" +source="$pkgname.tar.gz::https://github.com/kripken/$pkgname/archive/$pkgver.tar.gz + $pkgname-clang.tar.gz::https://github.com/kripken/$pkgname-clang/archive/$pkgver.tar.gz + llvm-fix-build-with-musl-libc.patch + llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch" +builddir="$srcdir/$pkgname-$pkgver" +options="!check" # some tests are broken, don't bother with it for now + +_prefix="usr/lib/$pkgname" +ldpath="/$_prefix/lib" +# Avoid conflicts in provided so:* names with llvm package. +sonameprefix="$pkgname:" + +prepare() { + ln -sf ../../$pkgname-clang-$pkgver "$builddir"/tools/clang + + default_prepare +} + +build() { + mkdir -p "$builddir"/build + cd "$builddir"/build + + # XXX: Is it a good idea to omit X86 in LLVM_TARGETS_TO_BUILD? + # https://github.com/kripken/emscripten-fastcomp/issues/174 + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="/$_prefix" \ + -DCMAKE_VERBOSE_MAKEFILE=NO \ + -DPYTHON_EXECUTABLE=/usr/bin/python2 \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_TESTS=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_BUILD_RUNTIME=OFF \ + -DLLVM_ENABLE_ZLIB=ON \ + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \ + -DLLVM_HOST_TRIPLE="$CHOST" \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_TARGETS_TO_BUILD=JSBackend + make -j ${JOBS:-2} + + paxmark m \ + bin/llvm-rtdyld \ + bin/lli \ + bin/lli-child-target +} + +package() { + cd "$builddir"/build + make install DESTDIR="$pkgdir" + + cd "$pkgdir"/$_prefix + + # emcc -v expects this file to exist. + cp "$builddir"/emscripten-version.txt . + + # Remove unneeded files and clutter. + rm -r include libexec share lib/clang lib/cmake + rm lib/*.a bin/*-test +} + +sha512sums="443d22163866a409b6218bb686d52b845051350ef4af546e2d52ffaca03ed363f3cbf8f8e61b7fc28c1e1007d7e2789bfd74d91159deff46e3c6e1913ffebf34 emscripten-fastcomp.tar.gz +5c1fae88e87575571fef767f9c3d664c0eed106d566517871503c75cb5e31777d5fd5773f914fbe932abde3b42870b25e4ca58cf458ceecd0f9a7a50e7d86af9 emscripten-fastcomp-clang.tar.gz +f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch +19bfb9282455d39d07dbb2b1293b03a45c57d522fbb9c5e58dac034200669628b97e7a90cd4ff5d52d9bb79acfccbef653d8a1140a7f0589ecd6f9b7c4ba0eb6 llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch" diff --git a/community/emscripten-fastcomp/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch b/community/emscripten-fastcomp/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch new file mode 100644 index 0000000000..d5d7f07b5e --- /dev/null +++ b/community/emscripten-fastcomp/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch @@ -0,0 +1,33 @@ +From d12ecb83d01dcb580dd94f4d57828f33d3eb4c35 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 18 Feb 2016 15:33:21 +0100 +Subject: [PATCH 3/3] Fix DynamicLibrary to build with musl libc + +stdin/out/err is part of the libc and not the kernel so we check for the +specific libc that does the unexpected instead of linux. + +This is needed for making it build with musl libc. +--- + lib/Support/DynamicLibrary.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp +index 9a7aeb5..0c1c8f8 100644 +--- a/lib/Support/DynamicLibrary.cpp ++++ b/lib/Support/DynamicLibrary.cpp +@@ -140,10 +140,10 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { + #define EXPLICIT_SYMBOL(SYM) \ + if (!strcmp(symbolName, #SYM)) return &SYM + +-// On linux we have a weird situation. The stderr/out/in symbols are both ++// On GNU libc we have a weird situation. The stderr/out/in symbols are both + // macros and global variables because of standards requirements. So, we + // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. +-#if defined(__linux__) and !defined(__ANDROID__) ++#if defined(__GLIBC__) + { + EXPLICIT_SYMBOL(stderr); + EXPLICIT_SYMBOL(stdout); +-- +2.7.3 + diff --git a/community/emscripten-fastcomp/llvm-fix-build-with-musl-libc.patch b/community/emscripten-fastcomp/llvm-fix-build-with-musl-libc.patch new file mode 100644 index 0000000000..6ee91ea44d --- /dev/null +++ b/community/emscripten-fastcomp/llvm-fix-build-with-musl-libc.patch @@ -0,0 +1,46 @@ +From 5c571082fdaf61f6df19d9b7137dc26d71334058 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 18 Feb 2016 10:33:04 +0100 +Subject: [PATCH 2/3] Fix build with musl libc + +On musl libc the fopen64 and fopen are the same thing, but for +compatibility they have a `#define fopen64 fopen`. Same applies for +fseek64, fstat64, fstatvfs64, ftello64, lstat64, stat64 and tmpfile64. +--- + include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h +index 7becdf0..7f14427 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.h ++++ b/include/llvm/Analysis/TargetLibraryInfo.h +@@ -18,6 +18,26 @@ + #include "llvm/IR/Module.h" + #include "llvm/Pass.h" + ++#undef fopen64 ++#undef fseeko64 ++#undef fstat64 ++#undef fstatvfs64 ++#undef ftello64 ++#undef lstat64 ++#undef stat64 ++#undef tmpfile64 ++#undef F_GETLK64 ++#undef F_SETLK64 ++#undef F_SETLKW64 ++#undef flock64 ++#undef open64 ++#undef openat64 ++#undef creat64 ++#undef lockf64 ++#undef posix_fadvise64 ++#undef posix_fallocate64 ++#undef off64_t ++ + namespace llvm { + /// VecDesc - Describes a possible vectorization of a function. + /// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized +-- +2.7.3 + |