abinfo "Building Godot Engine ..."

if ab_match_arch amd64; then
    GODOT_ARCH=x86_64
elif ab_match_arch arm64; then
    GODOT_ARCH=arm64
elif ab_match_arch riscv64; then
    GODOT_ARCH=rv64
elif ab_match_arch ppc64el; then
    GODOT_ARCH=ppc64
elif ab_match_arch loongarch64; then
    GODOT_ARCH=loongarch64
elif ab_match_arch loongarch64_nosimd; then
    GODOT_ARCH=loongarch64
else
    aberr "Unsupported architecture."
fi

abinfo "Use custom build name \"aosc\" ..."
# BUILD_NAME will included in version string by scons build script,
# to distinguish our distro build from upstream official build
export BUILD_NAME=aosc

ARGV=(
    platform=linuxbsd
    target=editor
    production=yes
    debug_symbols=yes
    arch="$GODOT_ARCH"
    module_mono_enabled=yes

    progress=no
    debug_paths_relative=yes

    engine_update_check=no

    builtin_certs=no
    system_certs_path=/etc/ssl/ca-bundle.crt

    # use system libraries
    # commented libraries are using bundled version due to not in our repo unless specified otherwise
    builtin_brotli=no
    # clipper2
    # embree, godot use patched version, system version crashed when occlusion culling active
    builtin_enet=no
    builtin_freetype=no
    # msdfgen
    # glslang, need specific version
    builtin_graphite=no
    # harfbuzz, issue with extension
    builtin_sdl=no
    # icu4c, issue with extension
    builtin_libjpeg_turbo=no
    builtin_libogg=no
    builtin_libpng=no
    builtin_libtheora=no
    builtin_libwebp=no
    # wslay
    builtin_mbedtls=no
    builtin_miniupnpc=no
    # openxr
    builtin_pcre2=no
    # recastnavigation
    # rvo2_2d
    # rvo2_3d
    # xatlas
    builtin_zlib=no
    builtin_zstd=no
    use_static_cpp=no
)
scons ${ARGV[*]}

EXE_NAME="godot.linuxbsd.editor.$GODOT_ARCH.mono"
abinfo "Building Godot C# binding ..."
"$SRCDIR"/bin/"$EXE_NAME" \
	--headless \
	--generate-mono-glue "$SRCDIR"/modules/mono/glue
"$SRCDIR"/modules/mono/build_scripts/build_assemblies.py \
	--godot-output-dir="$SRCDIR"/bin \
	--godot-platform=linuxbsd

abinfo "Installing Godot..."
install -dv "$PKGDIR"/usr/lib/godot/
mv -v "$SRCDIR"/bin/GodotSharp \
	"$PKGDIR"/usr/lib/godot/
install -Dvm755 "$SRCDIR"/bin/"$EXE_NAME" "$PKGDIR"/usr/lib/godot/godot
mkdir -pv "$PKGDIR"/usr/bin/
ln -sv ../lib/godot/godot "$PKGDIR"/usr/bin/godot

abinfo "Installing appdata ..."
install -Dvm644 "$SRCDIR"/misc/dist/linux/org.godotengine.Godot.appdata.xml \
	"$PKGDIR"/usr/share/appdata/org.godotengine.Godot.appdata.xml

abinfo "Installing desktop entry ..."
install -Dvm644 "$SRCDIR"/misc/dist/linux/org.godotengine.Godot.desktop \
	"$PKGDIR"/usr/share/applications/org.godotengine.Godot.desktop
install -Dvm644 "$SRCDIR"/misc/logo/icon.svg \
	"$PKGDIR"/usr/share/icons/hicolor/scalable/apps/godot.svg

abinfo "Installing MIME info ..."
install -Dvm644 "$SRCDIR"/misc/dist/linux/org.godotengine.Godot.xml \
	"$PKGDIR"/usr/share/mime/packages/org.godotengine.Godot.xml
install -Dvm644 "$SRCDIR"/misc/dist/document_icons/project.svg \
	"$PKGDIR"/usr/share/icons/hicolor/scalable/mimetypes/x-godot-project.svg
install -Dvm644 "$SRCDIR"/misc/dist/document_icons/resource.svg \
	"$PKGDIR"/usr/share/icons/hicolor/scalable/mimetypes/x-godot-resource.svg
install -Dvm644 "$SRCDIR"/misc/dist/document_icons/scene.svg \
	"$PKGDIR"/usr/share/icons/hicolor/scalable/mimetypes/x-godot-scene.svg
install -Dvm644 "$SRCDIR"/misc/dist/document_icons/shader.svg \
	"$PKGDIR"/usr/share/icons/hicolor/scalable/mimetypes/x-godot-shader.svg
install -Dvm644 "$SRCDIR"/misc/dist/document_icons/gdscript.svg \
	"$PKGDIR"/usr/share/icons/hicolor/scalable/mimetypes/x-gdscript.svg

abinfo "Installing shell completions ..."
install -Dvm644 "$SRCDIR"/misc/dist/shell/godot.bash-completion \
	"$PKGDIR"/usr/share/bash-completion/completions/godot
install -Dvm644 "$SRCDIR"/misc/dist/shell/_godot.zsh-completion \
    "$PKGDIR"/usr/share/zsh/site-functions/_godot
install -Dvm644 "$SRCDIR"/misc/dist/shell/godot.fish \
    "$PKGDIR"/usr/share/fish/vendor_completions.d/godot.fish

abinfo "Installing man page ..."
install -Dvm755 "$SRCDIR"/misc/dist/linux/godot.6 \
    "$PKGDIR"/usr/share/man/man6/godot.6
