# 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 RUSTC=rustc RUSTCFLAGS=-C opt-level=z -C codegen-units=1 -C panic=abort -C lto=y -C strip=symbols ifeq ($(CC), gcc) CFLAGS=-O3 -s -Wl,-z,noseparate-code,-z,nosectionheader -flto \ -Lbuild/lib endif ifeq ($(CC), clang) CFLAGS=-O3 -Wall -Lbuild/lib endif ifeq ($(CC), tcc) CFLAGS=-O3 -s -Wl -flto -Lbuild/lib 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 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