# SPDX-License-Identifier: GPL-2.0-or-later
# SchOS ports — third-party software, one directory per port.
# Every port's licence must combine with GPL-2.0-or-later; see docs/licensing.md.
#
#   ports/musl/    libc — installs headers/libs to build/ports/musl/prefix
#   ports/mksh/    MirBSD Korn Shell — installed as sysroot/bin/sh
#   ports/toybox/  core utilities — installed as sysroot/bin/<applet>
#   ports/kilo/    the text editor — installed as sysroot/bin/{kilo,edit}
#   ports/ncurses/ terminfo + screen library — link-time only, ships nothing
#   ports/zsh/     the Z shell — installed as sysroot/bin/zsh, beside /bin/sh
#
# A port directory holds only a Makefile and optional patches/. Everything
# generated lives in build/ports/<name>/ — see mk/port.mk for the contract.
# Tarballs are cached in dist/ and are never removed by 'clean'.
#
# Order matters: musl must be built before anything that links against it.

# Ports that live in this directory but are deliberately not built by `make`.
# Empty for now; the filter stays because the reason it existed will recur --
# a port whose licence cannot be combined with GPL-2.0-or-later can be kept here for
# local testing but must never be built into a SchOS image.
NOTPORTS :=
PORTS := $(filter-out $(NOTPORTS), \
           $(patsubst %/,%,$(sort $(dir $(wildcard */Makefile)))))

.PHONY: all $(PORTS) clean distclean

all: $(PORTS)

mksh:      musl
toybox:    musl
kilo:      musl
fastfetch: musl
ncurses:   musl
zsh:       musl ncurses

$(PORTS):
	$(MAKE) -C $@

clean distclean:
	for p in $(PORTS); do $(MAKE) -C $$p $@; done
