From 97f8f39dc6c57d7b9f965e11be9b375256a71fba Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Fri, 31 Oct 2014 10:07:10 +0100 Subject: [PATCH] Pre-compile scm files when building with guile 2 With pre-compiled scm files, guile will no longer resort to autocompilation at first startup. This avoids bugs like downstream https://bugzilla.redhat.com/show_bug.cgi?id=1151870 (Where autocompiled files for an older version of gnucash are more recent than the source files installed with the newer version) Note that a new variable GUILE_LOAD_COMPILED_PATH is added for this in the environment file. This variable should probably be updated in the OSX and Windows build scrips if/when these are building with guile 2. Strictly speaking this new variable is only needed for guile 2. However since guile 1.8 simply ignores the environment variable, it's just set unconditionally regardless of the guile version being active. --- configure.ac | 1 + src/app-utils/Makefile.am | 23 +++++++++ src/app-utils/app-utils.scm | 6 +++ src/bin/Makefile.am | 3 +- src/bin/environment.in | 1 + src/business/business-gnome/Makefile.am | 29 +++++++++++ src/core-utils/Makefile.am | 12 +++++ src/core-utils/core-utils.scm | 4 +- src/engine/Makefile.am | 17 +++++++ src/engine/engine.scm | 6 +++ src/gnc-module/Makefile.am | 12 +++++ src/gnc-module/gnc-module.scm | 4 +- src/gnc-test-env.in | 5 ++ src/gnome-utils/Makefile.am | 20 ++++++++ src/gnome-utils/gnome-utils.scm | 6 +++ src/import-export/qif-imp/Makefile.am | 20 ++++++++ src/report/business-reports/Makefile.am | 49 ++++++++++++++++--- src/report/locale-specific/us/Makefile.am | 32 ++++++++++++ src/report/locale-specific/us/taxtxf.scm | 7 +++ src/report/report-gnome/Makefile.am | 24 +++++++++ src/report/report-gnome/report-gnome.scm | 7 +++ src/report/report-system/Makefile.am | 33 ++++++++++++- src/report/report-system/report.scm | 6 +++ src/report/standard-reports/Makefile.am | 30 ++++++++++++ src/report/stylesheets/Makefile.am | 27 ++++++++++ src/report/utility-reports/Makefile.am | 25 ++++++++++ src/report/utility-reports/view-column.scm | 6 +++ .../utility-reports/welcome-to-gnucash.scm | 6 +++ src/scm/Makefile.am | 19 +++++++ src/scm/gnumeric/Makefile.am | 9 ++++ src/tax/us/Makefile.am | 23 +++++++++ src/test-core/Makefile.am | 12 +++++ src/test-core/unittest-support.scm | 8 ++- 33 files changed, 478 insertions(+), 14 deletions(-) diff --git a/configure.ac b/configure.ac index 7d1cb89f54..7f8f977d4c 100644 --- a/configure.ac +++ b/configure.ac @@ -484,6 +484,7 @@ PKG_CHECK_MODULES(GUILE, ]) AM_CONDITIONAL(GNC_HAVE_GUILE_2, test "${gnc_have_guile_2}" = yes) +AC_SUBST(GUILE_EFFECTIVE_VERSION) ### -------------------------------------------------------------------------- diff --git a/src/app-utils/Makefile.am b/src/app-utils/Makefile.am index f253fa0ec8..2425e27334 100644 --- a/src/app-utils/Makefile.am +++ b/src/app-utils/Makefile.am @@ -202,6 +202,29 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@ +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + clean-local: rm -rf gnucash diff --git a/src/app-utils/app-utils.scm b/src/app-utils/app-utils.scm index 20f2c8dbee..a8388cf59b 100644 --- a/src/app-utils/app-utils.scm +++ b/src/app-utils/app-utils.scm @@ -16,6 +16,12 @@ ;; Boston, MA 02110-1301, USA gnu@gnu.org (define-module (gnucash app-utils)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-app-utils.so" "scm_init_sw_app_utils_module"))) + (else )) (use-modules (sw_app_utils)) (use-modules (srfi srfi-1)) (use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing. diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index cc0ce0079c..db2ecefa55 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -73,7 +73,8 @@ gnucash-valgrind: gnucash-valgrind.in ${top_builddir}/config.status Makefile environment: environment.in ${top_builddir}/config.status Makefile rm -f $@.tmp sed < $< > $@.tmp \ - -e '/@-NOTE.*-@/ D' + -e '/@-NOTE.*-@/ D' \ + -e "s#@-GUILE_EFFECTIVE_VERSION-@#@GUILE_EFFECTIVE_VERSION@#g" if CUSTOM_GNC_DBD_DIR echo 'GNC_DBD_DIR=@GNC_DBD_DIR@' >> $@.tmp endif diff --git a/src/bin/environment.in b/src/bin/environment.in index 400369b4fe..de404908b7 100644 --- a/src/bin/environment.in +++ b/src/bin/environment.in @@ -50,6 +50,7 @@ GUILE_WARN_DEPRECATED=no # GUILE_LIBS can be used to override the path to Guile's own modules # GUILE_LIBS= GUILE_LOAD_PATH={GNC_DATA}/guile-modules;{GNC_DATA}/scm;{GUILE_LIBS};{GUILE_LOAD_PATH} +GUILE_LOAD_COMPILED_PATH={GNC_DATA}/guile-modules/ccache/@-GUILE_EFFECTIVE_VERSION-@;{GNC_DATA}/scm/ccache/@-GUILE_EFFECTIVE_VERSION-@;{GUILE_LIBS};{GUILE_LOAD_PATH} # Tell Guile where to find GnuCash specific shared libraries GNC_LIBRARY_PATH={SYS_LIB} diff --git a/src/business/business-gnome/Makefile.am b/src/business/business-gnome/Makefile.am index 07fe94a0d9..759c22169c 100644 --- a/src/business/business-gnome/Makefile.am +++ b/src/business/business-gnome/Makefile.am @@ -109,6 +109,35 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/gnome-utils \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --gnc-module-dir ${top_builddir}/src/report/standard-reports \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/report/business-reports \ + --guile-load-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/report/standard-reports \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + noinst_DATA = .scm-links clean-local: rm -rf gnucash diff --git a/src/core-utils/Makefile.am b/src/core-utils/Makefile.am index f7985d6d98..d412f2d3c0 100644 --- a/src/core-utils/Makefile.am +++ b/src/core-utils/Makefile.am @@ -112,6 +112,18 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --library-dir ${top_builddir}/src/core-utils + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + noinst_DATA = .scm-links BUILT_SOURCES = gncla-dir.h gnc-version.h EXTRA_DIST = $(gncscmmod_DATA) core-utils.i gncla-dir.h.in gnc-scm-info.h diff --git a/src/core-utils/core-utils.scm b/src/core-utils/core-utils.scm index 8e45e3c804..b11198c987 100644 --- a/src/core-utils/core-utils.scm +++ b/src/core-utils/core-utils.scm @@ -12,9 +12,9 @@ (guile-2 (eval-when (compile load eval expand) - (load-extension "libgnc-core-utils" "scm_init_sw_core_utils_module"))) + (load-extension "libgnc-core-utils.so" "scm_init_sw_core_utils_module"))) (else - (load-extension "libgnc-core-utils" "scm_init_sw_core_utils_module"))) + (load-extension "libgnc-core-utils.so" "scm_init_sw_core_utils_module"))) (use-modules (sw_core_utils)) diff --git a/src/engine/Makefile.am b/src/engine/Makefile.am index f51f1e8dfa..723ce48e79 100644 --- a/src/engine/Makefile.am +++ b/src/engine/Makefile.am @@ -190,6 +190,23 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/engine \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@ +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + noinst_DATA = .scm-links if BUILDING_FROM_SCM diff --git a/src/engine/engine.scm b/src/engine/engine.scm index c60b150543..1772b33b4b 100644 --- a/src/engine/engine.scm +++ b/src/engine/engine.scm @@ -1,5 +1,11 @@ (define-module (gnucash engine)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-engine.so" "scm_init_sw_engine_module"))) + (else )) (use-modules (sw_engine)) (export GNC-RND-FLOOR) diff --git a/src/gnc-module/Makefile.am b/src/gnc-module/Makefile.am index 94abe1a678..5e9819cf43 100644 --- a/src/gnc-module/Makefile.am +++ b/src/gnc-module/Makefile.am @@ -65,6 +65,18 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + clean-local: rm -rf gnucash diff --git a/src/gnc-module/gnc-module.scm b/src/gnc-module/gnc-module.scm index 666faeaa2a..fb90ca1703 100644 --- a/src/gnc-module/gnc-module.scm +++ b/src/gnc-module/gnc-module.scm @@ -13,9 +13,9 @@ (guile-2 (eval-when (compile load eval expand) - (load-extension "libgnc-module" "scm_init_sw_gnc_module_module"))) + (load-extension "libgnc-module.so" "scm_init_sw_gnc_module_module"))) (else - (load-extension "libgnc-module" "scm_init_sw_gnc_module_module"))) + (load-extension "libgnc-module.so" "scm_init_sw_gnc_module_module"))) (use-modules (sw_gnc_module)) diff --git a/src/gnc-test-env.in b/src/gnc-test-env.in index 085fbb6f12..596dd3affc 100755 --- a/src/gnc-test-env.in +++ b/src/gnc-test-env.in @@ -107,6 +107,10 @@ exec @GUILE@ -s $0 "$@" (adapt-dirsep (get-dir-adder "GUILE_LOAD_PATH" guile-load-dirs "" path-sep-str))) +(display + (adapt-dirsep + (get-dir-adder "GUILE_LOAD_COMPILED_PATH" guile-load-dirs "" path-sep-str))) + (display (adapt-dirsep (get-dir-adder "LD_LIBRARY_PATH" library-dirs "/.libs" path-sep-str))) @@ -124,6 +128,7 @@ exec @GUILE@ -s $0 "$@" (display "; ") (display " export GNC_MODULE_PATH;") (display " export GUILE_LOAD_PATH;") + (display " export GUILE_LOAD_COMPILED_PATH;") (display " export LD_LIBRARY_PATH;") (display " export DYLD_LIBRARY_PATH;") (if is-windows? diff --git a/src/gnome-utils/Makefile.am b/src/gnome-utils/Makefile.am index 75338196ce..2b02800457 100644 --- a/src/gnome-utils/Makefile.am +++ b/src/gnome-utils/Makefile.am @@ -274,6 +274,26 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/gnome-utils + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@ +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + noinst_DATA = .scm-links clean-local: rm -rf gnucash diff --git a/src/gnome-utils/gnome-utils.scm b/src/gnome-utils/gnome-utils.scm index fb7a9b2ec3..fcd922f5bf 100644 --- a/src/gnome-utils/gnome-utils.scm +++ b/src/gnome-utils/gnome-utils.scm @@ -3,6 +3,12 @@ (use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing. (use-modules (gnucash gnc-module)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-gnome-utils.so" "scm_init_sw_gnome_utils_module"))) + (else )) (use-modules (sw_gnome_utils)) (gnc:module-load "gnucash/app-utils" 0) diff --git a/src/import-export/qif-imp/Makefile.am b/src/import-export/qif-imp/Makefile.am index 98231499cd..7bfe27b1fe 100644 --- a/src/import-export/qif-imp/Makefile.am +++ b/src/import-export/qif-imp/Makefile.am @@ -99,6 +99,26 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnome \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/import-export +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/qif-import +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash qif-import diff --git a/src/report/business-reports/Makefile.am b/src/report/business-reports/Makefile.am index 4f736db733..c5f167ebcc 100644 --- a/src/report/business-reports/Makefile.am +++ b/src/report/business-reports/Makefile.am @@ -1,24 +1,31 @@ gncscmmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash/report gncscmmod_DATA = \ aging.scm \ - business-reports.scm \ customer-summary.scm \ easy-invoice.scm \ fancy-invoice.scm \ taxinvoice.scm \ - taxinvoice.eguile.scm \ - taxinvoice.css \ invoice.scm \ job-report.scm \ owner-report.scm \ payables.scm \ receivables.scm \ + balsheet-eg.scm \ + business-reports.scm + +# Note: list these files separately because they can't be compiled by guile2 +# templates are a mixture of scheme and hmtl +# css files are not scheme at all +gncscmtpldir = ${GNC_SHAREDIR}/guile-modules/gnucash/report +gncscmtpl_DATA = \ + taxinvoice.eguile.scm \ + taxinvoice.css \ balsheet-eg.css \ - balsheet-eg.eguile.scm \ - balsheet-eg.scm + balsheet-eg.eguile.scm if GNUCASH_SEPARATE_BUILDDIR -SCM_FILE_LINKS = ${gncscmmod_DATA} +SCM_FILE_LINKS = ${gncscmmod_DATA} \ + ${gncscmtpl_DATA} endif .scm-links: @@ -36,13 +43,41 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/gnome-utils \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/report/standard-reports \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash noinst_DATA = .scm-links EXTRA_DIST = \ - ${gncscmmod_DATA} + ${gncscmmod_DATA} \ + ${gncscmtpl_DATA} CLEANFILES = .scm-links DISTCLEANFILES = ${SCM_FILE_LINKS} diff --git a/src/report/locale-specific/us/Makefile.am b/src/report/locale-specific/us/Makefile.am index ea55df0f76..1fb4dc830b 100644 --- a/src/report/locale-specific/us/Makefile.am +++ b/src/report/locale-specific/us/Makefile.am @@ -51,6 +51,38 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/gnome-utils \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --gnc-module-dir ${top_builddir}/src/tax/us \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/scm \ + --guile-load-dir ${top_builddir}/src/tax/us \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/gnome-utils + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmrptcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report/locale-specific +gncscmrptcache_DATA = $(gncscmrpt_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/report/locale-specific/us/taxtxf.scm b/src/report/locale-specific/us/taxtxf.scm index 76dcece811..e0786cbdfe 100644 --- a/src/report/locale-specific/us/taxtxf.scm +++ b/src/report/locale-specific/us/taxtxf.scm @@ -77,6 +77,13 @@ (use-modules (srfi srfi-1)) (use-modules (gnucash gnc-module)) (use-modules (gnucash gettext)) + +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-gnome-utils.so" "scm_init_sw_gnome_utils_module"))) + (else )) (use-modules (sw_gnome_utils)) ;; to get to gnc-error-dialog (use-modules (gnucash printf)) diff --git a/src/report/report-gnome/Makefile.am b/src/report/report-gnome/Makefile.am index 66417a607d..ee65689319 100644 --- a/src/report/report-gnome/Makefile.am +++ b/src/report/report-gnome/Makefile.am @@ -104,6 +104,30 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/gnome-utils \ + --library-dir ${top_builddir}/src/report/report-gnome + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + clean-local: rm -rf gnucash diff --git a/src/report/report-gnome/report-gnome.scm b/src/report/report-gnome/report-gnome.scm index 52de518391..d06fd8f91e 100644 --- a/src/report/report-gnome/report-gnome.scm +++ b/src/report/report-gnome/report-gnome.scm @@ -13,6 +13,13 @@ (use-modules (gnucash printf)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-gnome-utils.so" "scm_init_sw_gnome_utils_module") + (load-extension "libgncmod-report-gnome.so" "scm_init_sw_report_gnome_module"))) + (else )) (use-modules (sw_report_gnome)) (gnc:module-load "gnucash/gnome-utils" 0) diff --git a/src/report/report-system/Makefile.am b/src/report/report-system/Makefile.am index 3a5ecc76a7..d0f0f809a0 100644 --- a/src/report/report-system/Makefile.am +++ b/src/report/report-system/Makefile.am @@ -68,7 +68,6 @@ gncscm_DATA = \ report.scm gncmodscmdir = ${GNC_SHAREDIR}/guile-modules/gnucash/report/report-system - gncmodscm_DATA = \ collectors.scm \ list-extras.scm \ @@ -108,6 +107,38 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/gnome-utils \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/report/report-system + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncmodscmcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report/report-system +gncmodscmcache_DATA = $(gncmodscm_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@ +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + noinst_DATA = .scm-links EXTRA_DIST = report-system.i ${gncscmmod_DATA} ${gncscm_DATA} ${gncmodscm_DATA} diff --git a/src/report/report-system/report.scm b/src/report/report-system/report.scm index cb475f8b20..41909e896b 100644 --- a/src/report/report-system/report.scm +++ b/src/report/report-system/report.scm @@ -23,6 +23,12 @@ (use-modules (gnucash main)) (use-modules (gnucash printf)) (use-modules (gnucash gettext)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-report-system.so" "scm_init_sw_report_system_module"))) + (else )) (use-modules (sw_report_system)) ;; Terminology in this file: diff --git a/src/report/standard-reports/Makefile.am b/src/report/standard-reports/Makefile.am index 30c2d6a04b..3c540bcbf4 100644 --- a/src/report/standard-reports/Makefile.am +++ b/src/report/standard-reports/Makefile.am @@ -74,6 +74,36 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/gnome-utils \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/report/report-system + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmrptcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report/standard-reports +gncscmrptcache_DATA = $(gncscmrpt_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/report/stylesheets/Makefile.am b/src/report/stylesheets/Makefile.am index 1964d8c874..ecc1af6284 100644 --- a/src/report/stylesheets/Makefile.am +++ b/src/report/stylesheets/Makefile.am @@ -61,6 +61,33 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/gnome-utils \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/gnome-utils \ + --guile-load-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/gnome-utils + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/report/utility-reports/Makefile.am b/src/report/utility-reports/Makefile.am index b55b3c679a..cb0dcdc1fd 100644 --- a/src/report/utility-reports/Makefile.am +++ b/src/report/utility-reports/Makefile.am @@ -46,6 +46,31 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/app-utils \ + --gnc-module-dir ${top_builddir}/src/engine \ + --gnc-module-dir ${top_builddir}/src/html \ + --gnc-module-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/report/report-system \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module \ + --library-dir ${top_builddir}/src/report/report-system + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/report +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/report/utility-reports/view-column.scm b/src/report/utility-reports/view-column.scm index 9cac6f0e77..4b7016b451 100644 --- a/src/report/utility-reports/view-column.scm +++ b/src/report/utility-reports/view-column.scm @@ -30,6 +30,12 @@ (use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing. (use-modules (gnucash gnc-module)) (use-modules (gnucash gettext)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-report-system.so" "scm_init_sw_report_system_module"))) + (else )) (use-modules (sw_report_system)) (use-modules (gnucash printf)) diff --git a/src/report/utility-reports/welcome-to-gnucash.scm b/src/report/utility-reports/welcome-to-gnucash.scm index 4afb550541..55b554cf87 100644 --- a/src/report/utility-reports/welcome-to-gnucash.scm +++ b/src/report/utility-reports/welcome-to-gnucash.scm @@ -27,6 +27,12 @@ (use-modules (gnucash core-utils)) ; for gnc:version (use-modules (gnucash gettext)) (use-modules (gnucash gnc-module)) +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libgncmod-report-system.so" "scm_init_sw_report_system_module"))) + (else )) (use-modules (sw_report_system)) (gnc:module-load "gnucash/report/report-system" 0) diff --git a/src/scm/Makefile.am b/src/scm/Makefile.am index 45b5febd01..6bb04b7b1f 100644 --- a/src/scm/Makefile.am +++ b/src/scm/Makefile.am @@ -41,6 +41,25 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@ +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/scm/gnumeric/Makefile.am b/src/scm/gnumeric/Makefile.am index 60ebac4f4a..dc55ab529e 100644 --- a/src/scm/gnumeric/Makefile.am +++ b/src/scm/gnumeric/Makefile.am @@ -19,6 +19,15 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +%.go : %.scm .scm-links + $(GUILD) compile \ + -o $@ $< + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@/gnumeric +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + noinst_DATA = .scm-links EXTRA_DIST = \ diff --git a/src/tax/us/Makefile.am b/src/tax/us/Makefile.am index 1b2f0410cf..0b75b98520 100644 --- a/src/tax/us/Makefile.am +++ b/src/tax/us/Makefile.am @@ -44,6 +44,29 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --gnc-module-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/app-utils \ + --guile-load-dir ${top_builddir}/src/core-utils \ + --guile-load-dir ${top_builddir}/src/engine \ + --guile-load-dir ${top_builddir}/src/gnc-module \ + --guile-load-dir ${top_builddir}/src/scm \ + --library-dir ${top_builddir}/src/app-utils \ + --library-dir ${top_builddir}/src/core-utils \ + --library-dir ${top_builddir}/src/gnc-module + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash/tax +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) + +gncscmcachedir = ${GNC_SCM_INSTALL_DIR}/ccache/@GUILE_EFFECTIVE_VERSION@ +gncscmcache_DATA = $(gncscm_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/test-core/Makefile.am b/src/test-core/Makefile.am index 7c7ca571a6..0aea4c637b 100644 --- a/src/test-core/Makefile.am +++ b/src/test-core/Makefile.am @@ -97,6 +97,18 @@ if ! OS_WIN32 touch .scm-links endif +if GNC_HAVE_GUILE_2 +GUILE_COMPILE_ENV = \ + --library-dir ${top_builddir}/src/test-core + +%.go : %.scm .scm-links + $(shell ${top_builddir}/src/gnc-test-env --no-exports ${GUILE_COMPILE_ENV}) \ + $(GUILD) compile -o $@ $< + +gncscmmodcachedir = ${GNC_SHAREDIR}/guile-modules/ccache/@GUILE_EFFECTIVE_VERSION@/gnucash +gncscmmodcache_DATA = $(gncscmmod_DATA:.scm=.go) +endif + clean-local: $(RM) -rf gnucash diff --git a/src/test-core/unittest-support.scm b/src/test-core/unittest-support.scm index 5d5c69b653..44d89ac76a 100644 --- a/src/test-core/unittest-support.scm +++ b/src/test-core/unittest-support.scm @@ -1,5 +1,11 @@ (define-module (gnucash unittest-support)) -(load-extension "libtest-core-guile" "scm_init_unittest_support_module") +(cond-expand + (guile-2 + (eval-when + (compile load eval expand) + (load-extension "libtest-core-guile.so" "scm_init_unittest_support_module"))) + (else + (load-extension "libtest-core-guile.so" "scm_init_unittest_support_module"))) (use-modules (unittest_support)) (re-export TestErrorStruct-log-level-set)