diff --git a/Makefile b/Makefile index 9ecbedb..16d26e9 100644 --- a/Makefile +++ b/Makefile @@ -18,21 +18,17 @@ PREFIX ?= /usr/local MANDIR != [ $(PREFIX) = / ] && printf '/usr/share/man\n' \ || printf '/share/man\n' -SYSEXITS != printf '\043include \n' | cpp -M - | sed 's/ /\n/g' \ - | sed -n 's/sysexits\.h//p' || printf 'include\n' CC ?= cc RUSTC ?= rustc RUSTLIBS = --extern getopt=build/o/libgetopt.rlib \ --extern sysexits=build/o/libsysexits.rlib \ --extern strerror=build/o/libstrerror.rlib -CFLAGS += -I$(SYSEXITS) +CFLAGS += -Ibuild/include .PHONY: all all: docs dj false fop hru intcmp mm npc rpn scrut str strcmp swab true -# keep build/include until bindgen(1) has stdin support -# https://github.com/rust-lang/rust-bindgen/issues/2703 build: mkdir -p build/bin build/docs build/include build/lib build/o build/test @@ -65,6 +61,12 @@ docs: docs/ build rustlibs: build/o/libsysexits.rlib build/o/libgetopt.rlib \ build/o/libstrerror.rlib +build/include/sysexits.h: build include/sysexits.h.template + cpp -dM -include sysexits.h /dev/null \ + | grep '^.define EX_' >$@ \ + || cpp -dM -include stdlib.h include/sysexits.h.template \ + | grep -e '^.define EX_' -e '^.define EXIT_' >$@ + build/o/libgetopt.rlib: build src/getopt-rs/lib.rs $(RUSTC) $(RUSTFLAGS) --crate-type=lib --crate-name=getopt \ -o $@ src/getopt-rs/lib.rs @@ -73,12 +75,10 @@ build/o/libstrerror.rlib: build src/strerror.rs $(RUSTC) $(RUSTFLAGS) --crate-type=lib -o $@ \ src/strerror.rs -# bandage solution until bindgen(1) gets stdin support -build/o/libsysexits.rlib: build $(SYSEXITS)sysexits.h - printf '\043define EXIT_FAILURE 1\n' | cat - $(SYSEXITS)sysexits.h \ - > build/include/sysexits.h - bindgen --default-macro-constant-type signed --use-core --formatter=none \ - build/include/sysexits.h | $(RUSTC) $(RUSTFLAGS) --crate-type lib -o $@ - +build/o/libsysexits.rlib: build build/include/sysexits.h +