# -*- 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 1c9b21f580501c5d5833935375945479c5651964
version                 20171215
checksums               rmd160  297cd3d06818cec3e567adb0b19b3fc3d7334afb \
                        sha256  54064cde03e8b5b2d18f2d4bda1dae45502dfb3c94297fd1dc606ff15ef20321

# we need a name here as the github-supplied name is not correct for this port
name                    basiliskii-devel

# at present basiliskii is best built as 32bit, so we we build the gtk2 gui
# separately as a subport to avoid expensively rebuilding all of
# gtk2 and all the dependencies as +universal
subport                 basiliskii-gui-devel {}

categories              emulators
license                 GPL-2+
platforms               darwin
maintainers             {kencu @kencu} openmaintainer

homepage                http://basilisk.cebix.net/

worksrcdir              ${distname}/BasiliskII/src/Unix
configure.cmd           ./autogen.sh
configure.optflags      -O3

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

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

set basiliskii_dir      /BasiliskII
universal_variant       no

if {${subport} eq "basiliskii-devel"} {

    conflicts           basiliskii
    description         Opensource 68k Mac emulator.
    
    long_description \
        Longstanding 68K Macintosh emulator. Requires an appropriate Macintosh ROM image and a copy \
        of Mac OS (0.x thru 7.5 for Classic emulation, 7.x or 8.0/8.1 for Mac II emulation), and \
        these are not supplied with this port. The emulator will be installed into your \
        MacPorts Applications folder.

    platform darwin i386 {
        supported_archs   i386

        # no need for gui to be same architecture as the emulator
        depends_skip_archcheck-append \
                          basiliskii-gui-devel

        depends_lib       port:libsdl \
                          port:basiliskii-gui-devel

        configure.args    --disable-vosf \
                          --without-esd  \
                          --without-mon  \
                          --enable-sdl-video \
                          --enable-sdl-audio \
                          --enable-jit-compiler \
                          --enable-standalone-gui \
                          --with-gtk=no
        
        configure.ldflags-append    \
                          -Wl,-no_pie
    }

    platform darwin powerpc {
        # on 10.4 ppc you don't need this. On 10.5 ppc the SDL version segfaulted, so offer this version
        supported_archs   ppc
        configure.args    --disable-vosf \
                          --without-esd  \
                          --without-mon \
                          --enable-macosx-sound \
                          --enable-macosx-gui \
                          --without-gtk
    }

    build.target          BasiliskII BasiliskII_app

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

} elseif {${subport} eq "basiliskii-gui-devel"} {

    name                basiliskii-gui-devel
    conflicts           basiliskii-gui

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

    depends_lib         port:gtk2

    configure.args      --disable-vosf \
                        --without-esd  \
                        --without-mon \
                        --enable-standalone-gui \
                        --with-gtk=gtk2
                        
    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
    }
}