diff --git a/Makefile.am b/Makefile.am index aa21b5383b..758d8b9b8a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -663,7 +663,11 @@ CLEANFILES = \ # the whole thing. Likewise, set 'XDG_CACHE_HOME' to avoid loading possibly # stale files from ~/.cache/guile/ccache. %.go: make-go ; @: -make-go: $(MODULES) guix/config.scm $(dist_noinst_DATA) +make-go: make-core-go make-packages-go make-system-go + +define guile-compilation-rule + +$(1): $(2) $(AM_V_at)echo "Compiling Scheme modules..." ; \ unset GUILE_LOAD_COMPILED_PATH ; \ XDG_CACHE_HOME=/nowhere \ @@ -671,7 +675,19 @@ make-go: $(MODULES) guix/config.scm $(dist_noinst_DATA) $(top_builddir)/pre-inst-env \ $(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)" \ --no-auto-compile \ - -s "$(top_srcdir)"/build-aux/compile-all.scm $^ + -s "$(top_srcdir)"/build-aux/compile-all.scm $$(filter %.scm,$$^) + +.PHONY: $(1) + +endef + +MODULES_CORE = $(filter guix/%,$(MODULES)) +MODULES_PACKAGES = $(filter gnu/packages/%,$(MODULES)) +MODULES_SYSTEM = $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES))) + +$(eval $(call guile-compilation-rule,make-core-go,$(MODULES_CORE) guix/config.scm $(dist_noinst_DATA))) +$(eval $(call guile-compilation-rule,make-packages-go,$(MODULES_PACKAGES) make-core-go)) +$(eval $(call guile-compilation-rule,make-system-go,$(MODULES_SYSTEM) make-packages-go make-core-go)) SUFFIXES = .go