mirror of https://github.com/mosra/magnum.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.6 KiB
95 lines
3.6 KiB
# 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 |
|
}
|
|
|