From 6eb0ccfa1172a20074c03e1b1fdf1c730edd09ad Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Tue, 19 Nov 2019 16:40:41 +0100 Subject: [PATCH] gnc-module - move guile wrappers to bindings/guile --- bindings/CMakeLists.txt | 3 ++- .../gnc-module => bindings}/gnc-module.i | 0 bindings/guile/CMakeLists.txt | 25 ++++++++++++++++++- bindings/guile/engine-utilities.scm | 2 -- bindings/guile/gnc-guile-bindings.c | 2 ++ .../guile}/gnc-module.scm | 23 ++++++++--------- libgnucash/gnc-module/CMakeLists.txt | 23 +---------------- libgnucash/gnc-module/test/CMakeLists.txt | 2 +- po/POTFILES.in | 2 +- 9 files changed, 41 insertions(+), 41 deletions(-) rename {libgnucash/gnc-module => bindings}/gnc-module.i (100%) rename {libgnucash/gnc-module => bindings/guile}/gnc-module.scm (74%) diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 6510379562..99e2ca73b8 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -6,5 +6,6 @@ set_local_dist(bindings_DIST_local business-core.i core-utils.i engine.i - engine-common.i) + engine-common.i + gnc-module.i) set(bindings_DIST ${bindings_DIST_local} ${guile_DIST} ${python_bindings_DIST} PARENT_SCOPE) diff --git a/libgnucash/gnc-module/gnc-module.i b/bindings/gnc-module.i similarity index 100% rename from libgnucash/gnc-module/gnc-module.i rename to bindings/gnc-module.i diff --git a/bindings/guile/CMakeLists.txt b/bindings/guile/CMakeLists.txt index 3810a423d4..ad73e4a76f 100644 --- a/bindings/guile/CMakeLists.txt +++ b/bindings/guile/CMakeLists.txt @@ -20,6 +20,15 @@ gnc_add_swig_guile_command (swig-engine-c ${CMAKE_SOURCE_DIR}/bindings/engine-common.i ) +# Command to generate the swig-gnc-module.c wrapper file +gnc_swig_extract_header_files (gnc-module GNC_MODULE_HEADERS) +gnc_add_swig_guile_command (swig-gnc-module-c + SWIG_GNC_MODULE_C swig-gnc-module.c + ${CMAKE_SOURCE_DIR}/bindings/gnc-module.i + "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_SOURCE_DIR}/libgnucash/gnc-module" + ${GNC_MODULE_HEADERS} +) + set(guile_HEADERS glib-guile.h gnc-engine-guile.h @@ -37,7 +46,8 @@ add_library(gnucash-guile SHARED ${guile_SOURCES} ${guile_HEADERS} ${SWIG_CORE_UTILS_GUILE_C} - ${SWIG_ENGINE_C}) + ${SWIG_ENGINE_C} + ${SWIG_GNC_MODULE_C}) add_dependencies(gnucash-guile swig-runtime-h) @@ -57,6 +67,7 @@ target_link_libraries(gnucash-guile PRIVATE gnc-core-utils gncmod-engine + gnc-module ${GLIB2_LDFLAGS}) install(TARGETS gnucash-guile @@ -128,6 +139,17 @@ gnc_add_scheme_targets(scm-engine-2 add_custom_target(scm-engine ALL DEPENDS scm-engine-2 scm-engine-1 scm-engine-0) +set(scm_gnc_module_DEPENDS + gnc-module + gnucash-guile) + +gnc_add_scheme_targets(scm-gnc-module + gnc-module.scm + gnucash + "${scm_gnc_module_DEPENDS}" + FALSE +) + gnc_add_scheme_targets(price-quotes price-quotes.scm gnucash @@ -137,6 +159,7 @@ gnc_add_scheme_targets(price-quotes set_local_dist(guile_DIST_local CMakeLists.txt core-utils.scm + gnc-module.scm price-quotes.scm ${guile_SOURCES} ${guile_HEADERS} diff --git a/bindings/guile/engine-utilities.scm b/bindings/guile/engine-utilities.scm index 3d101757ec..77feacb308 100644 --- a/bindings/guile/engine-utilities.scm +++ b/bindings/guile/engine-utilities.scm @@ -20,8 +20,6 @@ ;; Boston, MA 02110-1301, USA gnu@gnu.org ;; Copyright 2000 Rob Browning -(use-modules (gnucash gnc-module)) - (eval-when (compile load eval expand) (load-extension "libgnucash-guile" "gnc_guile_bindings_init")) diff --git a/bindings/guile/gnc-guile-bindings.c b/bindings/guile/gnc-guile-bindings.c index 4d40df5cdf..424d31daf0 100644 --- a/bindings/guile/gnc-guile-bindings.c +++ b/bindings/guile/gnc-guile-bindings.c @@ -34,6 +34,7 @@ static int is_initialized = 0; extern SCM scm_init_sw_core_utils_module (void); extern SCM scm_init_sw_engine_module (void); +extern SCM scm_init_sw_gnc_module_module (void); void gnc_guile_bindings_init(void) @@ -43,6 +44,7 @@ gnc_guile_bindings_init(void) /* Do what's necessary to initialize the bindings */ scm_init_sw_core_utils_module(); scm_init_sw_engine_module(); + scm_init_sw_gnc_module_module(); is_initialized = 1; } diff --git a/libgnucash/gnc-module/gnc-module.scm b/bindings/guile/gnc-module.scm similarity index 74% rename from libgnucash/gnc-module/gnc-module.scm rename to bindings/guile/gnc-module.scm index 236f02f178..9785e8bae8 100644 --- a/libgnucash/gnc-module/gnc-module.scm +++ b/bindings/guile/gnc-module.scm @@ -30,23 +30,20 @@ ;; Guile 2 needs to find the symbols from the extension at compile time already (eval-when (compile load eval expand) - (load-extension "libgnc-module" "scm_init_sw_gnc_module_module")) - + (load-extension "libgnucash-guile" "gnc_guile_bindings_init")) (use-modules (sw_gnc_module)) -(define gnc:module-system-init gnc-module-system-init) -(define gnc:module-system-refresh gnc-module-system-refresh) -(define gnc:module-load gnc-module-load) -(define gnc:module-load-optional gnc-module-load-optional) -(define gnc:module-unload gnc-module-unload) +; Export the swig-wrapped symbols in the public interface of this module +(let ((i (module-public-interface (current-module)))) + (module-use! i (resolve-interface '(sw_gnc_module)))) -(export gnc:module-system-init) -(export gnc:module-system-refresh) -(export gnc:module-load) -(export gnc:module-load-optional) -(export gnc:module-unload) -(export gnc:module-begin-syntax) +(define-public gnc:module-system-init gnc-module-system-init) +(define-public gnc:module-system-refresh gnc-module-system-refresh) +(define-public gnc:module-load gnc-module-load) +(define-public gnc:module-load-optional gnc-module-load-optional) +(define-public gnc:module-unload gnc-module-unload) ;; Guile 2 needs to load external modules at compile time (define-syntax-rule (gnc:module-begin-syntax form ...) (eval-when (load compile eval expand) (begin form ...))) +(export gnc:module-begin-syntax) diff --git a/libgnucash/gnc-module/CMakeLists.txt b/libgnucash/gnc-module/CMakeLists.txt index 01d0b2cb73..072c91de07 100644 --- a/libgnucash/gnc-module/CMakeLists.txt +++ b/libgnucash/gnc-module/CMakeLists.txt @@ -2,12 +2,6 @@ add_subdirectory(test) add_subdirectory(example) -# Command to generate the swig-gnc-module.c wrapper file -gnc_add_swig_guile_command (swig-gnc-module-c - SWIG_GNC_MODULE_C swig-gnc-module.c - ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i "" -) - set (gnc_module_SOURCES gnc-module.c) # Add dependency on config.h @@ -21,7 +15,6 @@ set (gnc_module_HEADERS add_library (gnc-module ${gnc_module_SOURCES} ${gnc_module_HEADERS} - ${SWIG_GNC_MODULE_C} ) target_link_libraries(gnc-module ${GUILE_LDFLAGS} ${GMODULE_LDFLAGS} ${GLIB2_LDFLAGS}) @@ -43,20 +36,6 @@ install(TARGETS gnc-module install(FILES ${gnc_module_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gnucash) -# --- Compile Scheme file(s) --- - -set (gnc_module_SCHEME gnc-module.scm) - -set(GUILE_OUTPUT_DIR gnucash) -set(GUILE_DEPENDS gnc-module) - -gnc_add_scheme_targets(scm-gnc-module - "${gnc_module_SCHEME}" - ${GUILE_OUTPUT_DIR} - "${GUILE_DEPENDS}" - FALSE -) - set_local_dist(gnc_module_DIST_local CMakeLists.txt ${gnc_module_SOURCES} ${gnc_module_HEADERS} - gnc-module.i gnc-module.scm README) + README) set(gnc_module_DIST ${gnc_module_DIST_local} ${test_gnc_module_DIST} ${example_DIST} PARENT_SCOPE) diff --git a/libgnucash/gnc-module/test/CMakeLists.txt b/libgnucash/gnc-module/test/CMakeLists.txt index 01a852b1c5..4a96c09eb5 100644 --- a/libgnucash/gnc-module/test/CMakeLists.txt +++ b/libgnucash/gnc-module/test/CMakeLists.txt @@ -56,7 +56,7 @@ set(test_gnc_module_SCHEME ) set(CORE_GUILE_DEPENDS - gnc-module + scm-gnc-module scm-test-core scm-mod-foo gncmod-bar diff --git a/po/POTFILES.in b/po/POTFILES.in index dcd38babcf..78524f0f0b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -10,6 +10,7 @@ bindings/guile/gnc-engine-guile.c bindings/guile/gnc-guile-bindings.c bindings/guile/gnc-guile-utils.c bindings/guile/gnc-kvp-guile.cpp +bindings/guile/gnc-module.scm bindings/guile/gnc-numeric.scm bindings/guile/price-quotes.scm bindings/guile/utilities.scm @@ -688,7 +689,6 @@ libgnucash/engine/Transaction.c libgnucash/engine/TransLog.c libgnucash/gnc-module/example/gncmod-example.c libgnucash/gnc-module/gnc-module.c -libgnucash/gnc-module/gnc-module.scm libgnucash/tax/de_DE/tax.scm libgnucash/tax/de_DE/txf-help.scm libgnucash/tax/de_DE/txf.scm