# -*- 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 96e512bd6376e78a2869f16dcc8a9028bce5ee72
version                 20250106
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  7470a15d280015d6341eaf6737e2a4da3a8e0903 \
                        sha256  c13dba1e9252b1491851c90c737a1b1978e98aa926260845d980c114a43206e2 \
                        size    2857413
github.tarball_from     archive

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-005-arm64-32bpp.diff

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

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
# While the build works without setting cxx_standard, usage of the new ABI might cause issues.
compiler.cxx_standard   2011

# 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}} {
    PortGroup           legacysupport 1.1

    # Only wrappers
    legacysupport.newest_darwin_requires_legacy 0
    legacysupport.redirect_bins BasiliskII

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