bonsix/Makefile

88 lines
2.4 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Copyright (c) 20232024 Emma Tebibyte <emma@tebibyte.media>
# Copyright (c) 2023 DTB <trinity@trinity.moe>
# Copyright (c) 2023 Sasha Koshka <sashakoshka@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
.POSIX:
.PRAGMA: posix_202x # future POSIX standard support à la pdpmake(1)
.PHONY: all
.PHONY: clean
.PHONY: install
.PHONY: test
PREFIX=/usr/local
CC=cc
RUSTC=rustc
# to build, first run ./configure
include *.mk
all: dj false fop intcmp scrut str strcmp true
build:
# keep build/include until bindgen(1) has stdin support
# https://github.com/rust-lang/rust-bindgen/issues/2703
mkdir -p build/bin build/include build/lib build/o build/test
clean:
rm -rf build/ dist/
dist: all
mkdir -p dist/bin dist/share/man/man1
cp build/bin/* dist/bin/
cp docs/*.1 dist/share/man/man1/
install: dist
mkdir -p $(PREFIX)
cp -r dist/* $(PREFIX)/
test: build
tests/cc-compat.sh
tests/posix-compat.sh
$(RUSTC) --test src/getopt-rs/lib.rs -o build/test/getopt
sysexits: build
# bandage solution until bindgen(1) gets stdin support
printf '#define EXIT_FAILURE 1\n' | cat - include/sysexits.h \
> build/include/sysexits.h
bindgen --default-macro-constant-type signed --use-core --formatter=none \
"$$(printf '#include <sysexits.h>\n' \
| cpp -M -idirafter "build/include" - \
| sed 's/ /\n/g' | grep sysexits.h)" \
| $(RUSTC) $(RUSTCFLAGS) --crate-type lib -o build/o/libsysexits.rlib -
libgetopt: src/getopt-rs/lib.rs
$(RUSTC) $(RUSTCFLAGS) --crate-type=lib --crate-name=getopt \
-o build/o/libgetopt.rlib src/getopt-rs/lib.rs
dj: src/dj.c build
$(CC) $(CFLAGS) -o build/bin/dj src/dj.c
false: src/false.c build
$(CC) $(CFLAGS) -o build/bin/false src/false.c
fop: src/fop.rs build libgetopt sysexits
$(RUSTC) $(RUSTFLAGS) --extern getopt=build/o/libgetopt.rlib \
-o build/bin/fop src/fop.rs
intcmp: src/intcmp.c build
$(CC) $(CFLAGS) -o build/bin/intcmp src/intcmp.c
scrut: src/scrut.c build
$(CC) $(CFLAGS) -o build/bin/scrut src/scrut.c
str: src/str.c build
$(CC) $(CFLAGS) -o build/bin/str src/str.c
strcmp: src/strcmp.c build
$(CC) $(CFLAGS) -o build/bin/strcmp src/strcmp.c
true: src/true.c build
$(CC) $(CFLAGS) -o build/bin/true src/true.c