|
|
|
|
# Author: mosra <mosra@centrum.cz>
|
|
|
|
|
pkgname=emscripten-magnum
|
|
|
|
|
pkgver=dev.wasm
|
|
|
|
|
pkgrel=1
|
|
|
|
|
pkgdesc="C++11/C++14 graphics middleware for games and data visualization (Emscripten, wasm)"
|
|
|
|
|
arch=('any')
|
|
|
|
|
url="https://magnum.graphics"
|
|
|
|
|
license=('MIT')
|
|
|
|
|
depends=('emscripten-corrade')
|
|
|
|
|
makedepends=('cmake' 'emscripten' 'corrade' 'ninja' 'rsync')
|
|
|
|
|
options=('!strip' '!buildflags')
|
|
|
|
|
|
|
|
|
|
_rootdir=$startdir/../../
|
|
|
|
|
|
|
|
|
|
prepare() {
|
|
|
|
|
# rsync can't create the directory on its own if it doesn't exist at all,
|
|
|
|
|
# heh
|
|
|
|
|
mkdir -p $(em-config CACHE)/sysroot/include/
|
|
|
|
|
# This is needed in order to fill ~/.emscripten_cache/sysroot/ with
|
|
|
|
|
# up-to-date dependency headers and libs. There's
|
|
|
|
|
# embuilder build sysroot --force
|
|
|
|
|
# as suggested in https://github.com/emscripten-core/emscripten/pull/13090
|
|
|
|
|
# that does the same in a builtin way, but it DELIBERATELY does not
|
|
|
|
|
# preserve timestamps in any way, forcing a full rebuild every time. Why?!
|
|
|
|
|
# https://github.com/emscripten-core/emscripten/blob/0566a76b500bd2bbd535e108f657fce1db7f6f75/tools/shared.py#L687
|
|
|
|
|
# Could use cp -rp instead of rsync if the system include dir didn't have
|
|
|
|
|
# that stupid designed-to-fail version.h :(
|
|
|
|
|
rsync -rlt /usr/lib/emscripten/system/include/ --exclude=emscripten/version.h $(em-config CACHE)/sysroot/include/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
build() {
|
|
|
|
|
if [ ! -d "$_rootdir/build-emscripten-wasm" ] ; then
|
|
|
|
|
mkdir "$_rootdir/build-emscripten-wasm"
|
|
|
|
|
cd "$_rootdir/build-emscripten-wasm"
|
|
|
|
|
|
|
|
|
|
cmake .. \
|
|
|
|
|
-DCMAKE_TOOLCHAIN_FILE="$_rootdir/toolchains/generic/Emscripten-wasm.cmake" \
|
|
|
|
|
-G Ninja
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
cd "$_rootdir/build-emscripten-wasm"
|
|
|
|
|
|
|
|
|
|
# Put tests into a separate target as they take ages to build. They're
|
|
|
|
|
# built only inside check() so `makepkg --nocheck` will skip building them.
|
|
|
|
|
#
|
|
|
|
|
# Colored output is enabled implicitly. If Ninja detects it's outputting to
|
|
|
|
|
# a pipe, it strips it away from the output; Clang unfortunately doesn't
|
|
|
|
|
# have any env var to temporarily disable colors. The inverse, i.e.
|
|
|
|
|
# preserving colors when Ninja outputs to a pipe can be done with
|
|
|
|
|
# CLICOLOR_FORCE=1: https://github.com/ninja-build/ninja/issues/2196
|
|
|
|
|
cmake .. \
|
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
|
-DCMAKE_INSTALL_PREFIX=/usr/lib/emscripten/system \
|
|
|
|
|
-DCMAKE_COLOR_DIAGNOSTICS=ON \
|
|
|
|
|
-DMAGNUM_DEPLOY_PREFIX=/srv/http/emscripten \
|
|
|
|
|
-DMAGNUM_WITH_AUDIO=ON \
|
|
|
|
|
-DMAGNUM_WITH_EMSCRIPTENAPPLICATION=ON \
|
|
|
|
|
-DMAGNUM_WITH_SDL2APPLICATION=ON \
|
|
|
|
|
-DMAGNUM_WITH_WINDOWLESSEGLAPPLICATION=ON \
|
|
|
|
|
-DMAGNUM_WITH_ANYAUDIOIMPORTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_ANYIMAGECONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_ANYIMAGEIMPORTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_ANYSCENECONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_ANYSCENEIMPORTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_ANYSHADERCONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_MAGNUMFONT=ON \
|
|
|
|
|
-DMAGNUM_WITH_OBJIMPORTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_TGAIMAGECONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_TGAIMPORTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_WAVAUDIOIMPORTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_DISTANCEFIELDCONVERTER=OFF \
|
|
|
|
|
-DMAGNUM_WITH_FONTCONVERTER=OFF \
|
|
|
|
|
-DMAGNUM_WITH_IMAGECONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_SCENECONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_SHADERCONVERTER=ON \
|
|
|
|
|
-DMAGNUM_WITH_GL_INFO=ON \
|
|
|
|
|
-DMAGNUM_WITH_AL_INFO=ON \
|
|
|
|
|
-DMAGNUM_BUILD_TESTS=ON \
|
|
|
|
|
-DMAGNUM_BUILD_GL_TESTS=ON \
|
|
|
|
|
-DCORRADE_TESTSUITE_TEST_TARGET=build-tests
|
|
|
|
|
ninja
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
check() {
|
|
|
|
|
cd "$_rootdir/build-emscripten-wasm"
|
|
|
|
|
|
|
|
|
|
ninja build-tests
|
|
|
|
|
|
|
|
|
|
CORRADE_TEST_COLOR=ON ctest -j9 --output-on-failure -E "(GLTest|GLBenchmark|ALTest)"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
package() {
|
|
|
|
|
cd "$_rootdir/build-emscripten-wasm"
|
|
|
|
|
DESTDIR="$pkgdir/" ninja install
|
|
|
|
|
}
|