# Copyright (c) 2023 Emma Tebibyte # Copyright (c) 2023 DTB # Copyright (c) 2023 Sasha Koshka # 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. # If we want to use POSIX make we can’t use ifeq # .POSIX: # .PRAGMA: posix_202x .PHONY: clean .PHONY: install .PHONY: test PREFIX=/usr/local CC=cc CFLAGS=-O3 -Lbuild/lib -idirafter include RUSTC=rustc +nightly RUSTCFLAGS=-Zlocation-detail=none -Copt-level=z -Ccodegen-units=1 -Cpanic=abort -Clto=y -Cstrip=symbols -Ctarget-cpu=native ifeq ($(CC), gcc) CFLAGS=-O3 -s -Wl,-z,noseparate-code,-z,nosectionheader -flto -Lbuild/lib \ -idirafter include endif ifeq ($(CC), clang) CFLAGS=-O3 -Wall -Lbuild/lib -idirafter include endif ifeq ($(CC), tcc) CFLAGS=-O3 -s -Wl -flto -Lbuild/lib -idirafter include endif build: build_dir false intcmp scrut str strcmp true build_dir: mkdir -p build/o build/lib build/bin clean: rm -rf build/ install: build mkdir -p $(PREFIX)/bin $(PREFIX)/lib mkdir -p $(PREFIX)/man/man1 $(PREFIX)/man/man3 cp -f build/lib/*.so $(PREFIX)/lib/ cp -f build/bin/* $(PREFIX)/bin/ cp -f docs/*.1 $(PREFIX)/man/man1/ cp -f docs/*.3 $(PREFIX)/man/man3/ test: build tests/cc-compat.sh tests/posix-compat.sh false: src/false.rs build_dir $(RUSTC) $(RUSTCFLAGS) -o build/bin/false src/false.rs fop: src/fop.rs build_dir $(RUSTC) $(RUSTCFLAGS) -o build/bin/fop src/fop.rs intcmp: src/intcmp.c build_dir $(CC) $(CFLAGS) -o build/bin/intcmp src/intcmp.c scrut: src/scrut.c build_dir $(CC) $(CFLAGS) -o build/bin/scrut src/scrut.c str: src/str.c build_dir $(CC) $(CFLAGS) -o build/bin/str src/str.c strcmp: src/strcmp.c build_dir $(CC) $(CFLAGS) -o build/bin/strcmp src/strcmp.c true: src/true.rs build_dir $(RUSTC) $(RUSTCFLAGS) -o build/bin/true src/true.rs