aboutsummaryrefslogtreecommitdiff

# XXX: This expression relies on a GNU extension.
GOBJECTS = $(SOURCES:%.scm=%.go)

nobase_dist_module_DATA = $(SOURCES) $(SOURCES_NOT_COMPILED)
nobase_nodist_guileobject_DATA = $(GOBJECTS)

# Compiler warnings.
guile_warnings =							\
  unused-variable unused-toplevel unbound-variable arity-mismatch	\
  format

AM_V_GUILEC = $(AM_V_GUILEC_$(V))
AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
AM_V_GUILEC_0 = @echo "  GUILEC" $@;

# Override $GUILE_LOAD_COMPILED_PATH altogether so we don't end up
# loading .go files from $(moduledir) coming from a previous
# installation (they could be more recent than the local .scm files if
# the user run 'make install' recently.)
.scm.go:
	$(AM_V_GUILEC)$(MKDIR_P) `dirname $@` ;			\
	GUILE_AUTO_COMPILE=0					\
	GUILE_LOAD_COMPILED_PATH="$(builddir):$(top_builddir)/src/guile" \
	$(GUILE) -L "$(srcdir)" -L "$(top_srcdir)/src/guile"	\
	  -L "$(top_builddir)/src/guile"			\
	  -c "(use-modules (system base compile)		\
	                   (system base message)		\
	                   (skribilo condition))		\
	      (with-fluids ((*current-warning-prefix* \"\"))	\
		(call-with-skribilo-error-catch/exit		\
		  (lambda ()					\
		    (compile-file \"$<\" #:output-file \"$@\"	\
				  #:opts '(#:warnings ($(guile_warnings)))))))"

CLEANFILES += $(GOBJECTS)

SUFFIXES += .go

# Make sure source files are installed first, so that the mtime of
# installed compiled files is greater than that of installed source
# files.  See
# <http://lists.gnu.org/archive/html/guile-devel/2010-07/msg00125.html>
# for details.
skr_install_go_files = install-nobase_nodist_guileobjectDATA
$(skr_install_go_files): install-nobase_dist_moduleDATA