-sod: $(dist_pkglispsrc_DATA)
- set -ex; true_srcdir=$$(cd $(srcdir); pwd); \
- ASDF_OUTPUT_TRANSLATIONS=$$true_srcdir:$(abs_builddir): \
- $(CL_LAUNCH) -o sod -d ! -l $(LISPSYS) +I -S $$true_srcdir/ \
- -s sod-frontend -r sod-frontend:main
+sod$(EXEEXT): $(LISP_SOURCES) sod.asd auto.lisp
+ $(V_DUMP)$(ASDF_ENV) $(RUNLISP) -L$(WORKING_LISPS) \
+ -e "(asdf:clear-configuration)" \
+ -e "(asdf:operate 'asdf:program-op \"sod/frontend\")"
+
+## The executable is needed if we're just distributing.
+dist-hook: sod$(EXEEXT)
+
+###--------------------------------------------------------------------------
+### Unit testing.
+
+## Basic utilities.
+EXTRA_DIST += test-base.lisp
+
+## Parser tests.
+EXTRA_DIST += parser/parser-test.lisp
+EXTRA_DIST += parser/scanner-charbuf-test.lisp
+
+## Translator tests.
+EXTRA_DIST += c-types-test.lisp
+EXTRA_DIST += codegen-test.lisp
+EXTRA_DIST += lexer-test.lisp
+
+## Running the Lisp tests.
+check-local: sod sod.asd
+ $(V_TEST)$(ASDF_ENV) $(RUNLISP) -L$(WORKING_LISPS) -e \
+ '(asdf:clear-configuration) ;\
+ (handler-case (asdf:test-system "sod") ;\
+ (error (cond) ;\
+ (format *error-output* "ERR: ~A~%" cond) ;\
+ (uiop:quit 1)))'
+
+###--------------------------------------------------------------------------
+### Manual pages.
+
+man_MANS += sod.1 sod-module.5
+CLEANFILES += sod.1 sod-module.5
+EXTRA_DIST += sod.1.in sod-module.5.in