X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/97a9a385a376202d0859ff8191858d13ec8901c2..388caffa4fd539913abcd68d3a5bae63732b66bc:/src/Makefile.am diff --git a/src/Makefile.am b/src/Makefile.am index e71c5c0..c7779f9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -23,88 +23,122 @@ ### along with SOD; if not, write to the Free Software Foundation, ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -bin_PROGRAMS = +include $(top_srcdir)/vars.am -CLEANFILES = - -pkglispsrcdir = $(lispsrcdir)/$(PACKAGE) - -dist_pkglispsrc_DATA = +nobase_dist_pkglispsrc_DATA = $(LISP_SOURCES) +LISP_SOURCES = ###-------------------------------------------------------------------------- ### The source files. ## The system definition file. -dist_pkglispsrc_DATA += sod.asd +LISP_SOURCES += sod.asd ## The package definition file. -dist_pkglispsrc_DATA += package.lisp +LISP_SOURCES += package.lisp ## General utilities. -dist_pkglispsrc_DATA += utilities.lisp +LISP_SOURCES += utilities.lisp ## The parser library. -dist_pkglispsrc_DATA += parser/floc-proto.lisp parser/floc-impl.lisp -dist_pkglispsrc_DATA += parser/streams-proto.lisp parser/streams-impl.lisp -dist_pkglispsrc_DATA += parser/scanner-proto.lisp parser/scanner-impl.lisp -dist_pkglispsrc_DATA += parser/scanner-charbuf-impl.lisp -dist_pkglispsrc_DATA += parser/scanner-token-impl.lisp -dist_pkglispsrc_DATA += parser/parser-proto.lisp parser/parser-impl.lisp -dist_pkglispsrc_DATA += parser/parser-expr-proto.lisp \ +LISP_SOURCES += parser/package.lisp +LISP_SOURCES += parser/floc-proto.lisp parser/floc-impl.lisp +LISP_SOURCES += parser/streams-proto.lisp parser/streams-impl.lisp +LISP_SOURCES += parser/scanner-proto.lisp parser/scanner-impl.lisp +LISP_SOURCES += parser/scanner-charbuf-impl.lisp +LISP_SOURCES += parser/scanner-token-impl.lisp +LISP_SOURCES += parser/parser-proto.lisp parser/parser-impl.lisp +LISP_SOURCES += parser/parser-expr-proto.lisp \ parser/parser-expr-impl.lisp -dist_pkglispsrc_DATA += parser/scanner-context-impl.lisp +LISP_SOURCES += parser/scanner-context-impl.lisp ## Lexical analysis and translator-specific parser utilities. -dist_pkglispsrc_DATA += lexer-proto.lisp lexer-impl.lisp -dist_pkglispsrc_DATA += fragment-parse.lisp +LISP_SOURCES += lexer-proto.lisp lexer-impl.lisp +LISP_SOURCES += fragment-parse.lisp ## C type representation. -dist_pkglispsrc_DATA += c-types-proto.lisp c-types-impl.lisp \ +LISP_SOURCES += c-types-proto.lisp c-types-impl.lisp \ c-types-parse.lisp ## Property sets. -dist_pkglispsrc_DATA += pset-proto.lisp pset-impl.lisp pset-parse.lisp +LISP_SOURCES += pset-proto.lisp pset-impl.lisp pset-parse.lisp ## Code generation. -dist_pkglispsrc_DATA += codegen-proto.lisp codegen-impl.lisp +LISP_SOURCES += codegen-proto.lisp codegen-impl.lisp ## Output machinery. -dist_pkglispsrc_DATA += output-proto.lisp output-impl.lisp +LISP_SOURCES += output-proto.lisp output-impl.lisp ## Modules. -dist_pkglispsrc_DATA += module-proto.lisp module-impl.lisp -dist_pkglispsrc_DATA += module-parse.lisp module-output.lisp -dist_pkglispsrc_DATA += builtin.lisp +LISP_SOURCES += module-proto.lisp module-impl.lisp +LISP_SOURCES += module-parse.lisp module-output.lisp +LISP_SOURCES += builtin.lisp ## Class representation and layout. -dist_pkglispsrc_DATA += classes.lisp c-types-class-impl.lisp -dist_pkglispsrc_DATA += class-utilities.lisp -dist_pkglispsrc_DATA += class-make-proto.lisp class-make-impl.lisp -dist_pkglispsrc_DATA += class-layout-proto.lisp class-layout-impl.lisp -dist_pkglispsrc_DATA += class-finalize-proto.lisp class-finalize-impl.lisp -dist_pkglispsrc_DATA += class-output.lisp +LISP_SOURCES += classes.lisp c-types-class-impl.lisp +LISP_SOURCES += class-utilities.lisp +LISP_SOURCES += class-make-proto.lisp class-make-impl.lisp +LISP_SOURCES += class-layout-proto.lisp class-layout-impl.lisp +LISP_SOURCES += class-finalize-proto.lisp class-finalize-impl.lisp +LISP_SOURCES += class-output.lisp ## Method generation. -dist_pkglispsrc_DATA += method-proto.lisp method-impl.lisp +LISP_SOURCES += method-proto.lisp method-impl.lisp +LISP_SOURCES += method-aggregate.lisp ## User interface. -dist_pkglispsrc_DATA += sod-frontend.asd -dist_pkglispsrc_DATA += frontend.lisp optparse.lisp +LISP_SOURCES += sod-frontend.asd +LISP_SOURCES += frontend.lisp optparse.lisp + +## Finishing touches. +LISP_SOURCES += final.lisp ###-------------------------------------------------------------------------- ### Constructing an output image. -CLEANFILES += *.$(FASL_TYPE) +CLEANFILES += *.$(fasl) parser/*.$(fasl) +## Building the executable image. bin_PROGRAMS += sod sod_SOURCES = -sod: $(dist_pkglispsrc_DATA) - set -ex; true_srcdir=$$(cd $(srcdir); pwd); \ +sod: $(LISP_SOURCES) + $(V_DUMP)true_srcdir=$$(cd $(srcdir); pwd); \ ASDF_OUTPUT_TRANSLATIONS=$$true_srcdir:$(abs_builddir): \ - $(CL_LAUNCH) -o sod -d ! -l $(LISPSYS) +I -S $$true_srcdir/ \ + $(CL_LAUNCH) -o sod -d ! -l $(LISPSYS) +I -S $$true_srcdir/: \ -s sod-frontend -r sod-frontend:main ###-------------------------------------------------------------------------- +### Unit testing. + +## The system definition. +EXTRA_DIST += sod-test.asd + +## 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: + $(V_TEST)true_srcdir=$$(cd $(srcdir); pwd); \ + ASDF_OUTPUT_TRANSLATIONS=$$true_srcdir:$(abs_builddir): \ + $(CL_LAUNCH) -l $(LISPSYS) -s sod-test +I -S $$true_srcdir/: \ + -i '(handler-case ;\ + (progn ;\ + (setf sod-test:*build-version* "$(VERSION)") ;\ + (asdf:test-system "sod")) ;\ + (error (cond) ;\ + (format *error-output* "ERR: ~A~%" cond) ;\ + (cl-launch:quit 1)))' + +###-------------------------------------------------------------------------- ### Installation. ## We want a symlink $(lispsysdir)/sod.asd -> $(lispsrcdir)/sod/sod.asd. It @@ -130,7 +164,7 @@ install-data-local: dots=$$(echo $$fwd | sed 's/[^ ][^ ]*/../g'); \ rel=$$(echo $$dots $$twd | tr " " "/"); \ echo >&2 "ln -s $$rel $$to"; \ - ln -s $$rel $(DESTDIR)$$from.new; \ - mv $(DESTDIR)$$from.new $(DESTDIR)$$from + ln -s $$rel $(DESTDIR)$$from/sod.asd.new; \ + mv $(DESTDIR)$$from/sod.asd.new $(DESTDIR)$$from/sod.asd ###----- That's all, folks --------------------------------------------------