# Author: mosra <mosra@centrum.cz>
pkgname=android-arm64-magnum
pkgver=dev
pkgrel=1
pkgdesc="C++11/C++14 graphics middleware for games and data visualization (Android ARM64)"
arch=('any')
url="https://magnum.graphics"
license=('MIT')
depends=('android-arm64-corrade')
makedepends=('cmake>=3.20' 'ninja' 'android-ndk' 'corrade')
options=('!strip' '!buildflags')

_rootdir=$startdir/../../

build() {
    if [ ! -d "$_rootdir/build-android-arm64" ] ; then
        mkdir "$_rootdir/build-android-arm64"
        cd "$_rootdir/build-android-arm64"

        cmake .. \
            -DCMAKE_SYSTEM_NAME=Android \
            -DCMAKE_SYSTEM_VERSION=24 \
            -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
            -DCMAKE_ANDROID_STL_TYPE=c++_static \
            -DCMAKE_INSTALL_PREFIX=/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr \
            -G Ninja
    fi

    cd "$_rootdir/build-android-arm64"

    # 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 \
        `# Make libc++ remove transitive includes, both for faster build` \
        `# times and to detect if we're missing a transitive include. Works` \
        `# with libc++ 16+, which is used by NDK r26+.` \
        -DCMAKE_CXX_FLAGS="-D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES" \
        -DCMAKE_COLOR_DIAGNOSTICS=ON \
        -DMAGNUM_WITH_VK=ON \
        -DMAGNUM_WITH_ANYAUDIOIMPORTER=OFF \
        -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_ANDROIDAPPLICATION=ON \
        -DMAGNUM_WITH_EGLCONTEXT=ON \
        -DMAGNUM_WITH_WINDOWLESSEGLAPPLICATION=ON \
        -DMAGNUM_WITH_DISTANCEFIELDCONVERTER=ON \
        -DMAGNUM_WITH_FONTCONVERTER=ON \
        -DMAGNUM_WITH_IMAGECONVERTER=ON \
        -DMAGNUM_WITH_SCENECONVERTER=ON \
        -DMAGNUM_WITH_SHADERCONVERTER=ON \
        -DMAGNUM_WITH_GL_INFO=ON \
        -DMAGNUM_WITH_VK_INFO=ON \
        -DMAGNUM_TARGET_GLES2=OFF \
        -DMAGNUM_BUILD_TESTS=ON \
        -DMAGNUM_BUILD_GL_TESTS=ON \
        -DMAGNUM_BUILD_VK_TESTS=ON
    ninja
}

package() {
    cd "$_rootdir/build-android-arm64"
    DESTDIR="$pkgdir/" ninja install/strip
}
