# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
# Contributor: carstene1ns <arch carsten-teibes de> - http://git.io/ctPKG
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
# Contributor: Vlad Kolotvin <vlad.kolotvin@gmail.com>

pkgname=emscripten
pkgver=1.34.4
pkgrel=1
pkgdesc="LLVM-based project that compiles C and C++ into highly-optimizable JavaScript in asm.js format"
arch=('i686' 'x86_64')
url="http://emscripten.org"
license=('custom')
depends=('nodejs' 'python2')
makedepends=('cmake' 'libxml2')
optdepends=('java-environment: for using clojure (optimized builds)'
            'ruby: for using websockify addon')
install=$pkgname.install
source=(emscripten-$pkgver.tar.gz::"https://github.com/kripken/emscripten/archive/$pkgver.tar.gz"
        emscripten-fastcomp-$pkgver.tar.gz::"https://github.com/kripken/emscripten-fastcomp/archive/$pkgver.tar.gz"
        emscripten-fastcomp-clang-$pkgver.tar.gz::"https://github.com/kripken/emscripten-fastcomp-clang/archive/$pkgver.tar.gz"
        "emscripten.sh")
sha256sums=('d2a600bf68db41c6ae4d0689504ceca2ebf00c1cfe4263cf86c48a5330c16ad4'
            '61769db5fc51f70b46a07f1efa095121b204ace4e8516401b09c68479aad99a9'
            '70e77714380345ed2c175959f5f33198860f631baf95a88cce7358ccab017e5b'
            '556dc0126a439071e2591672c27f73a470cc260f37adc4994d698c04c7617847')

prepare() {
  cd emscripten-fastcomp-$pkgver

  # reset folder for out-of-source build
  rm -rf build
  mkdir build

  # put clang source into the right place (http://git.io/i1GBkg)
  rm -rf tools/clang
  ln -s "$srcdir"/emscripten-fastcomp-clang-$pkgver tools/clang

  # python2 shebang fixes
  cd ../emscripten-$pkgver
  sed '1s|python$|python2|' -i $(find third_party tools -name \*.py) emrun

  # adapt config file template to use our custom environment variable and path
  sed -e "s|getenv('LLVM')|getenv('EMSCRIPTEN_FASTCOMP')|" \
    -e 's|{{{ LLVM_ROOT }}}|/usr/lib/emscripten-fastcomp|' \
    -i tools/settings_template_readonly.py
}

build() {
  cd emscripten-fastcomp-$pkgver/build

  CC=gcc CXX=g++ cmake .. -DPYTHON_EXECUTABLE=/usr/bin/python2 \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_SKIP_RPATH=YES \
    -DLLVM_TARGETS_TO_BUILD="X86;JSBackend" \
    -DLLVM_BUILD_RUNTIME=OFF \
    -DLLVM_INCLUDE_EXAMPLES=OFF \
    -DLLVM_INCLUDE_TESTS=OFF \
    -DCLANG_INCLUDE_EXAMPLES=OFF \
    -DCLANG_INCLUDE_TESTS=OFF
  make
}

package() {
  # exported variables
  install -Dm755 "$srcdir"/emscripten.sh "$pkgdir"/etc/profile.d/emscripten.sh

  # LLVM-backend, TODO: include only needed tools
  cd "$srcdir"/emscripten-fastcomp-$pkgver
  install -Dm644 emscripten-version.txt "$pkgdir"/usr/lib/emscripten-fastcomp/emscripten-version.txt
  install -m755 build/bin/* "$pkgdir"/usr/lib/emscripten-fastcomp

  # copy structure
  cd "$srcdir"/emscripten-$pkgver
  install -d "$pkgdir"/usr/lib/emscripten
  cp -rup em* cmake site src system third_party tools "$pkgdir"/usr/lib/emscripten

  # remove clutter
  rm "$pkgdir"/usr/lib/emscripten-fastcomp/{*-test,llvm-lit}
  rm "$pkgdir"/usr/lib/emscripten/*.bat

  # docs
  install -d "$pkgdir"/usr/share/doc
  ln -s /usr/lib/emscripten/site/source/docs "$pkgdir"/usr/share/doc/$pkgname

  # license
  install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}
