From 28fa4c64653d8bb2620c886a60cc102a48168710 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Tue, 1 Oct 2019 12:51:38 +0200 Subject: [PATCH] core-utils - move wrapper code to bindings/guile Note core-utils.i is used by both the guile and the python bindings so it is moved up to the common bindings directory, while guile specific changes are in bindings/guile. --- bindings/CMakeLists.txt | 2 +- .../core-utils => bindings}/core-utils.i | 0 bindings/guile/CMakeLists.txt | 42 ++++++++++++++++--- .../guile}/core-utils.scm | 2 +- bindings/guile/gnc-guile-bindings.c | 5 +++ libgnucash/core-utils/CMakeLists.txt | 31 +++----------- po/POTFILES.in | 2 +- 7 files changed, 50 insertions(+), 34 deletions(-) rename {libgnucash/core-utils => bindings}/core-utils.i (100%) rename {libgnucash/core-utils => bindings/guile}/core-utils.scm (96%) diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 268222cbd4..79f9d27e75 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -1,5 +1,5 @@ add_subdirectory(guile) add_subdirectory(python) -set_local_dist(bindings_DIST_local CMakeLists.txt ) +set_local_dist(bindings_DIST_local CMakeLists.txt core-utils.i) set(bindings_DIST ${bindings_DIST_local} ${guile_DIST} ${python_bindings_DIST} PARENT_SCOPE) diff --git a/libgnucash/core-utils/core-utils.i b/bindings/core-utils.i similarity index 100% rename from libgnucash/core-utils/core-utils.i rename to bindings/core-utils.i diff --git a/bindings/guile/CMakeLists.txt b/bindings/guile/CMakeLists.txt index bb42184ff9..9c0159a8f8 100644 --- a/bindings/guile/CMakeLists.txt +++ b/bindings/guile/CMakeLists.txt @@ -1,5 +1,11 @@ add_subdirectory(test) +# Command to generate the swig-core-utils-guile.c wrapper file +gnc_add_swig_guile_command (swig-core-utils-guile-c + SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c + ${CMAKE_SOURCE_DIR}/bindings/core-utils.i ${CMAKE_SOURCE_DIR}/libgnucash/core-utils +) + set(guile_HEADERS gnc-guile-utils.h) @@ -7,19 +13,28 @@ set(guile_SOURCES gnc-guile-bindings.c gnc-guile-utils.c) +add_library(gnucash-guile SHARED + ${guile_SOURCES} + ${guile_HEADERS} + ${SWIG_CORE_UTILS_GUILE_C}) -add_library(gnucash-guile SHARED ${guile_SOURCES} ${guile_HEADERS}) +add_dependencies(gnucash-guile + swig-runtime-h) target_include_directories(gnucash-guile PRIVATE ${CMAKE_SOURCE_DIR}/common ${CMAKE_BINARY_DIR}/common + ${CMAKE_SOURCE_DIR}/libgnucash/core-utils + ${CMAKE_BINARY_DIR}/libgnucash/core-utils # For gnc-version-info.h ${GLIB2_INCLUDE_DIRS} - ${GUILE_INCLUDE_DIRS} + ${GTK_MAC_INCLUDE_DIRS} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}) + ${CMAKE_CURRENT_SOURCE_DIR} + ${GUILE_INCLUDE_DIRS}) target_link_libraries(gnucash-guile + gnc-core-utils ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} @@ -31,6 +46,8 @@ install(TARGETS gnucash-guile RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) +# Scheme + set(GUILE_DEPENDS scm-core-utils scm-gnc-module gncmod-engine) gnc_add_scheme_targets(scm-scm @@ -47,10 +64,25 @@ gnc_add_scheme_targets(price-quotes "scm-scm;scm-app-utils" FALSE) +set (core_utils_SCHEME core-utils.scm) -set_local_dist(guile_DIST_local CMakeLists.txt utilities.scm price-quotes.scm - ${guile_SOURCES} ${guile_HEADERS} +set(GUILE_OUTPUT_DIR gnucash) +set(GUILE_DEPENDS gnc-core-utils gnucash-guile) + +gnc_add_scheme_targets(scm-core-utils + "${core_utils_SCHEME}" + ${GUILE_OUTPUT_DIR} + "${GUILE_DEPENDS}" + FALSE ) + +set_local_dist(guile_DIST_local + CMakeLists.txt + core-utils.scm + utilities.scm + price-quotes.scm + ${guile_SOURCES} + ${guile_HEADERS}) set(guile_DIST ${guile_DIST_local} ${test_guile_DIST} PARENT_SCOPE) diff --git a/libgnucash/core-utils/core-utils.scm b/bindings/guile/core-utils.scm similarity index 96% rename from libgnucash/core-utils/core-utils.scm rename to bindings/guile/core-utils.scm index 302e6bf31e..5feaf1420e 100644 --- a/libgnucash/core-utils/core-utils.scm +++ b/bindings/guile/core-utils.scm @@ -29,7 +29,7 @@ ;; Guile 2 needs to find the symbols from the extension at compile time already (eval-when (compile load eval expand) - (load-extension "libgnc-core-utils" "scm_init_sw_core_utils_module")) + (load-extension "libgnucash-guile" "gnc_guile_bindings_init")) (use-modules (sw_core_utils)) diff --git a/bindings/guile/gnc-guile-bindings.c b/bindings/guile/gnc-guile-bindings.c index 42c3fe0852..0f762682e7 100644 --- a/bindings/guile/gnc-guile-bindings.c +++ b/bindings/guile/gnc-guile-bindings.c @@ -32,12 +32,17 @@ void gnc_guile_bindings_init(void); static int is_initialized = 0; +extern SCM +scm_init_sw_core_utils_module (void); + void gnc_guile_bindings_init(void) { if (!is_initialized) { /* Do what's necessary to initialize the bindings */ + scm_init_sw_core_utils_module(); + is_initialized = 1; } } diff --git a/libgnucash/core-utils/CMakeLists.txt b/libgnucash/core-utils/CMakeLists.txt index ff17edf0fd..b726ec87f4 100644 --- a/libgnucash/core-utils/CMakeLists.txt +++ b/libgnucash/core-utils/CMakeLists.txt @@ -2,17 +2,11 @@ add_subdirectory(test) -# Command to generate the swig-core-utils-guile.c wrapper file -gnc_add_swig_guile_command (swig-core-utils-guile-c - SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c - ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i "" -) - # Command to generate the swig-core-utils-python.c wrapper file gnc_add_swig_python_command (swig-core-utils-python SWIG_CORE_UTILS_PYTHON_C SWIG_CORE_UTILS_PYTHON_PY swig-core-utils-python.c sw_core_utils.py - ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i "" + ${CMAKE_SOURCE_DIR}/bindings/core-utils.i ${CMAKE_CURRENT_SOURCE_DIR} ) set (core_utils_SOURCES @@ -93,25 +87,24 @@ set(core_utils_noinst_HEADERS ) set(core_utils_ALL_SOURCES ${core_utils_SOURCES} ${core_utils_noinst_HEADERS}) -set(core_utils_ALL_LIBRARIES ${Boost_LIBRARIES} ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS}) +set(core_utils_ALL_LIBRARIES ${Boost_LIBRARIES} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS}) set(core_utils_ALL_INCLUDES ${CMAKE_SOURCE_DIR}/common ${CMAKE_BINARY_DIR}/common ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${GLIB2_INCLUDE_DIRS} - ${GUILE_INCLUDE_DIRS} ${GTK_MAC_INCLUDE_DIRS}) -set_local_dist(core_utils_DIST_local ${core_utils_ALL_SOURCES} CMakeLists.txt core-utils.i core-utils.scm gncla-dir.h.in) +set_local_dist(core_utils_DIST_local ${core_utils_ALL_SOURCES} CMakeLists.txt gncla-dir.h.in) set(core_utils_DIST ${core_utils_DIST_local} ${test_core_utils_DIST} PARENT_SCOPE) if (MAC_INTEGRATION) list(APPEND core_utils_ALL_LIBRARIES ${OSX_EXTRA_LIBRARIES}) endif() -add_library(gnc-core-utils ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_GUILE_C}) -add_dependencies(gnc-core-utils gnc-vcs-info swig-runtime-h) +add_library(gnc-core-utils ${core_utils_ALL_SOURCES}) +add_dependencies(gnc-core-utils gnc-vcs-info) target_link_libraries(gnc-core-utils ${core_utils_ALL_LIBRARIES}) @@ -170,17 +163,3 @@ endif() # No headers to install -# Scheme - -set (core_utils_SCHEME core-utils.scm) - -set(GUILE_OUTPUT_DIR gnucash) -set(GUILE_DEPENDS gnc-core-utils) - -gnc_add_scheme_targets(scm-core-utils - "${core_utils_SCHEME}" - ${GUILE_OUTPUT_DIR} - "${GUILE_DEPENDS}" - FALSE -) - diff --git a/po/POTFILES.in b/po/POTFILES.in index b9a3409142..48fae6f58a 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,5 +1,6 @@ # This is a list of files which contain translatable strings. # This file was autogenerated by cmake. +bindings/guile/core-utils.scm bindings/guile/gnc-guile-bindings.c bindings/guile/gnc-guile-utils.c bindings/guile/price-quotes.scm @@ -603,7 +604,6 @@ libgnucash/backend/xml/sixtp-stack.cpp libgnucash/backend/xml/sixtp-to-dom-parser.cpp libgnucash/backend/xml/sixtp-utils.cpp libgnucash/core-utils/binreloc.c -libgnucash/core-utils/core-utils.scm libgnucash/core-utils/gnc-environment.c libgnucash/core-utils/gnc-filepath-utils.cpp libgnucash/core-utils/gnc-gkeyfile-utils.c