SummaryRefsLogTreeCommitDiffStats
path: root/scm
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2015-08-16 15:55:35 +0200
committerMathieu Lirzin <mthl@gnu.org>2016-05-07 11:42:11 +0200
commit3221c057206ca22c2da599c8c76bbcbb0f36e794 (patch)
treedbdf98a3ad919742660bd77a9a95eeaa9c9e194d /scm
parent3c903bfc808b6fed0c3fff6e78689cfe280d25b3 (diff)
downloadmcron-3221c057206ca22c2da599c8c76bbcbb0f36e794.tar.gz
mcron-3221c057206ca22c2da599c8c76bbcbb0f36e794.tar.bz2
mcron-3221c057206ca22c2da599c8c76bbcbb0f36e794.zip
build: Compile and install '.go' files.
* configure.ac: Set and substitute 'mcronmoduledir'. Check for 'guild' which requires Guile >= 2.0.7. Use 'AC_CANONICAL_HOST'. * scm/mcron/makefile.am (.scm.go): New target. (MODULES, GEN_MODULES, GOBJECTS, CLEANFILES, SUFFIXES) (dist_mcronmodule_DATA, mcronmodule_DATA): New variables. (pkgdata_DATA, EXTRA_DIST): Remove variables. * .gitignore: Adjust accordingly.
Diffstat (limited to 'scm')
-rw-r--r--scm/mcron/main.scm2
-rw-r--r--scm/mcron/makefile.am48
2 files changed, 45 insertions, 5 deletions
diff --git a/scm/mcron/main.scm b/scm/mcron/main.scm
index 1d8c87b..6ac2116 100644
--- a/scm/mcron/main.scm
+++ b/scm/mcron/main.scm
@@ -343,6 +343,8 @@ comes in on the above socket."
(unless (option-ref options 'schedule #f)
(with-output-to-file config-pid-file noop))
(setenv "MAILTO" #f)
+ ;; XXX: At compile time, this yields a "possibly unbound variable"
+ ;; warning, but this is OK since it is bound in the C wrapper.
(c-set-cron-signals))
;; Now we have the procedures in place for dealing with the contents of
diff --git a/scm/mcron/makefile.am b/scm/mcron/makefile.am
index 931b03b..ab6cae2 100644
--- a/scm/mcron/makefile.am
+++ b/scm/mcron/makefile.am
@@ -1,10 +1,48 @@
-EXTRA_DIST = main.scm mcron-core.scm vixie-specification.scm \
- crontab.scm environment.scm job-specifier.scm redirect.scm \
- vixie-time.scm
+MODULES = \
+ environment.scm \
+ job-specifier.scm \
+ main.scm \
+ redirect.scm \
+ vixie-specification.scm \
+ vixie-time.scm
-pkgdata_DATA = core.scm environment.scm job-specifier.scm redirect.scm \
- vixie-time.scm vixie-specification.scm config.scm
+GEN_MODULES = \
+ config.scm \
+ core.scm
+GOBJECTS = \
+ $(GEN_MODULES:%.scm=%.go) \
+ $(MODULES:%.scm=%.go)
+
+mcronmodule_DATA = \
+ $(GOBJECTS) \
+ $(GEN_MODULES)
+
+dist_mcronmodule_DATA = \
+ $(MODULES) \
+ crontab.scm \
+ mcron-core.scm
+
+# Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling. Otherwise, if
+# $GUILE_LOAD_COMPILED_PATH contains $(mcronmoduledir), we may find .go files
+# in there that are newer than the local .scm files (for instance because the
+# user ran 'make install' recently). When that happens, we end up loading
+# those previously-installed .go files, which may be stale, thereby breaking
+# the whole thing.
+#
+# XXX: Use the C locale for when Guile lacks
+# <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>.
+.scm.go:
+ unset GUILE_LOAD_COMPILED_PATH ; \
+ LC_ALL=C \
+ $(GUILD) compile \
+ --load-path="$(top_builddir)/scm" \
+ --load-path="$(top_srcdir)/scm" \
+ --warn=format --warn=unbound-variable --warn=arity-mismatch \
+ --target="$(host)" --output="$@" "$<"
+
+SUFFIXES = .go
+CLEANFILES = $(GOBJECTS)
# If you're wondering, the configure script keeps deleting all files with a name
# like core.*, so we have to keep re-making it (I lost a good day's work because