# -*- 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

name                    basiliskii
github.setup            cebix macemu 6393d14abf31b302d578d05da7e5ddbddd07ae45
version                 20220412
revision                0
categories              emulators
license                 GPL-2+
maintainers             nomaintainer

description             Opensource 68k Mac emulator.
long_description        Longstanding 68K Macintosh emulator.
homepage                http://basilisk.cebix.net
checksums               rmd160  86371e3fb7ee297a516d2f194348b06c98857b6f \
                        sha256  9d37ea63ada5e28963d51b7bce6355ee28eb9263864581e75d8301a27aaff90b \
                        size    2855981
github.tarball_from     tarball

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

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

# https://github.com/cebix/macemu/issues/292
patchfiles-append       patch-006-utils_macosx.mm.diff

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

depends_build-append    port:autoconf \
                        port:automake \
                        port:libtool \
                        path:bin/pkg-config:pkgconfig

# /bin/sh: line 1: 10603 Segmentation fault obj/build68k < ./../uae_cpu/table68k > cpudefs.cpp
compiler.blacklist-append \
                        *gcc-4.0 *gcc-4.2

# 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:basiliskii-gui \
                        port:libsdl2

    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
    }
}
