diff options
| author | EuAndreh <eu@euandre.org> | 2025-07-01 13:45:29 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2025-07-07 06:09:16 -0300 |
| commit | 6b626f2e0408e52f771e0895648b4b75060ec082 (patch) | |
| tree | c2641eddadbaaf211208c50a4a9ee0172382f95b /Makefile | |
| parent | Initial empty commit (diff) | |
| download | paca-6b626f2e0408e52f771e0895648b4b75060ec082.tar.gz paca-6b626f2e0408e52f771e0895648b4b75060ec082.tar.xz | |
Implement v0 version of NFA and DFA; WIP tests
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..aa02a58 --- /dev/null +++ b/Makefile @@ -0,0 +1,105 @@ +.POSIX: +DATE = 1970-01-01 +VERSION = 0.1.0 +NAME = paca +NAME_UC = $(NAME) +## Installation prefix. Defaults to "/usr". +PREFIX = /usr +BINDIR = $(PREFIX)/bin +LIBDIR = $(PREFIX)/lib +JSLIBDIR = $(LIBDIR)/javascript +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)' \ + '$(DESTDIR)$(SRCDIR)' \ + + cp src/$(NAME).mjs '$(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)'/$(NAME).mjs \ + '$(DESTDIR)$(SRCDIR)' \ + + + +ALWAYS: |
