.POSIX: DATE = 1970-01-01 VERSION = 0.1.0 NAME = sjs NAME_UC = $(NAME) ## Installation prefix. Defaults to "/usr". PREFIX = /usr BINDIR = $(PREFIX)/bin LIBDIR = $(PREFIX)/lib JSLIBDIR = $(LIBDIR)/node/$(NAME) INCLUDEDIR = $(PREFIX)/include SRCDIR = $(PREFIX)/src/$(NAME) SHAREDIR = $(PREFIX)/share LOCALEDIR = $(SHAREDIR)/locale MANDIR = $(SHAREDIR)/man EXEC = ./ ## Where to store the installation. Empty by default. DESTDIR = LDLIBS = JSIMPL = node .SUFFIXES: .SUFFIXES: .mjs .mjs-check all: include deps.mk sources = \ src/$(NAME).mjs \ derived-assets = \ src/$(NAME).exported.mjs \ side-assets = \ ## Default target. Builds all artifacts required for testing ## and installation. all: $(derived-assets) src/$(NAME).exported.mjs: src/$(NAME).mjs Makefile cp src/$(NAME).mjs $@ printf '\n\nexport {\n' >> $@ awk '/^const / { printf "\t%s,\n", $$2 }' src/$(NAME).mjs >> $@ printf '}\n' >> $@ tests/$(NAME).mjs-check: src/$(NAME).exported.mjs $(JSIMPL) $*.mjs check-unit: tests/$(NAME).mjs-check integration-tests = \ .PRECIOUS: $(integration-tests) $(integration-tests): ALWAYS sh $@ check-integration: $(integration-tests) ## Run all tests. Each test suite is isolated, so that a parallel ## build can run tests at the same time. The required artifacts ## are created if missing. check: check-unit check-integration ## Remove *all* derived artifacts produced during the build. ## A dedicated test asserts that this is always true. clean: rm -rf $(derived-assets) $(side-assets) ## Installs into $(DESTDIR)$(PREFIX). Its dependency target ## ensures that all installable artifacts are crafted beforehand. install: all mkdir -p \ '$(DESTDIR)$(BINDIR)' \ '$(DESTDIR)$(JSLIBDIR)'/src \ '$(DESTDIR)$(SRCDIR)' \ cp src/$(NAME).mjs '$(DESTDIR)$(JSLIBDIR)'/src cp package.json '$(DESTDIR)$(JSLIBDIR)' cp $(sources) '$(DESTDIR)$(SRCDIR)' ## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror ## of the "install" target, and removes *all* that was installed. ## A dedicated test asserts that this is always true. uninstall: rm -rf \ '$(DESTDIR)$(JSLIBDIR)' \ '$(DESTDIR)$(SRCDIR)' \ ALWAYS: