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

PortSystem                  1.0
PortGroup                   github 1.0
PortGroup                   makefile 1.0

github.setup                barracuda156 musl-xnu 4bddd3fa7d15a47981df3e79e0132348669a2f87
version                     2026.07.25
revision                    0
categories                  devel
maintainers                 {@barracuda156 macos-powerpc.org:barracuda} openmaintainer
license                     MIT
description                 port of musl libc to macOS XNU kernel
long_description            WIP {*}${description}.
checksums                   rmd160  f53ebe481e7e240b7ce00b4c2c0a7032394a4ebc \
                            sha256  22fde6826d0d2c7e9e9b6443bb2cbb29da14551f785f97be7d18f618efe33bc8 \
                            size    1207434
github.tarball_from         archive

patch.pre_args-replace      -p0 -p1

post-patch {
    delete ${worksrcpath}/Makefile
    move ${worksrcpath}/Makefile.xnu ${worksrcpath}/Makefile
}

set musl_prefix             ${prefix}/libexec/musl

post-patch {
    reinplace "s|prefix = /opt/local/musl|prefix = ${musl_prefix}|" ${worksrcpath}/Makefile
}

# sterilize MacPorts build environment; we want nothing picked up from MP prefix
compiler.cpath
compiler.library_path

configure.cxx_stdlib

configure.cflags
configure.cxxflags
configure.cppflags
configure.optflags
configure.ldflags

configure.universal_cflags
configure.universal_cxxflags
configure.universal_cppflags
configure.universal_ldflags
configure.universal_args

configure.ccache    no
configure.distcc    no

# sterilize PATH
configure.env-append \
                    PATH=/usr/bin:/bin:/usr/sbin:/sbin
build.env-append    PATH=/usr/bin:/bin:/usr/sbin:/sbin

# TODO: support IBM long double, drop mlong-double-64 here.
platform darwin {
    if {${configure.build_arch} eq "ppc"} {
        build.args-append       ARCH=powerpc-xnu
        build.args-append       {CFLAGS=-mlong-double-64 -Wall -Wpointer-arith -Wno-cast-align -Wno-parentheses -Wno-char-subscripts -Wno-uninitialized \
            -Wno-sequence-point -Wno-missing-braces -Wno-unused-value -Wno-unused-function -Wno-overflow -Wno-int-to-pointer-cast}

        destroot.args-append    ARCH=powerpc-xnu
    }
}

# Hello world confirmed:
# gcc-4.2 -nostdinc -nostdlib -I/opt/local/libexec/musl/include \
#     -o hello_musl ./hello_musl.c \
#     /opt/local/libexec/musl/lib/crt1.o /opt/local/libexec/musl/lib/libc.a -lgcc
