# 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.35.2
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=('56feaa3037ec72e2d5299b0a92d7e3b9e1da164db32338c1fe02fe3ca68d8adb'
            '3bbc7990138381b0cbdac39f83afee76fa143efe81dba4939c1f514dccc307a3'
            '5f7090fe66b9462e172cb7a889d9044aa301ffc946072293dd2b269973f358ce'
            '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
}
