BIN := mktypst PKG := hachem VERSION := 0.1.0 CC := clang STD := c17 DEBUG ?= 1 SANITIZE ?= 1 CFLAGS := -std=$(STD) \ -Wall \ -Wextra \ -Wshadow \ -Wpedantic \ -Wconversion \ -Wstrict-prototypes \ -Wsign-conversion \ -Wmissing-prototypes ifeq ($(DEBUG),1) CFLAGS += -g -fno-omit-frame-pointer else CFLAGS += -O2 endif ifeq ($(SANITIZE),1) CFLAGS += -fsanitize=address,undefined LDFLAGS += -fsanitize=address,undefined endif PREFIX ?= /usr/local bindir := $(DESTDIR)$(PREFIX)/bin mandir := $(DESTDIR)$(PREFIX)/share/man/man1 ifeq ($(shell uname),Darwin) DATADIR := $(HOME)/Library/Application Support else DATADIR := $(if $(XDG_DATA_HOME),$(XDG_DATA_HOME),$(HOME)/.local/share) endif pkgdir := $(DATADIR)/typst/packages/local/$(PKG)/$(VERSION) all: $(BIN) $(BIN): mktypst.c $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) install: install-bin install-pkg install-bin: $(MAKE) DEBUG=0 SANITIZE=0 clean $(BIN) install -d $(bindir) install -m 755 $(BIN) $(bindir)/$(BIN) install -d $(mandir) install -m 644 $(BIN).1 $(mandir)/$(BIN).1 install-pkg: mkdir -p "$(pkgdir)" cp typst.toml lib.typ README.md LICENSE "$(pkgdir)"/ cp -r templates "$(pkgdir)"/ uninstall: rm -f $(bindir)/$(BIN) rm -f $(mandir)/$(BIN).1 rm -rf "$(DATADIR)/typst/packages/local/$(PKG)/$(VERSION)" samples: @for f in samples/*.typ; do \ printf ' %s\n' "$${f%.typ}.pdf"; \ typst compile --root . "$$f" "$${f%.typ}.pdf" || exit 1; \ done clean: rm -rf $(BIN) $(BIN).dSYM samples/*.pdf .PHONY: all install install-bin install-pkg uninstall samples clean