Nexoniarz is the sole author and SchOS was never published under Apache-2.0, so this is a straight relicence. LICENSE is the FSF GPLv2 text, every first-party SPDX header moves to GPL-2.0-or-later, and NOTICE, README.md, docs/licensing.md and the site say so. projects/schfs-linux follows the rest of the tree. The GPL gives copyleft: a fork has to ship its source. It also lifts the old "Linux drivers, never" rule, since GPL-2.0-only code combines with GPL-2.0-or-later. "Or later" leaves room for GPLv3, but one binary still has to pick one version, so docs/licensing.md now keeps Apache-2.0 and GPLv3 code out of the kernel to keep Linux code possible there. BSD 4-clause code goes from "avoid" to "no", because the advertising clause is GPL-incompatible. LDLS still ships no .ko. That boundary is now project policy rather than a legal requirement, and ldls.md, devices.md and licensing.md section 6 say so. refmod declares license=GPL, and ldls-check passes (27 checks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
84 lines
3.4 KiB
Makefile
84 lines
3.4 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# kilo — BSD-2-Clause: https://github.com/antirez/kilo
|
|
#
|
|
# SchOS's text editor, installed as sysroot/bin/kilo with `edit` beside it.
|
|
#
|
|
# It is here because the alternative every small system reaches for is vi, and
|
|
# vi is a program you have to be taught before you can use it to fix the file
|
|
# that is stopping the machine booting. kilo is the other kind: the arrow keys
|
|
# move the cursor, typing inserts, Ctrl-S saves, Ctrl-Q quits, Ctrl-F finds,
|
|
# and the bottom line says so while you work. Nobody has to be told any of it.
|
|
#
|
|
# The whole editor is one 1,300-line C file with no dependencies beyond libc --
|
|
# termios and TIOCGWINSZ, both of which SchOS already has because zsh needs
|
|
# them. That, and licensing at the time, is why it was chosen over nano: nano
|
|
# is GPLv3 and wants ncurses at runtime, and SchOS was then Apache-2.0. Under
|
|
# GPL-2.0-or-later nano is possible, but kilo already does the job.
|
|
#
|
|
# What it does not do: no undo, no multiple buffers, no configuration, no
|
|
# mouse, no UTF-8 beyond passing bytes through. It edits one file.
|
|
|
|
include ../mk/port.mk
|
|
|
|
# Pinned to a commit rather than a release, because kilo has never had one --
|
|
# it was written as the worked example for a tutorial and has been finished
|
|
# ever since. A commit is at least an exact thing to name.
|
|
#
|
|
# The checksum is of GitHub's generated archive. Those are reproducible for a
|
|
# given commit, but they are generated rather than uploaded, so if this ever
|
|
# fails to verify check that upstream still has the commit before assuming the
|
|
# tarball was tampered with.
|
|
KILO_COMMIT := 323d93b29bd89a2cb446de90c4ed4fea1764176e
|
|
KILO_URL := https://github.com/antirez/kilo/archive/$(KILO_COMMIT).tar.gz
|
|
KILO_SHA256 := 79e62c23fdf369fa0cbbeaab9fd8ae2848dcc0156faf6efc89ea274528b39723
|
|
|
|
TARBALL := $(DISTDIR)/kilo-$(KILO_COMMIT).tar.gz
|
|
|
|
CFLAGS := -static -Os -D__SCHOS__ -I$(MUSL)/include $(CFLAGS_BT) \
|
|
-D_BSD_SOURCE -std=c99 -Wall
|
|
LDFLAGS := -static -L$(MUSL)/lib -lc
|
|
|
|
$(TARBALL): | $(DISTDIR)
|
|
curl -fsSL -o $@ $(KILO_URL)
|
|
sh $(SHA256CHECK) "$(KILO_SHA256)" "$@"
|
|
|
|
download: $(TARBALL)
|
|
|
|
$(SRCDIR): $(TARBALL)
|
|
mkdir -p $(PORTDIR)
|
|
rm -rf $(PORTDIR)/kilo-$(KILO_COMMIT)
|
|
tar -xzf $< -C $(PORTDIR)
|
|
mv $(PORTDIR)/kilo-$(KILO_COMMIT) $@
|
|
|
|
# One file, so its own Makefile is not worth invoking -- it hardcodes flags
|
|
# that assume a hosted glibc and would link against the build host's libc.
|
|
$(BUILDDIR)/kilo: | $(SRCDIR)
|
|
mkdir -p $(BUILDDIR)
|
|
$(CC) $(CFLAGS) -o $@ $(SRCDIR)/kilo.c $(LDFLAGS)
|
|
|
|
build: $(BUILDDIR)/kilo
|
|
|
|
# `edit` as well as `kilo`.
|
|
#
|
|
# Two real copies rather than a link, for the reason ports/toybox/Makefile
|
|
# gives at length: mkschfs deduplicates by content, so the image holds one copy
|
|
# with two names either way, and this needs nothing from the host filesystem.
|
|
#
|
|
# The second name is not decoration. Somebody who has just arrived at a SchOS
|
|
# prompt with a file to fix will type `edit`; they will not guess `kilo`.
|
|
$(PORTDIR)/.installed: $(BUILDDIR)/kilo | $(SYSROOT)/bin
|
|
cp $(BUILDDIR)/kilo $(SYSROOT)/bin/kilo
|
|
cp $(BUILDDIR)/kilo $(SYSROOT)/bin/edit
|
|
chmod 755 $(SYSROOT)/bin/kilo $(SYSROOT)/bin/edit
|
|
@mkdir -p $(SYSROOT)/usr/share/licenses/kilo
|
|
cp $(SRCDIR)/LICENSE $(SYSROOT)/usr/share/licenses/kilo/LICENSE
|
|
@touch $@
|
|
@echo "kilo: installed as /bin/kilo and /bin/edit"
|
|
|
|
install: $(PORTDIR)/.installed
|
|
|
|
clean:
|
|
rm -rf $(BUILDDIR) $(PORTDIR)/.installed
|
|
|
|
distclean: clean
|
|
rm -rf $(PORTDIR)
|