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

PortSystem              1.0
PortGroup               github 1.0

github.setup            cebix macemu 6393d14abf31b302d578d05da7e5ddbddd07ae45
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from     tarball
version                 20220412
checksums               rmd160  86371e3fb7ee297a516d2f194348b06c98857b6f \
                        sha256  9d37ea63ada5e28963d51b7bce6355ee28eb9263864581e75d8301a27aaff90b
name                    basiliskii

categories              emulators
license                 GPL-2+
maintainers             nomaintainer

description             Opensource 68k Mac emulator.
long_description        Longstanding 68K Macintosh emulator.
homepage                http://basilisk.cebix.net/

worksrcdir              ${distname}/BasiliskII/src/Unix
configure.cmd           ./autogen.sh
configure.args          --disable-vosf \
                        --without-esd  \
                        --without-mon  \
                        --enable-sdl-video \
                        --enable-sdl-audio \
                        --enable-standalone-gui \
                        --with-sdl2 \
                        --with-gtk=no

patch.dir               ${worksrcpath}/..
patchfiles-append       patch-001-Basilisk-makefile-in-ditto-patch.diff \
                        patch-002-configure-ac-delete-stdlib-addition-darwin.diff \
                        patch-003-basiliskii-fix-missing-keycodes-macosxgui-selection.diff \
                        patch-004-arm64-mach-exceptions.diff \
                        patch-005-arm64-32bpp.diff

post-patch {
    # Avoid C++20 <version> header collision on case-insensitive file systems.
    move ${worksrcpath}/../slirp/VERSION \
         ${worksrcpath}/../slirp/VERSION.txt
}

depends_build           port:autoconf \
                        port:pkgconfig \
                        port:automake

# to fix an errant header owned by arpack that also provides debug.h (not a great name, arpack!)
# force finding our includes first
configure.cppflags-prepend -I${worksrcpath}/../include

set basiliskii_dir      /BasiliskII

if {${subport} eq "${name}"} {

    depends_lib         port:libsdl2 \
                        port:basiliskii-gui

    build.target        BasiliskII BasiliskII_app

    post-destroot {
        file mkdir ${destroot}${applications_dir}${basiliskii_dir}
        copy ${worksrcpath}/BasiliskII.app ${destroot}${applications_dir}${basiliskii_dir}
        file delete ${destroot}${prefix}/bin/BasiliskIIGUI
    }
}

subport  basiliskii-gui {
    name                basiliskii-gui

    description         Graphical user interface to configure basiliskii.
    long_description    ${description}

    depends_lib         path:lib/pkgconfig/gtk+-2.0.pc:gtk2

    configure.args-replace \
                        --with-gtk=no \
                        --with-gtk=yes

    build.target        BasiliskIIGUI_app
    
    post-destroot {
        file mkdir ${destroot}${applications_dir}${basiliskii_dir}
        copy ${worksrcpath}/BasiliskIIGUI.app ${destroot}${applications_dir}${basiliskii_dir}

        # gui target insists on installing some of the basiliskii files, which conflicts with basiliskii subport
        # so we manually delete these to avoid a conflict

        file delete ${destroot}${prefix}/bin/BasiliskII
        file delete ${destroot}${prefix}/share/BasiliskII/fbdevices
        file delete ${destroot}${prefix}/share/BasiliskII/keycodes
        file delete ${destroot}${prefix}/share/BasiliskII/tunconfig
        file delete ${destroot}${prefix}/share/man/man1/BasiliskII.1.gz
        file delete ${destroot}${prefix}/share/man/man1/BasiliskII.1
    }
}
