gnucash maint: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Thu Sep 1 19:54:24 EDT 2016


Updated	 via  https://github.com/Gnucash/gnucash/commit/1cbbfa94 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/78ef933e (commit)
	from  https://github.com/Gnucash/gnucash/commit/ea386249 (commit)



commit 1cbbfa94903bf68d1c7720bfc2e1ae5126d616bb
Author: John Ralls <jralls at ceridwen.us>
Date:   Thu Sep 1 14:42:18 2016 -0700

    Bug 769730 - Investments: Lots in This Account, Closed column shows
    
    date 25/11/1833 instead of Open.
    Affected 32-bit builds only.

diff --git a/src/gnome/dialog-lot-viewer.c b/src/gnome/dialog-lot-viewer.c
index b7f75a4..b5e44b3 100644
--- a/src/gnome/dialog-lot-viewer.c
+++ b/src/gnome/dialog-lot-viewer.c
@@ -392,7 +392,7 @@ gnc_lot_viewer_fill (GNCLotViewer *lv)
         }
         else
         {
-            gtk_list_store_set(store, &iter, LOT_COL_CLOSE, 0, -1);
+            gtk_list_store_set(store, &iter, LOT_COL_CLOSE, 0LL, -1);
         }
 
         /* Title */

commit 78ef933e4478a9e34534a7ec5d74a64ef88dc5b0
Author: Rob Gowin <robgowin at gmail.com>
Date:   Fri Aug 26 13:59:33 2016 -0500

    CMake improvements for SWIG handling and Python bindings.
    
    * Add ability to either create SWIG C files or use generated ones
      depending on BUILDING_FROM_VCS.
    
    * Add complete support for compiling Python bindings using
      WITH_PYTHON=YES.
    
    * Add CMakeLists.txt files to a couple more directories.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2cbac6..ee7175b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,6 +56,7 @@ OPTION (WITH_AQBANKING "Build this project with aqbanking (online banking) suppo
 OPTION (WITH_GNUCASH "Build all of GnuCash, not just cutecash" ON)
 OPTION (WITH_CUTECASH "Also build cutecash" OFF)
 OPTION (WITH_OFX "compile with ofx support (needs LibOFX)" ON)
+OPTION (WITH_PYTHON "enable python plugin and bindings" OFF)
 OPTION (ENABLE_BINRELOC "compile with binary relocation support" ON)
 OPTION (ENABLE_DEBUG "compile with debugging flags set" OFF)
 OPTION (ENABLE_REGISTER2 "compile with register2 enabled" OFF)
@@ -100,6 +101,19 @@ IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
   SET(SHELL ${SHELL_FROM_ENV})
 ENDIF()
 
+# Determine whether we are building from a VCS or from a tarball
+EXECUTE_PROCESS(
+  COMMAND ${SHELL} ${CMAKE_SOURCE_DIR}/util/gnc-vcs-info -t ${CMAKE_SOURCE_DIR}
+  RESULT_VARIABLE GNC_VCS_INFO_RESULT
+  OUTPUT_VARIABLE GNC_VCS_INFO_OUTPUT
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+SET(BUILDING_FROM_VCS "NO")
+IF (GNC_VCS_INFO_RESULT EQUAL 0)
+  SET(BUILDING_FROM_VCS "YES")
+ENDIF()
+
 IF (WIN32)
   # Help Windows find the various dependencies. We assume here that the standard advice for building
   # GnuCash has been followed and that these dependencies live underneath something like C:/GCDEV, which
@@ -215,8 +229,10 @@ ENDIF (WIN32)
 # ############################################################
 
 # SWIG
-FIND_PACKAGE (SWIG REQUIRED)
-INCLUDE (${SWIG_USE_FILE})
+IF(BUILDING_FROM_VCS)
+  FIND_PACKAGE (SWIG REQUIRED)
+  INCLUDE (${SWIG_USE_FILE})
+ENDIF()
 
 # Find Guile and determine which version we are using.
 # First look for guile-2.0. If not found, try to locate guile-1.8
@@ -325,6 +341,24 @@ ENDIF (WITH_SQL)
 
 # ############################################################
 
+IF (WITH_PYTHON)
+  FIND_PACKAGE(PythonInterp)
+  IF (NOT PYTHONINTERP_FOUND)
+    MESSAGE(SEND_ERROR "Python support enabled, but Python interpreter not found.")
+  ENDIF()
+
+  IF (PYTHON_VERSION_STRING VERSION_LESS "2.4.0")
+    MESSAGE(SEND_ERROR "Found python version ${PYTHON_VERSION_STRING}, but it's too old. Need python >= 2.4.0")
+  ENDIF()
+
+  FIND_PACKAGE(PythonLibs)
+  IF (NOT PYTHONLIBS_FOUND)
+    MESSAGE(SEND_ERROR "Python support enabled, but Python libraries not found.")
+  ENDIF()
+ENDIF()
+
+
+
 FIND_PACKAGE(Perl)
 
 if (NOT PERL_FOUND)
@@ -416,6 +450,7 @@ ENDIF()
 ADD_SUBDIRECTORY (accounts)
 ADD_SUBDIRECTORY (checks)
 ADD_SUBDIRECTORY (doc)
+ADD_SUBDIRECTORY (packaging)
 ADD_SUBDIRECTORY (po)
 ADD_SUBDIRECTORY (src)
 
diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
new file mode 100644
index 0000000..ccccdf5
--- /dev/null
+++ b/packaging/CMakeLists.txt
@@ -0,0 +1,2 @@
+
+GNC_CONFIGURE(gnucash.spec.in gnucash.spec)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c7045bf..1465093 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -171,13 +171,18 @@ IF (WITH_GNUCASH)
   ADD_SUBDIRECTORY (bin)
   ADD_SUBDIRECTORY (business/business-ledger)
   ADD_SUBDIRECTORY (business/business-gnome)
+  ADD_SUBDIRECTORY (doc/design)
   ADD_SUBDIRECTORY (gnome)
   ADD_SUBDIRECTORY (gnome-utils)
   ADD_SUBDIRECTORY (gnome-search)
   ADD_SUBDIRECTORY (html)
+  ADD_SUBDIRECTORY (optional/python-bindings)
   ADD_SUBDIRECTORY (plugins/bi_import)
   ADD_SUBDIRECTORY (plugins/customer_import)
   ADD_SUBDIRECTORY (pixmaps)
+IF (WITH_PYTHON)
+  ADD_SUBDIRECTORY (python)
+ENDIF()
   ADD_SUBDIRECTORY (quotes)
   ADD_SUBDIRECTORY (register/ledger-core)
   ADD_SUBDIRECTORY (register/register-core)
diff --git a/src/app-utils/CMakeLists.txt b/src/app-utils/CMakeLists.txt
index 62b7cf9..62558c3 100644
--- a/src/app-utils/CMakeLists.txt
+++ b/src/app-utils/CMakeLists.txt
@@ -36,9 +36,16 @@ SET (app_utils_HEADERS
 
 )
 
-# Command to generate the swig-app-utils.c wrapper file
-SET (SWIG_APP_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
+IF (BUILDING_FROM_VCS)
+  # Command to generate the swig-app-utils.c wrapper file
+  SET (SWIG_APP_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-guile.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
+  SET (SWIG_APP_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-python.c)
+  GNC_ADD_SWIG_PYTHON_COMMAND (swig-app-utils-python ${SWIG_APP_UTILS_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
+ELSE()
+  SET (SWIG_APP_UTILS_GUILE_C swig-app-utils-guile.c)
+  SET (SWIG_APP_UTILS_PYTHON_C swig-app-utils-python.c)
+ENDIF()
 
 SET (app_utils_SOURCES
   calculation/expression_parser.c
@@ -66,47 +73,57 @@ SET (app_utils_SOURCES
   gncmod-app-utils.c
   guile-util.c
   option-util.c
-  ${SWIG_APP_UTILS_C}
+  ${SWIG_APP_UTILS_GUILE_C}
 )
 
-IF (WIN32)
-  SET (app_utils_SOURCES ${app_utils_SOURCES} gnc-help-utils.c)
-ENDIF (WIN32)
-
 SET_SOURCE_FILES_PROPERTIES (${app_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
-ADD_LIBRARY	(gncmod-app-utils
-  ${app_utils_SOURCES}
-  ${app_utils_HEADERS}
-  ${app_utils_noinst_HEADERS}
-)
+SET(app_utils_ALL_SOURCES ${app_utils_SOURCES} ${app_utils_HEADERS} ${app_utils_noinst_HEADERS})
+SET(app_utils_ALL_LIBRARIES gncmod-engine gnc-module ${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS})
+SET(app_utils_ALL_INCLUDES  ${CMAKE_CURRENT_SOURCE_DIR}/calculation  ${LIBXML2_INCLUDE_DIRS}
+                               ${LIBXSLT_INCLUDE_DIRS} ${GTK2_INCLUDE_DIRS})
 
-TARGET_LINK_LIBRARIES(gncmod-app-utils gncmod-engine gnc-module 
-  ${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS}
-)
+IF (WIN32)
+  LIST(APPEND app_utils_ALL_SOURCES gnc-help-utils.c)
+  LIST(APPEND app_utils_ALL_LIBRARIES ${HTMLHELP_LIBRARY})
+  LIST(APPEND app_utils_ALL_INCLUDES ${HTMLHELP_INCLUDE_PATH})
+ENDIF()
 
-IF (WIN32) 
-   TARGET_LINK_LIBRARIES(gncmod-app-utils ${HTMLHELP_LIBRARY})
-ENDIF(WIN32)
+ADD_LIBRARY (gncmod-app-utils ${app_utils_ALL_SOURCES})
+TARGET_LINK_LIBRARIES(gncmod-app-utils ${app_utils_ALL_LIBRARIES})
 
 TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils
     PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
-    PRIVATE
-      ${CMAKE_CURRENT_SOURCE_DIR}/calculation
-      ${LIBXML2_INCLUDE_DIRS}
-      ${LIBXSLT_INCLUDE_DIRS}
-      ${HTMLHELP_INCLUDE_PATH}
-      ${GTK2_INCLUDE_DIRS}
+    PRIVATE ${app_utils_ALL_INCLUDES}
 )
-
 TARGET_COMPILE_DEFINITIONS (gncmod-app-utils PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
 
-
 INSTALL(TARGETS gncmod-app-utils
-     LIBRARY DESTINATION lib/gnucash
-     ARCHIVE DESTINATION lib/gnucash
-     RUNTIME DESTINATION bin
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin
 )
+
+IF (WITH_PYTHON)
+  ADD_LIBRARY (gncmod-app-utils-python ${app_utils_ALL_SOURCES} ${SWIG_APP_UTILS_PYTHON_C})
+
+  TARGET_LINK_LIBRARIES(gncmod-app-utils-python ${app_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
+
+  TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils-python
+    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+    PRIVATE ${app_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS}
+  )
+  TARGET_COMPILE_DEFINITIONS (gncmod-app-utils-python PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
+
+  INSTALL(TARGETS gncmod-app-utils-python
+    LIBRARY DESTINATION lib/gnucash
+    ARCHIVE DESTINATION lib/gnucash
+    RUNTIME DESTINATION bin
+  )
+ENDIF()
+
+
+
 INSTALL(FILES ${app_utils_HEADERS} DESTINATION include/gnucash)
 
 FILE(READ ${CMAKE_SOURCE_DIR}/src/import-export/ofx/migratable-prefs-ofx.xml MIGRATABLE_PREFS_OFX)
diff --git a/src/cmake_modules/GncAddSwigCommand.cmake b/src/cmake_modules/GncAddSwigCommand.cmake
index a2cb024..89f4c26 100644
--- a/src/cmake_modules/GncAddSwigCommand.cmake
+++ b/src/cmake_modules/GncAddSwigCommand.cmake
@@ -9,7 +9,21 @@ MACRO (GNC_ADD_SWIG_COMMAND _target _input)
 ADD_CUSTOM_COMMAND (
   OUTPUT ${_target}
   DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
-  COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src  -o ${_target} ${_input}
+COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src  -o ${_target} ${_input}
 )
 
 ENDMACRO (GNC_ADD_SWIG_COMMAND)
+
+
+MACRO (GNC_ADD_SWIG_PYTHON_COMMAND _target _output _input)
+
+  ADD_CUSTOM_COMMAND(OUTPUT ${_output}
+
+    COMMAND ${SWIG_EXECUTABLE} -python -Wall -Werror ${SWIG_ARGS}
+       -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src
+       -I${CMAKE_SOURCE_DIR}/src/engine -I${CMAKE_SOURCE_DIR}/src/app-utils
+       -o ${_output} ${_input}
+    DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
+  )
+  ADD_CUSTOM_TARGET(${_target} ALL DEPENDS ${_output} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${_input} ${ARGN})
+ENDMACRO()
diff --git a/src/core-utils/CMakeLists.txt b/src/core-utils/CMakeLists.txt
index 55de0ad..16fac5d 100644
--- a/src/core-utils/CMakeLists.txt
+++ b/src/core-utils/CMakeLists.txt
@@ -1,9 +1,16 @@
 # CMakeLists.txt for src/core-utils
 
 ADD_SUBDIRECTORY(test)
-# Command to generate the swig-engine.c wrapper file
-SET (SWIG_CORE_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
+
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_CORE_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-guile.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
+  SET (SWIG_CORE_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-python.c)
+  GNC_ADD_SWIG_PYTHON_COMMAND (swig-core-utils-python ${SWIG_CORE_UTILS_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
+ELSE()
+  SET(SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c)
+  SET(SWIG_CORE_UTILS_PYTHON_C swig-core-utils-python.c)
+ENDIF()
 
 SET (core_utils_SOURCES
   binreloc.c
@@ -19,7 +26,6 @@ SET (core_utils_SOURCES
   gnc-locale-utils.c
   gnc-path.c
   gnc-uri-utils.c
-  ${SWIG_CORE_UTILS_C}
 )
 
 # Add dependency on config.h
@@ -102,33 +108,59 @@ SET(core_utils_noinst_HEADERS
   gnc-uri-utils.h
 )
 
-ADD_LIBRARY	(gnc-core-utils
-  ${core_utils_SOURCES}
-  ${core_utils_noinst_HEADERS}
-)
+SET(core_utils_ALL_SOURCES ${core_utils_SOURCES} ${core_utils_noinst_HEADERS})
+SET(core_utils_ALL_LIBRARIES gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS})
+SET(core_utils_ALL_INCLUDES ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
+                            ${GUILE_INCLUDE_DIRS} ${GTK_MAC_INCLUDE_DIRS})
+
+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)
 
-TARGET_LINK_LIBRARIES(gnc-core-utils gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS})
+TARGET_LINK_LIBRARIES(gnc-core-utils ${core_utils_ALL_LIBRARIES})
 
 TARGET_COMPILE_DEFINITIONS(gnc-core-utils
     PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER})
 
-TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC
-  ${CMAKE_CURRENT_BINARY_DIR} # for headers generated in core-utils build directory
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${GUILE_INCLUDE_DIRS}
-  ${GTK_MAC_INCLUDE_DIRS}
-)
+TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC ${core_utils_ALL_INCLUDES})
 
 IF (MAC_INTEGRATION)
   TARGET_COMPILE_OPTIONS(gnc-core-utils PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
-  TARGET_LINK_LIBRARIES(gnc-core-utils ${OSX_EXTRA_LIBRARIES})
 ENDIF(MAC_INTEGRATION)
 
 INSTALL(TARGETS gnc-core-utils
   LIBRARY DESTINATION lib
   ARCHIVE DESTINATION lib
-  RUNTIME DESTINATION bin)
+  RUNTIME DESTINATION bin
+)
+
+IF (WITH_PYTHON)
+  ADD_LIBRARY	(gnc-core-utils-python ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_PYTHON_C})
+  ADD_DEPENDENCIES(gnc-core-utils-python gnc-vcs-info)
+
+  TARGET_LINK_LIBRARIES(gnc-core-utils-python ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
+
+  TARGET_COMPILE_DEFINITIONS(gnc-core-utils-python
+    PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER}
+  )
+
+  TARGET_INCLUDE_DIRECTORIES(gnc-core-utils-python PUBLIC ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS})
+
+  IF (MAC_INTEGRATION)
+    TARGET_COMPILE_OPTIONS(gnc-core-utils-python PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
+  ENDIF(MAC_INTEGRATION)
+
+  INSTALL(TARGETS gnc-core-utils-python
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib
+    RUNTIME DESTINATION bin
+  )
+
+ENDIF()
+
 # No headers to install
 
 # Scheme
diff --git a/src/doc/design/CMakeLists.txt b/src/doc/design/CMakeLists.txt
new file mode 100644
index 0000000..558cbb2
--- /dev/null
+++ b/src/doc/design/CMakeLists.txt
@@ -0,0 +1,38 @@
+
+SET(gnucash_design_TEXINFOS
+  component-manager.texi
+  concept-index.texi
+  engine.texi
+  fdl.texi
+  function-index.texi
+  intro.texi
+  register.texi
+  reports.texi
+  top-level.texi
+  type-index.texi
+  user-preferences.texi
+)
+
+
+EXECUTE_PROCESS(COMMAND date +%e OUTPUT_VARIABLE CURRENT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+EXECUTE_PROCESS(COMMAND date +%B OUTPUT_VARIABLE CURRENT_MONTH OUTPUT_STRIP_TRAILING_WHITESPACE)
+EXECUTE_PROCESS(COMMAND date +%Y OUTPUT_VARIABLE CURRENT_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE)
+SET(UPDATED "${CURRENT_DATE} ${CURRENT_MONTH} ${CURRENT_YEAR}")
+SET(UPDATED_MONTH "${CURRENT_MONTH} ${CURRENT_YEAR}")
+
+SET(VERSION_TEXI_IN
+  "@set UPDATED ${UPDATED}
+ at set UPDATED-MONTH ${UPDATED_MONTH}
+ at set EDITION ${VERSION}
+ at set VERSION ${VERSION}
+")
+
+FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.texi ${VERSION_TEXI_IN})
+
+FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" TEXI_BINARY_DIR)
+FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/gnucash-design.texi" TEXI_SOURCE_FILE)
+
+ADD_CUSTOM_TARGET(gnucash-design.texi ALL
+  COMMAND makeinfo -I ${TEXI_BINARY_DIR} ${TEXI_SOURCE_FILE}
+  DEPENDS ${gnucash_design_TEXINFOS}
+)
diff --git a/src/engine/CMakeLists.txt b/src/engine/CMakeLists.txt
index cc4d303..2f67b68 100644
--- a/src/engine/CMakeLists.txt
+++ b/src/engine/CMakeLists.txt
@@ -73,9 +73,13 @@ SET (engine_HEADERS
   gncVendorP.h
 )
 
-# Command to generate the swig-engine.c wrapper file
-SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS})
+IF (BUILDING_FROM_VCS)
+  # Command to generate the swig-engine.c wrapper file
+  SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS})
+ELSE()
+  SET (SWIG_ENGINE_C swig-engine.c)
+ENDIF()
 
 # Command to generate the iso-4217-currencies.c file
 SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c)
diff --git a/src/gnc-module/CMakeLists.txt b/src/gnc-module/CMakeLists.txt
index 0863fd3..0a89b6d 100644
--- a/src/gnc-module/CMakeLists.txt
+++ b/src/gnc-module/CMakeLists.txt
@@ -1,9 +1,13 @@
 # CMakeLists.txt for src/gnc-module
 ADD_SUBDIRECTORY(test)
 
-# Command to generate the swig-engine.c wrapper file
-SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
+IF (BUILDING_FROM_VCS)
+  # Command to generate the swig-engine.c wrapper file
+  SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
+ELSE()
+  SET (SWIG_GNC_MODULE_C swig-gnc-module.c)
+ENDIF()
 
 SET (gnc_module_SOURCES
   gnc-module.c
diff --git a/src/gnc-module/test/mod-bar/CMakeLists.txt b/src/gnc-module/test/mod-bar/CMakeLists.txt
index 6ebf789..202e6e3 100644
--- a/src/gnc-module/test/mod-bar/CMakeLists.txt
+++ b/src/gnc-module/test/mod-bar/CMakeLists.txt
@@ -1,6 +1,10 @@
 
-SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h)
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h)
+ELSE()
+  SET (SWIG_BAR_C swig-bar.c)
+ENDIF()
 
 ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h)
 ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c)
diff --git a/src/gnc-module/test/mod-baz/CMakeLists.txt b/src/gnc-module/test/mod-baz/CMakeLists.txt
index 376ff07..0bd62ae 100644
--- a/src/gnc-module/test/mod-baz/CMakeLists.txt
+++ b/src/gnc-module/test/mod-baz/CMakeLists.txt
@@ -1,6 +1,10 @@
 
-SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h)
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h)
+ELSE()
+  SET (SWIG_BAZ_C swig-baz.c)
+ENDIF()
 
 ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h)
 TARGET_INCLUDE_DIRECTORIES(baz PRIVATE
diff --git a/src/gnc-module/test/mod-foo/CMakeLists.txt b/src/gnc-module/test/mod-foo/CMakeLists.txt
index 13dc098..aa29036 100644
--- a/src/gnc-module/test/mod-foo/CMakeLists.txt
+++ b/src/gnc-module/test/mod-foo/CMakeLists.txt
@@ -1,6 +1,10 @@
 
-SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h)
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h)
+ELSE()
+  SET (SWIG_FOO_C swig-foo.c)
+ENDIF()
 
 ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h)
 ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c)
