# -*- coding: utf-8; mode: tcl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2

PortSystem              1.0
PortGroup               sourcehut 1.0
PortGroup               compiler_blacklist_versions 1.0

name                    uxn
sourcehut.setup         rabbits uxn a0dec6c304ead9d5ab964dff8df1936105a2ea2d
version                 20250124
revision                0

categories              emulators
license                 MIT
maintainers             nomaintainer

description             An assembler and emulator for the Uxn \
                        stack-machine, written in ANSI C.
long_description        Uxn is a virtual machine with 32 instructions. \
                        This one-page computer is capable of hosting small \
                        applications, programmable in a unique language. It \
                        was designed with an implementation-first mindset \
                        with a focus on creating portable tools and games.

homepage                https://100r.co/site/uxn.html

checksums               rmd160  6f0240946f68a37f9dd29149630d19142221b1ac \
                        sha256  48713204a6932a93439491db3604e8d73fff20a309ca64733f40471e63f00b9e \
                        size    302591

depends_lib             port:libsdl2

patchfiles              patch-uxn-build.diff

use_configure           no

# gcc-4.2 fails to build it, because does not support required flag.
# gcc13 builds it normally though. No reason to blacklist all *gcc*.
compiler.blacklist-append \
                        *gcc-4.* {clang < 500}
configure.cflags-append -std=c89 -Wno-typedef-redefinition -D_C99_SOURCE

build.cmd               ${worksrcpath}/build.sh
build.args              --no-run
build.env               CC=${configure.cc} \
                        "CFLAGS=${configure.cflags} [get_canonical_archflags cc]" \
                        "LDFLAGS=${configure.ldflags} [get_canonical_archflags ld]"

destroot {
    set demos_dir       ${destroot}${prefix}/share/examples/${name}/demos
    set doc_dir         ${destroot}${prefix}/share/doc/${name}

    xinstall -d -m 0755 ${demos_dir} ${doc_dir}
    xinstall -m 0644 {*}[glob ${worksrcpath}/projects/examples/demos/*.tal] ${demos_dir}
    xinstall -m 0644 -W ${worksrcpath} LICENSE README.md ${doc_dir}
    xinstall -m 0755 ${build.dir}/bin/uxnasm ${build.dir}/bin/uxncli ${build.dir}/bin/uxnemu \
                ${destroot}${prefix}/bin
}

notes "
To get started, see ${prefix}/share/doc/${name}/README.md and
${prefix}/share/examples/${name}/demos/.
"

livecheck.type          none
