# 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 \ -Clink-args=-Wl,-n,-N,--no-dynamic-linker,--no-pie,--build-id=none 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)/share/man/man1 $(PREFIX)/share/man/man3 # cp -f build/lib/*.so $(PREFIX)/lib/ cp -f build/bin/* $(PREFIX)/bin/ cp -f docs/*.1 $(PREFIX)/share/man/man1/ # cp -f docs/*.3 $(PREFIX)/share/man/man3/ test: build tests/cc-compat.sh tests/posix-compat.sh dj: src/dj.c build_dir $(CC) $(CFLAGS) -o build/bin/dj src/dj.c 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