diff --git a/src/gnome-utils/CMakeLists.txt b/src/gnome-utils/CMakeLists.txt
index 2f353ba..abe2384 100644
--- a/src/gnome-utils/CMakeLists.txt
+++ b/src/gnome-utils/CMakeLists.txt
@@ -5,8 +5,12 @@ ADD_SUBDIRECTORY(gtkbuilder)
 ADD_SUBDIRECTORY(ui)
 ADD_SUBDIRECTORY(test)
 
-SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
+ELSE()
+  SET (SWIG_GNOME_UTILS_C swig-gnome-utils.c)
+ENDIF()
 
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in.in
                ${CMAKE_CURRENT_BINARY_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in)
diff --git a/src/gnome/CMakeLists.txt b/src/gnome/CMakeLists.txt
index 5eed8cc..f6ff0d6 100644
--- a/src/gnome/CMakeLists.txt
+++ b/src/gnome/CMakeLists.txt
@@ -39,8 +39,12 @@ SET (gnc_gnome_noinst_HEADERS
   window-autoclear.h
 )
 
-SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS})
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS})
+ELSE()
+  SET (SWIG_GNOME_C swig-gnome.c)
+ENDIF()
 
 SET (gnc_gnome_SOURCES 
   ${SWIG_GNOME_C}
diff --git a/src/html/CMakeLists.txt b/src/html/CMakeLists.txt
index 1e2f3fa..da8c6e8 100644
--- a/src/html/CMakeLists.txt
+++ b/src/html/CMakeLists.txt
@@ -9,8 +9,12 @@ SET (html_HEADERS
   gnc-html-webkit-p.h
 )
 
-SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i ${gncmod_html_HEADERS})  
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i ${gncmod_html_HEADERS})
+ELSE()
+  SET (SWIG_GNC_HTML_C swig-gnc-html.c)
+ENDIF()
 
 SET (html_SOURCES
   gncmod-html.c
diff --git a/src/optional/python-bindings/CMakeLists.txt b/src/optional/python-bindings/CMakeLists.txt
new file mode 100644
index 0000000..69df126
--- /dev/null
+++ b/src/optional/python-bindings/CMakeLists.txt
@@ -0,0 +1,103 @@
+
+
+IF (BUILDING_FROM_VCS)
+  SET(SWIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnucash_core.i ${CMAKE_CURRENT_SOURCE_DIR}/timespec.i)
+  SET(GNUCASH_CORE_C_INCLUDES
+    ${CMAKE_BINARY_DIR}/src/config.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/qofsession.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/qofbook.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/qofbackend.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/qoflog.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/qofutil.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/qofid.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/guid.h
+    ${CMAKE_SOURCE_DIR}/src/gnc-module/gnc-module.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gnc-engine.h
+		${CMAKE_SOURCE_DIR}/src/engine/Transaction.h
+    ${CMAKE_SOURCE_DIR}/src/engine/Split.h
+    ${CMAKE_SOURCE_DIR}/src/engine/Account.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gnc-commodity.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gnc-lot.h
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof/gnc-numeric.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncCustomer.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncEmployee.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncVendor.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncAddress.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncBillTerm.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncOwner.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncInvoice.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncJob.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncEntry.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncTaxTable.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gncIDSearch.h
+    ${CMAKE_SOURCE_DIR}/src/engine/gnc-pricedb.h
+    ${CMAKE_SOURCE_DIR}/src/app-utils/gnc-prefs-utils.h
+  )
+
+  SET (SWIG_GNUCASH_CORE_C ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core.c)
+
+  GNC_ADD_SWIG_PYTHON_COMMAND (swig-gnucash-core ${SWIG_GNUCASH_CORE_C}
+    ${SWIG_FILES}
+    ${CMAKE_SOURCE_DIR}/src/base-typemaps.i
+    ${CMAKE_SOURCE_DIR}/src/engine/engine-common.i
+    ${GNUCASH_CORE_C_INCLUDES}
+  )
+ELSE()
+  SET (SWIG_GNUCASH_CORE_C gnucash_core.c)
+ENDIF()
+
+IF(WITH_PYTHON)
+
+  SET(gnucash_core_c_INCLUDE_DIRS
+    ${CMAKE_SOURCE_DIR}/src/libqof/qof
+    ${CMAKE_SOURCE_DIR}/src
+    ${CMAKE_SOURCE_DIR}/src/engine
+    ${CMAKE_SOURCE_DIR}/src/gnome-utils
+    ${CMAKE_SOURCE_DIR}/src/app-utils
+    ${CMAKE_SOURCE_DIR}/src/gnc-module
+    ${CMAKE_SOURCE_DIR}/src/gnome
+    ${CMAKE_SOURCE_DIR}/src/core-utils
+    ${CMAKE_SOURCE_DIR}/src/gnc-module
+    ${GLIB_INCLUDE_DIRS}
+    ${PYTHON_INCLUDE_DIRS}
+  )
+
+  ADD_LIBRARY(gnucash_core_c MODULE ${SWIG_GNUCASH_CORE_C})
+  TARGET_INCLUDE_DIRECTORIES(gnucash_core_c PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
+
+  TARGET_LINK_LIBRARIES(gnucash_core_c gnc-qof gnc-module gncmod-engine gncmod-app-utils ${GLIB_LIBS} ${PYTHON_LIBRARIES})
+  SET_TARGET_PROPERTIES(gnucash_core_c PROPERTIES PREFIX "_")
+  TARGET_COMPILE_OPTIONS(gnucash_core_c PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
+
+  ADD_EXECUTABLE(sqlite3test EXCLUDE_FROM_ALL sqlite3test.c ${SWIG_GNUCASH_CORE_C})
+  TARGET_LINK_LIBRARIES(sqlite3test gnc-qof gnc-module gncmod-engine gncmod-app-utils ${GLIB_LIBS} ${PYTHON_LIBRARIES})
+  TARGET_INCLUDE_DIRECTORIES(sqlite3test PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
+  TARGET_COMPILE_OPTIONS(sqlite3test PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
+
+  ADD_TEST(NAME sqlite3test COMMAND sqlite3test)
+  ADD_DEPENDENCIES(check sqlite3test)
+
+
+  # Determine where to install the python libraries.
+  EXECUTE_PROCESS(
+    COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print sysconfig.get_path('platlib', vars = { 'platbase' : '${CMAKE_INSTALL_PREFIX}' }  )"
+    RESULT_VARIABLE PYTHON_SYSCONFIG_RESULT
+    OUTPUT_VARIABLE PYTHON_SYSCONFIG_OUTPUT
+    ERROR_VARIABLE PYTHON_SYSCONFIG_ERROR
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    ERROR_STRIP_TRAILING_WHITESPACE
+  )
+  IF (PYTHON_SYSCONFIG_RESULT)
+    MESSAGE(SEND_ERROR "Could not determine Python site-package directory:\n${PYTHON_SYSCONFIG_ERROR}")
+  ENDIF()
+
+  INSTALL(TARGETS gnucash_core_c
+    LIBRARY DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
+    ARCHIVE DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
+  )
+  INSTALL(FILES __init__.py function_class.py gnucash_business.py gnucash_core.py
+    ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py
+    DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
+  )
+
+ENDIF()
diff --git a/src/optional/python-bindings/gnucash_core.i b/src/optional/python-bindings/gnucash_core.i
index 24ac68b..dc33bb9 100644
--- a/src/optional/python-bindings/gnucash_core.i
+++ b/src/optional/python-bindings/gnucash_core.i
@@ -62,6 +62,7 @@
 #include "Split.h"
 #include "Account.h"
 #include "gnc-commodity.h"
+#include "gnc-environment.h"
 #include "gnc-lot.h"
 #include "gnc-numeric.h"
 #include "gncCustomer.h"
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
new file mode 100644
index 0000000..727a377
--- /dev/null
+++ b/src/python/CMakeLists.txt
@@ -0,0 +1,17 @@
+# handle pycons directory
+
+SET(gncmod_python_SOURCES gncmod-python.c)
+
+ADD_LIBRARY(gncmod-python ${gncmod_python_SOURCES})
+TARGET_LINK_LIBRARIES(gncmod-python gnc-module gnc-core-utils-python gncmod-app-utils-python
+   ${PYTHON_LIBRARIES} ${GLIB_LIBS})   # ${PYTHON_EXTRA_LIBS}
+TARGET_INCLUDE_DIRECTORIES(gncmod-python
+  PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/core_utils ${CMAKE_SOURCE_DIR}/gnc-module ${PYTHON_INCLUDE_DIR})
+TARGET_COMPILE_OPTIONS(gncmod-python PRIVATE -DG_LOG_DOMAIN=\"gnc.python\")
+INSTALL(TARGETS gncmod-python
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin
+)
+
+INSTALL(FILES init.py DESTINATION share/python)
\ No newline at end of file
diff --git a/src/report/report-gnome/CMakeLists.txt b/src/report/report-gnome/CMakeLists.txt
index 9678a3d..c9abbeb 100644
--- a/src/report/report-gnome/CMakeLists.txt
+++ b/src/report/report-gnome/CMakeLists.txt
@@ -8,8 +8,12 @@ SET (report_gnome_HEADERS
   window-report.h
 )
 
-SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS})
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS})
+ELSE()
+  SET (SWIG_REPORT_GNOME_C swig-report-gnome.c)
+ENDIF()
 
 SET (report_gnome_SOURCES
   ${SWIG_REPORT_GNOME_C}
diff --git a/src/report/report-system/CMakeLists.txt b/src/report/report-system/CMakeLists.txt
index 74bffc7..d064026 100644
--- a/src/report/report-system/CMakeLists.txt
+++ b/src/report/report-system/CMakeLists.txt
@@ -4,8 +4,13 @@ SET (report_system_HEADERS
   gnc-report.h
 )  
 
-SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS})
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS})
+ELSE()
+  SET (SWIG_REPORT_SYSTEM_C swig-report-system.c)
+ENDIF()
+
 
 SET (report_system_SOURCES
   ${SWIG_REPORT_SYSTEM_C}
diff --git a/src/test-core/CMakeLists.txt b/src/test-core/CMakeLists.txt
index cccaa3a..496a147 100644
--- a/src/test-core/CMakeLists.txt
+++ b/src/test-core/CMakeLists.txt
@@ -25,16 +25,28 @@ IF (UNIX)
   TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC)
 ENDIF()
 
-SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c)
-GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C}
-    ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS})
-
+IF (BUILDING_FROM_VCS)
+  SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c)
+  GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C}
+      ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS})
+  SET (SWIG_UNITTEST_SUPPORT_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-python.c)
+  GNC_ADD_SWIG_PYTHON_COMMAND (swig-unittest-support-python ${SWIG_UNITTEST_SUPPORT_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i)
+ELSE()
+  SET (SWIG_UNITTEST_SUPPORT_GUILE_C  swig-unittest-support-guile.c)
+  SET (SWIG_UNITTEST_SUPPORT_PYTHON_C swig-unittest-support-python.c)
+ENDIF()
 
-SET(test_core_guile_SOURCES ${SWIG_UNITTEST_SUPPORT_GUILE_C})
 
-ADD_LIBRARY(test-core-guile ${test_core_guile_SOURCES})
+ADD_LIBRARY(test-core-guile ${SWIG_UNITTEST_SUPPORT_GUILE_C})
 TARGET_LINK_LIBRARIES(test-core-guile test-core ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
 
+IF (WITH_PYTHON)
+  ADD_LIBRARY(unittest_support MODULE ${SWIG_UNITTEST_SUPPORT_PYTHON_C})
+  TARGET_LINK_LIBRARIES(unittest_support test-core ${PYTHON_LIBRARIES})
+  TARGET_INCLUDE_DIRECTORIES(unittest_support PRIVATE ${PYTHON_INCLUDE_DIRS})
+  SET_TARGET_PROPERTIES(unittest_support PROPERTIES PREFIX "_")
+ENDIF()
+
 SET(test_core_SCHEME unittest-support.scm)
 
 SET(GUILE_OUTPUT_DIR   gnucash)



Summary of changes:
 CMakeLists.txt                              |  39 ++++++++++-
 packaging/CMakeLists.txt                    |   2 +
 src/CMakeLists.txt                          |   5 ++
 src/app-utils/CMakeLists.txt                |  77 +++++++++++++--------
 src/cmake_modules/GncAddSwigCommand.cmake   |  16 ++++-
 src/core-utils/CMakeLists.txt               |  66 +++++++++++++-----
 src/doc/design/CMakeLists.txt               |  38 ++++++++++
 src/engine/CMakeLists.txt                   |  10 ++-
 src/gnc-module/CMakeLists.txt               |  10 ++-
 src/gnc-module/test/mod-bar/CMakeLists.txt  |   8 ++-
 src/gnc-module/test/mod-baz/CMakeLists.txt  |   8 ++-
 src/gnc-module/test/mod-foo/CMakeLists.txt  |   8 ++-
 src/gnome-utils/CMakeLists.txt              |   8 ++-
 src/gnome/CMakeLists.txt                    |   8 ++-
 src/gnome/dialog-lot-viewer.c               |   2 +-
 src/html/CMakeLists.txt                     |   8 ++-
 src/optional/python-bindings/CMakeLists.txt | 103 ++++++++++++++++++++++++++++
 src/optional/python-bindings/gnucash_core.i |   1 +
 src/python/CMakeLists.txt                   |  17 +++++
 src/report/report-gnome/CMakeLists.txt      |   8 ++-
 src/report/report-system/CMakeLists.txt     |   9 ++-
 src/test-core/CMakeLists.txt                |  24 +++++--
 22 files changed, 396 insertions(+), 79 deletions(-)
 create mode 100644 packaging/CMakeLists.txt
 create mode 100644 src/doc/design/CMakeLists.txt
 create mode 100644 src/optional/python-bindings/CMakeLists.txt
 create mode 100644 src/python/CMakeLists.txt



More information about the gnucash-changes mailing list