gnucash master: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Thu Dec 10 12:38:36 EST 2015


Updated	 via  https://github.com/Gnucash/gnucash/commit/8870f0ec (commit)
	 via  https://github.com/Gnucash/gnucash/commit/34c314aa (commit)
	from  https://github.com/Gnucash/gnucash/commit/d4af95d6 (commit)



commit 8870f0ece6354597f24a811a9bd82f89aa69c07d
Merge: d4af95d 34c314a
Author: John Ralls <jralls at ceridwen.us>
Date:   Thu Dec 10 09:38:05 2015 -0800

    Merge branch 'cmake'


commit 34c314aa4895c92267bd472d0b98c5ba5de0cc17
Author: Rob Gowin <robgowin at gmail.com>
Date:   Mon Dec 7 11:17:08 2015 -0600

    Add ability to build GnuCash with CMake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6cb37e4..7ce3faa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,48 +3,156 @@
 # This is very EXPERIMENTAL! We will see how far this project will
 # get.
 
-CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
-PROJECT (cutecash)
-
-# Version number of cutecash
-SET (CUTECASH_VERSION_MAJOR "0")
-SET (CUTECASH_VERSION_MINOR "1")
-SET (CUTECASH_VERSION_PATCH "0")
+IF (WIN32)
+  CMAKE_MINIMUM_REQUIRED (VERSION 3.3.2)
+ELSE()
+  CMAKE_MINIMUM_REQUIRED (VERSION 3.1)
+ENDIF()
+
+PROJECT (Gnucash)
+
+# Version number of gnucash
+SET (GNUCASH_MAJOR_VERSION 2)
+SET (GNUCASH_MINOR_VERSION 6)
+SET (GNUCASH_MICRO_VERSION 99)
+SET (GNUCASH_NANO_VERSION 0)
+SET (VERSION "${GNUCASH_MAJOR_VERSION}.${GNUCASH_MINOR_VERSION}.${GNUCASH_MICRO_VERSION}")
+SET (GNUCASH_LATEST_STABLE_SERIES 2.6)
+
+SET (PACKAGE gnucash)
+SET (PACKAGE_NAME GnuCash)
+SET (PACKAGE_VERSION 2.6.99)
+SET (PACKAGE_BUGREPORT gnucash-devel at gnucash.org)
+SET (PACKAGE_TARNAME ${PACKAGE})
+SET (PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
+SET (PACKAGE_URL "")
 
 # Change this in development versions when changing anything that
 # affects stored data structures. Reset to zero when bumping version.
-SET (CUTECASH_VERSION_NANO "0")
+
 SET (GNUCASH_RESAVE_VERSION "19920")
 
+SET(GETTEXT_PACKAGE "gnucash")
+
 # Extra cmake macros
 SET (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/src/cmake_modules;${CMAKE_MODULE_PATH}")
 INCLUDE (MacroAppendForeach)
 INCLUDE (MacroAddSourceFileCompileFlags)
 INCLUDE (GncAddSwigCommand)
 INCLUDE (CheckIncludeFiles)
+INCLUDE (GncAddSchemeTargets)
+INCLUDE (GncConfigure)
+INCLUDE (GncAddGSchemaTargets)
 
 # ############################################################
+# These options are settable from the CMake command line. For example, to disable
+# SQL, put -D WITH_SQL=OFF on the command line.
+
+OPTION (WITH_SQL "Build this project with SQL (libdbi) support" ON)
+OPTION (WITH_AQBANKING "Build this project with aqbanking (online banking) support" ON )
+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 (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)
+OPTION (DISABLE_NLS "do not use Native Language Support" OFF)
+OPTION (DISABLE_DEPRECATED_GLIB "don't use deprecated glib funcions" OFF)
+OPTION (DISABLE_DEPRECATED_GTK "don't use deprectacted gtk, gdk or gdk-pixbuf functions" OFF)
+OPTION (DISABLE_DEPRECATED_GNOME "don't use deprecated gnome functions" OFF)
+OPTION (GNC_BUILD_AS_INSTALL "Make build directory structure mirror install" ON)
+# ############################################################
 
-OPTION (WITH_SQL "Build this project with SQL (libdbi) support" OFF)
-OPTION (WITH_AQBANKING "Build this project with aqbanking (online banking) support" OFF)
+# These are also settable from the command line in a similar way.
 
-# ############################################################
+SET(BINDIR ${CMAKE_INSTALL_PREFIX}/bin CACHE STRING "user executables")
+SET(SYSCONFDIR ${CMAKE_INSTALL_PREFIX}/etc CACHE STRING "read-only single-machine data")
+SET(DATAROOTDIR ${CMAKE_INSTALL_PREFIX}/share CACHE STRING "read-only arch.-independent data root")
+SET(DATADIR ${DATAROOTDIR} CACHE STRING "read-only architecture-independent data")
+SET(LIBDIR ${CMAKE_INSTALL_PREFIX}/lib CACHE STRING "object code libraries")
+SET(LOCALEDIR ${DATAROOTDIR}/locale CACHE STRING "locale-dependent data")
+SET(GNC_HELPDIR ${DATADIR} CACHE STRING "where to store help files")
+SET(DATADIRNAME share)
+SET(GNC_SYSTEM_XDG_DATA_DIRS /usr/local/share /usr/share)
+SET(GNC_DBD_DIR ${CMAKE_PREFIX_PATH}/lib/dbd CACHE PATH "specify location of libdbi drivers")
+SET(PKGLIBDIR ${CMAKE_INSTALL_PREFIX}/lib/gnucash)
+
+IF(GNC_BUILD_AS_INSTALL)
+  SET(DATADIR_BUILD    ${CMAKE_BINARY_DIR}/${DATADIRNAME})
+  SET(LIBDIR_BUILD     ${CMAKE_BINARY_DIR}/lib)
+  SET(SYSCONFDIR_BUILD ${CMAKE_BINARY_DIR}/etc)
+  SET(BINDIR_BUILD     ${CMAKE_BINARY_DIR}/bin)
+
+ENDIF()
 
-# Find pkg-config
-FIND_PACKAGE (PkgConfig REQUIRED)
+
+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
+  # should be provided as CMAKE_PREFIX_PATH on the CMake command line:
+  #      cmake -D CMAKE_PREFIX_PATH=c/gcdev -G "MSYS Makefiles" path/to/gnucash/sources
+  #
+
+  SET(CMAKE_FRAMEWORK_PATH_TMP ${CMAKE_PREFIX_PATH})
+  SET(DEV_SUBDIRS aqbanking gnome goffice guile gwenhywfar libgsf libofx libsoup libxslt webkit)
+  FOREACH(subdir ${DEV_SUBDIRS})
+    LIST(APPEND CMAKE_FRAMEWORK_PATH_TMP ${CMAKE_PREFIX_PATH}/${subdir})
+  ENDFOREACH()
+  # Setting CMAKE_FRAMEWORK_PATH, which is intended for OS X, is a terrible hack here. But I don't
+  # want to mess with CMAKE_PREFIX_PATH.
+  SET(CMAKE_FRAMEWORK_PATH "${CMAKE_FRAMEWORK_PATH_TMP}")
+  SET(PKG_CONFIG_EXECUTABLE ${CMAKE_PREFIX_PATH}/gnome/bin/pkg-config.exe)
+  SET(SWIG_EXECUTABLE ${CMAKE_PREFIX_PATH}/swig/swig.exe)
+  SET(BOOST_ROOT ${CMAKE_PREFIX_PATH}/boost)
+  SET(GIT_EXECUTABLE ${CMAKE_PREFIX_PATH}/git-1.9.4/bin/git)
+  SET(REGEX_INCLUDE_PATH ${CMAKE_PREFIX_PATH}/regex/include)
+  SET(REGEX_LDFLAGS "-L${CMAKE_PREFIX_PATH}/regex/lib -lregex")
+  SET(LIBXSLT_INCLUDE_DIR ${CMAKE_PREFIX_PATH}/libxslt/include)
+  SET(LIBXSLT_XSLTPROC_EXECUTABLE ${CMAKE_PREFIX_PATH}/libxslt/bin/xsltproc)
+  # I have not yet debugged the intltool-merge file generation process on Windows.
+  SET(NO_INTLTOOL TRUE)
+ENDIF(WIN32)
+
+IF (APPLE)
+  SET (CMAKE_OSX_ARCHITECTURES "i386")
+  ADD_DEFINITIONS(-arch i386)
+  #SET(CMAKE_OSX_ARCHITECTURES "x86_64")
+  # For PPC build, uncomment these lines (untested):
+  #SET (CMAKE_OSX_ARCHITECTURES "i386;ppc")
+  #ADD_DEFINITIONS(-arch i386 -arch ppc
+  #SET (AC_APPLE_UNIVERSAL_BUILD 1)
+ENDIF (APPLE)
+
+FIND_PACKAGE(PkgConfig REQUIRED)
+
+# The default FindPkgConfig.make code has a bug in how the setting of PKG_CONFIG_PATH is handled.
+# The src/cmake_modules/GncFindPkgConfig.cmake file overrides a couple of macros in FindPkgConfig to fix.
+
+INCLUDE (GncFindPkgConfig)
 
 IF (NOT PKG_CONFIG_FOUND)
    MESSAGE (SEND_ERROR "pkg-config not found, but is required")
 ENDIF (NOT PKG_CONFIG_FOUND)
 
 # glib et al.
-PKG_CHECK_MODULES (GLIB2 glib-2.0>=2.20)
-PKG_CHECK_MODULES (GCONF2 gconf-2.0>=2.22)
-PKG_CHECK_MODULES (GOBJECT gobject-2.0>=2.20)
-PKG_CHECK_MODULES (GMODULE gmodule-2.0>=2.20)
-PKG_CHECK_MODULES (GTHREAD gthread-2.0>=2.20)
-PKG_CHECK_MODULES (GLIBMM glibmm-2.4>=2.24)
-PKG_CHECK_MODULES (LIBXML2 libxml-2.0>=2.7.0)
+GNC_PKG_CHECK_MODULES (GLIB2 REQUIRED glib-2.0>=2.20)
+GNC_PKG_CHECK_MODULES (GOBJECT REQUIRED gobject-2.0>=2.20)
+GNC_PKG_CHECK_MODULES (GMODULE REQUIRED gmodule-2.0>=2.20)
+GNC_PKG_CHECK_MODULES (GTHREAD REQUIRED gthread-2.0>=2.20)
+
+GNC_PKG_CHECK_MODULES (LIBXML2 REQUIRED libxml-2.0>=2.7.0)
+GNC_PKG_CHECK_MODULES (GNOMECANVAS REQUIRED libgnomecanvas-2.0)
+GNC_PKG_CHECK_MODULES (LIBXSLT REQUIRED libxslt)
+GNC_PKG_CHECK_MODULES (WEBKIT REQUIRED webkit-1.0>=1.2)
+IF (WITH_GNUCASH)
+  GNC_PKG_CHECK_MODULES (GTK2 REQUIRED gtk+-2.0>=2.24.0)
+  GNC_PKG_CHECK_MODULES (GOFFICE REQUIRED libgoffice-0.8>=0.8.17)
+ENDIF (WITH_GNUCASH)
+
+GNC_PKG_CHECK_MODULES (ZLIB REQUIRED zlib)
+IF (WITH_CUTECASH)
+  GNC_PKG_CHECK_MODULES (GLIBMM REQUIRED glibmm-2.4>=2.24)
+ENDIF(WITH_CUTECASH)
 
 IF (MSVC)
   MESSAGE (STATUS "Hint: To create the import libraries for the gnome DLLs (e.g. gconf-2.lib), use the dlltool as follows: pexports bin/libgconf-2-4.dll > lib/libgconf-2.def ; dlltool -d lib/libgconf-2.def -D bin/libgconf-2-4.dll -l lib/gconf-2.lib")
@@ -54,23 +162,41 @@ IF (MSVC)
   ADD_DEFINITIONS ( -DNOMINMAX )
 ENDIF (MSVC)
 
-## Libxml2
-#FIND_PACKAGE (LibXml2 REQUIRED)
-FIND_PACKAGE (ZLIB REQUIRED)
-
-IF (NOT GLIB2_FOUND)
-   MESSAGE (SEND_ERROR "Glib2 not found, but is required")
-ENDIF (NOT GLIB2_FOUND)
-
 FIND_PATH (LIBINTL_INCLUDE_PATH NAMES libintl.h
 		  PATHS /usr/include /opt/gnome/include)
 FIND_LIBRARY (LIBINTL_LIBRARY NAMES intl)
+
+FIND_PATH (LTDL_INCLUDE_PATH NAMES ltdl.h PATHS /usr/include)
+
+IF(NOT LTDL_INCLUDE_PATH-NOTFOUND)
+  SET(HAVE_LTDL_H 1)
+ENDIF()
+
+
+
+FIND_PROGRAM(INTLTOOL_MERGE NAMES intltool-merge HINTS ${CMAKE_PREFIX_PATH}/gnome/bin)
+FIND_PROGRAM(GLIB_COMPILE_SCHEMAS glib-compile-schemas HINTS ${CMAKE_PREFIX_PATH}/gnome/bin)
+FIND_PROGRAM(MSGFMT msgfmt)
+IF(NOT INTLTOOL_MERGE)
+  MESSAGE(SEND_ERROR "Can't find intltool-merge program. Please set INTLTOOL_MERGE.")
+ENDIF(NOT INTLTOOL_MERGE)
+
+IF (NOT GLIB_COMPILE_SCHEMAS)
+  MESSAGE(SEND_ERROR "Can't find glib-compile-schemas program. Please set GLIB_COMPILE_SCHEMAS.")
+ENDIF(NOT GLIB_COMPILE_SCHEMAS)
+
+IF (NOT MSGFMT)
+  MESSAGE(SEND_ERROR "Can't find msgfmt program. Please set MSGFMT.")
+ENDIF(NOT MSGFMT)
+
 FIND_PATH (REGEX_INCLUDE_PATH NAMES regex.h
 		  PATHS /usr/include /opt/gnome/include)
 FIND_LIBRARY (REGEX_LIBRARY NAMES regex)
 IF (WIN32)
   FIND_PATH (HTMLHELP_INCLUDE_PATH NAMES htmlhelp.h
-             PATHS /usr/include)
+             PATHS /usr/include
+             HINTS ${CMAKE_PREFIX_PATH}/hh/include)
+  FIND_LIBRARY (HTMLHELP_LIBRARY htmlhelp HINTS ${CMAKE_PREFIX_PATH}/hh/lib)
 ENDIF (WIN32)
 
 # ############################################################
@@ -79,49 +205,102 @@ ENDIF (WIN32)
 FIND_PACKAGE (SWIG REQUIRED)
 INCLUDE (${SWIG_USE_FILE})
 
+# Find Guile and determine which version we are using.
+# First look for guile-2.0. If not found, try to locate guile-1.8
+
 # guile library and include dir
-PKG_CHECK_MODULES (GUILE guile-2.0>=2.0.9)
-ADD_DEFINITIONS (-DHAVE_GUILE18)
-# We also need to look up the executable
-FIND_PROGRAM (GUILE_EXECUTABLE guile)
-
-IF (NOT GUILE_FOUND)
-  MESSAGE (SEND_ERROR "Guile was not found, but is required. Please set PKG_CONFIG_PATH so that guile-2.0.pc is found.")
-ENDIF (NOT GUILE_FOUND)
-IF (NOT GUILE_EXECUTABLE)
-  MESSAGe (SEND_ERROR "The guile executable was not found, but is required. Please set GUILE_EXECUTABLE.")
-ENDIF (NOT GUILE_EXECUTABLE)
+GNC_PKG_CHECK_MODULES (GUILE2 guile-2.0>=2.0.9 QUIET)
+IF (GUILE2_FOUND) # found guile-2.0
+  ADD_DEFINITIONS (-DHAVE_GUILE20)
+  SET(HAVE_GUILE2 TRUE)
+  SET(GUILE_EFFECTIVE_VERSION 2.0)
+  # We also need to look up the executable
+  FIND_PROGRAM (GUILE_EXECUTABLE guile)
+  FIND_PROGRAM (GUILD_EXECUTABLE guild)
+
+  SET(GUILE_INCLUDE_DIRS ${GUILE2_INCLUDE_DIRS})
+  SET(GUILE_LDFLAGS ${GUILE2_LDFLAGS})
+
+  IF (NOT GUILE_EXECUTABLE)
+    MESSAGE (SEND_ERROR "The guile executable was not found, but is required. Please set GUILE_EXECUTABLE.")
+  ENDIF (NOT GUILE_EXECUTABLE)
+  IF (NOT GUILD_EXECUTABLE)
+    MESSAGE (SEND_ERROR "The guild executable was not found, but is required. Please set GUILD_EXECUTABLE.")
+  ENDIF (NOT GUILD_EXECUTABLE)
+  MESSAGE(STATUS "Using guile-2.0.x")
+ELSE()
+  # look for guile 1.8
+  GNC_PKG_CHECK_MODULES (GUILE1 guile-1.8>=1.8.8 QUIET)
+  IF (NOT GUILE1_FOUND)
+    MESSAGE (SEND_ERROR "Neither guile 1.8 nor guile 2.0 where find. Please set PKG_CONFIG_PATH one of these is found.")
+  ENDIF(NOT GUILE1_FOUND)
+
+  SET(GUILE_INCLUDE_DIRS ${GUILE1_INCLUDE_DIRS})
+  SET(GUILE_LDFLAGS ${GUILE1_LDFLAGS})
+  SET(HAVE_GUILE1 TRUE)
+  SET(GUILE_EFFECTIVE_VERSION 1.8)
+  MESSAGE(STATUS "Using guile-1.8.x")
+ENDIF()
 
-#BOOST
-SET (Boost_USE_STATIC_LIBS OFF)
-SET (Boost_USE_MULTITHREADED ON)
-SET (Boost_USE_STATIC_RUNTIME OFF)
-SET (Boost_FIND_QUIETLY ON)
-FIND_PACKAGE (Boost 1.50.0 REQUIRED COMPONENTS chrono date_time filesystem log program_options regex signals system) # test)
-# boost-test currently can't be found by FindBoost.cmake because the
-# shared library might be named libboost_unit_test_framework.so
+# Qt
+IF (WITH_CUTECASH)
+  SET (QT_MIN_VERSION "4.5.0")
+  FIND_PACKAGE (Qt4 REQUIRED) # find and setup Qt4 for this project
+ENDIF (WITH_CUTECASH)
 
-IF (Boost_FOUND)
-    include_directories(${Boost_INCLUDE_DIRS})
-#    add_executable(progname file1.cxx file2.cxx)
-#    target_link_libraries(progname ${Boost_LIBRARIES})
-ELSE (Boost_FOUND)
-    MESSAGE (SEND_ERROR "Boost 1.50.0 or later is not installed, and is required. Please install it and ensure that the following libraries are built: chrono, date_time, filesystem, log, program_options, regex, signals, system, and test.")
-ENDIF (Boost_FOUND)
+# ############################################################
+IF (WITH_AQBANKING)
+  GNC_PKG_CHECK_MODULES (GWENHYWFAR REQUIRED gwenhywfar)
+  GNC_PKG_CHECK_MODULES (AQBANKING REQUIRED aqbanking)
+  IF(WITH_GNUCASH)
+    GNC_PKG_CHECK_MODULES (GWENGUI_GTK2 REQUIRED gwengui-gtk2)
+    GNC_PKG_CHECK_MODULES (KTOBLZCHECK ktoblzcheck)
+    IF(KTOBLZCHECK_FOUND)
+      SET(HAVE_KTOBLZCHECK_H 1)
+    ENDIF(KTOBLZCHECK_FOUND)
+  ENDIF(WITH_GNUCASH)
+ENDIF (WITH_AQBANKING)
 
-# Also, set the C++ version to c++11
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+IF (WITH_OFX)
+  GNC_PKG_CHECK_MODULES (LIBOFX REQUIRED libofx)
+ENDIF(WITH_OFX)
+# ############################################################
+
+IF(APPLE)
+  EXECUTE_PROCESS(
+      COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=target gdk-2.0
+      OUTPUT_VARIABLE TARGET_RESULT
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
+  IF(TARGET_RESULT STREQUAL "quartz")
+    SET(GNC_PLATFORM_COCOA 1)
+    SET(GDK_QUARTZ 1)
+    GNC_PKG_CHECK_MODULES(GTK_MAC gtk-mac-integration-gtk2)
+    IF (GTK_MAC_FOUND)
+      SET(MAC_INTEGRATION 1)
+      FIND_LIBRARY(COCOA_LIBRARY Cocoa)
+      FIND_LIBRARY(SECURITY_LIBRARY Security)
+      FIND_LIBRARY(CARBON_LIBRARY Carbon)
+      SET(OSX_EXTRA_COMPILE_FLAGS -xobjective-c)
+      SET(OSX_EXTRA_LIBRARIES objc ${COCOA_LIBRARY} ${SECURITY_LIBRARY} ${CARBON_LIBRARY})
+    ENDIF(GTK_MAC_FOUND)
+  ENDIF()
+ENDIF(APPLE)
 
 # ############################################################
 
 # xsltproc
-FIND_PROGRAM (XSLTPROC xsltproc)
+FIND_PACKAGE(LibXslt)
 
+IF (NOT LIBXSLT_FOUND)
+   MESSAGE(SEND_ERROR "libxslt library not found.")
+ENDIF(NOT LIBXSLT_FOUND)
 # ############################################################
 
 # libdbi
-FIND_PATH (LIBDBI_INCLUDE_PATH dbi/dbi.h)
-FIND_LIBRARY (LIBDBI_LIBRARY dbi)
+FIND_PATH (LIBDBI_INCLUDE_PATH dbi/dbi.h HINTS ${CMAKE_PREFIX_PATH}/libdbi/include)
+FIND_LIBRARY (LIBDBI_LIBRARY dbi HINTS ${CMAKE_PREFIX_PATH}/libdbi/lib)
+FIND_PATH (LIBDBI_DRIVERS_DIR dbd HINTS ${CMAKE_PREFIX_PATH}/lib ${CMAKE_PREFIX_PATH}/libdbi-drivers/lib)
 IF (WITH_SQL)
   IF (NOT LIBDBI_INCLUDE_PATH)
     MESSAGE (SEND_ERROR "Include file <dbi/dbi.h> was not found - did you install libdbi0-dev or libdbi-dev?")
@@ -129,40 +308,199 @@ IF (WITH_SQL)
   IF (NOT LIBDBI_LIBRARY)
     MESSAGE (SEND_ERROR "Library libdbi was not found")
   ENDIF (NOT LIBDBI_LIBRARY)
+  SET(HAVE_DBI_DBI_H 1)
 ENDIF (WITH_SQL)
 
 # ############################################################
 
-# Qt
-SET (QT_MIN_VERSION "4.5.0")
-FIND_PACKAGE (Qt4 REQUIRED) # find and setup Qt4 for this project
+FIND_PACKAGE(Perl)
 
-# ############################################################
-IF (WITH_AQBANKING)
-  PKG_CHECK_MODULES (GWENHYWFAR REQUIRED gwenhywfar)
-  PKG_CHECK_MODULES (AQBANKING REQUIRED aqbanking)
-ENDIF (WITH_AQBANKING)
+if (NOT PERL_FOUND)
+  MESSAGE(SEND_ERROR "Perl executable not found. Please set PERL_EXECUTABLE.")
+ENDIF(NOT PERL_FOUND)
+
+FIND_PROGRAM(POD2MAN_EXECUTABLE pod2man)
+
+#BOOST
+IF (APPLE)
+  # I suppose I would rather use the shared Boost libraries here, but the Boost install procedure
+  # does not set RPATH for it's shared library correctly. It uses a 'naked' RPATH, which requires
+  # that DYLD_FALLBACK_LIBRARY_PATH be set. There is supposedly a dll-path option so set RPATH, but
+  # I can't get it to work (http://www.boost.org/build/doc/html/bbv2/faq/dll-path.html) and neither
+  # can some other random person on the internet:
+  # http://stackoverflow.com/questions/33667795/dll-path-has-no-effect-when-building-boost
+  # Using static libs simplifies things.
+  SET (Boost_USE_STATIC_LIBS ON)
+  SET (Boost_USE_STATIC_RUNTIME ON)
+ELSE()
+  SET (Boost_USE_STATIC_LIBS OFF)
+  SET (Boost_USE_STATIC_RUNTIME OFF)
+ENDIF()
+
+SET (Boost_USE_MULTITHREADED ON)
+SET (Boost_FIND_QUIETLY ON)
+
+FIND_PACKAGE (Boost 1.54.0 REQUIRED COMPONENTS date_time)
+
+IF (Boost_FOUND)
+  include_directories(${Boost_INCLUDE_DIRS})
+  SET(HAVE_BOOST 1)
+ELSE (Boost_FOUND)
+  MESSAGE (SEND_ERROR "Boost 1.54.0 or later is not installed, and is required. Please install it and ensure that the following libraries are built: chrono, date_time, filesystem, log, program_options, regex, signals, system, and test.")
+ENDIF (Boost_FOUND)
 
-# ############################################################
 
 # Compiler flags
+
+IF (APPLE)
+  ADD_DEFINITIONS(-Wno-unknown-attributes -Wno-typedef-redefinition)
+  #  SET (CMAKE_OSX_ARCHITECTURES "i386")
+ENDIF (APPLE)
+
+
+# Also, set the C++ version to c++11
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")  # FIXME: should be -std=c++11
+
+
 IF (UNIX)
   SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wdeclaration-after-statement -Wno-pointer-sign -D_FORTIFY_SOURCE=2 -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations  -Wno-unused")
   SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-declarations -std=gnu99 -O2")
 ENDIF (UNIX)
 IF (MINGW)
-  SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wdeclaration-after-statement -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations  -Wno-unused")
+  SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wdeclaration-after-statement -Wno-pointer-sign -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations  -Wno-unused -std=gnu99")
 ENDIF (MINGW)
-
+IF (APPLE)
+  SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedef")
+ENDIF(APPLE)
+
+IF (APPLE AND WITH_GNUCASH)
+  SET(CMAKE_MACOSX_RPATH ON)
+ENDIF (APPLE AND WITH_GNUCASH)
+
+IF (UNIX AND NOT APPLE)
+  SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib/gnucash")
+ENDIF()    
+
+SET(BUILD_SHARED_LIBS ON)
+
+IF (GNC_BUILD_AS_INSTALL)
+  # Most libraries are installed to lib/gnucash, so set that as the default.
+  # For the handful that are installed to lib, we override the properies below
+  # (after the targets have been read in).
+
+
+  SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY         ${CMAKE_BINARY_DIR}/lib/gnucash)
+  IF (XCODE_VERSION)
+    # FIXME: These settings break the ability to manipulate different configurations (Debug,
+    # FIXME: Release, etc.) in Xcode. We'll need to change the module loading C code if
+    # we want to support multi config.
+    SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG   ${CMAKE_BINARY_DIR}/lib/gnucash)
+    SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib/gnucash)
+  ENDIF()
+  # For binarines
+  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY         ${CMAKE_BINARY_DIR}/bin)
+  IF (XCODE_VERSION)
+    SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG   ${CMAKE_BINARY_DIR}/bin)
+    SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
+  ENDIF()
+ENDIF()
 # ############################################################
 
 # The subdirectories
+ADD_SUBDIRECTORY (accounts)
+ADD_SUBDIRECTORY (checks)
+ADD_SUBDIRECTORY (doc)
+ADD_SUBDIRECTORY (po)
 ADD_SUBDIRECTORY (src)
 
+# This cmake subdir must be the last add_subdirectory() call because
+# it contains post-install actions to execute.
+ADD_SUBDIRECTORY(cmake)
+
+IF (GNC_BUILD_AS_INSTALL)
+  SET_TARGET_PROPERTIES(gnc-qof gnc-core-utils gnc-module gnc-backend-sql gnc-backend-xml-utils
+    gnc-business-ledger gnc-gnome PROPERTIES
+    LIBRARY_OUTPUT_DIRECTORY         ${CMAKE_BINARY_DIR}/lib
+    IF (XCODE_VERSION)
+      LIBRARY_OUTPUT_DIRECTORY_DEBUG   ${CMAKE_BINARY_DIR}/lib
+      LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib
+    ENDIF()
+
+    RUNTIME_OUTPUT_DIRECTORY         ${CMAKE_BINARY_DIR}/bin
+    IF (XCODE_VERSION)
+      RUNTIME_OUTPUT_DIRECTORY_DEBUG   ${CMAKE_BINARY_DIR}/bin
+      RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin
+    ENDIF()
+  )
+  IF (WIN32)
+    SET_TARGET_PROPERTIES(gncmod-backend-xml gncmod-stylesheets gncmod-utility-reports PROPERTIES
+      LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
+    )
+  ENDIF()
+ENDIF()
+# Install DOC files from top level directory
+
+FILE(WRITE COPYING
+"This is a placeholder for the COPYING file as generated by automake.
+If and when CMake becomes the default build system, we will need to
+put COPYING under version control."
+)
+
+FILE(WRITE INSTALL
+"This is a placeholder for the INSTALL file as generated by automake.
+If and when CMake becomes the default build system, we will need to
+put INSTALL under version control."
+)
+
+SET(gnucash_DOCS
+    AUTHORS
+    ChangeLog
+    ChangeLog.2003
+    ChangeLog.2004
+    ChangeLog.2005
+    ChangeLog.2006
+    ChangeLog.2007
+    ChangeLog.2008
+    ChangeLog.2009
+    ChangeLog.2010
+    ChangeLog.2011
+    ChangeLog.2012
+    ChangeLog.2013
+    ChangeLog.2014
+    DOCUMENTERS
+    HACKING
+    LICENSE
+    NEWS
+    README.dependencies
+    COPYING
+    INSTALL
+)
+
+INSTALL(FILES ${gnucash_DOCS} DESTINATION share/doc/gnucash)
+
+#For windows, copy in some DLLs from Mingw
 
+IF (WIN32)
+  SET(MINGW_DLLS ${CMAKE_PREFIX_PATH}/mingw/bin/libstdc++-6.dll ${CMAKE_PREFIX_PATH}/mingw/bin/libgcc_s_dw2-1.dll)
+  INSTALL(PROGRAMS ${MINGW_DLLS} DESTINATION bin)
+  IF (GNC_BUILD_AS_INSTALL)
+    FILE(COPY ${MINGW_DLLS} DESTINATION ${BINDIR_BUILD}
+      # Do permissions matter for windows?
+      FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+    )
+  ENDIF()
+
+
+ENDIF()
 # ############################################################
 # Package creation rules
 
+IF (WITH_CUTECASH)
+SET (CUTECASH_VERSION_MAJOR "0")
+SET (CUTECASH_VERSION_MINOR "1")
+SET (CUTECASH_VERSION_PATCH "0")
+SET (CUTECASH_VERSION_NANO "0")
+
 SET (CPACK_PACKAGE_NAME "Cutecash")
 SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Cutecash Free Finance Software")
 SET (CPACK_PACKAGE_VERSION_MAJOR ${CUTECASH_VERSION_MAJOR})
@@ -172,7 +510,7 @@ SET (CPACK_PACKAGE_VENDOR "Christian Stimming")
 SET (CPACK_SOURCE_IGNORE_FILES "/\\\\.svn/;/\\\\.git/;.*~;build.*;html;Debug;Release")
 SET (CPACK_STRIP_FILES "bin/cutecash")
 #SET (CPACK_PACKAGE_EXECUTABLES "bin/carclient")
-
+ENDIF (WITH_CUTECASH)
 IF(UNIX)
   SET(CPACK_GENERATOR "TGZ")
 ENDIF(UNIX)
diff --git a/accounts/CMakeLists.txt b/accounts/CMakeLists.txt
new file mode 100644
index 0000000..2899820
--- /dev/null
+++ b/accounts/CMakeLists.txt
@@ -0,0 +1,67 @@
+SET(accounts_SUBDIRS
+  C
+  cs
+  da
+  de_AT
+  de_CH
+  de_DE
+  el_GR
+  en_GB
+  es_ES
+  es_MX
+  fi_FI
+  fr_CA
+  fr_CH
+  fr_FR
+  hu_HU
+  it
+#  ja
+  ko
+  lt
+  lv
+#  nb
+#  nl
+  pl
+  pt_BR
+  pt_PT
+  ru
+  sk
+  sv_AX
+  sv_FI
+  sv_SE
+  tr_TR
+  zh_CN
+  zh_HK
+  zh_TW
+)
+
+
+# Most of the account subdirectories that have acctchrt_full.gnucash-xea do not install it. Don't know why.
+# But these subdirectories do.
+SET(accounts_fullcharts_SUBDIRS ja nb nl)
+
+FOREACH(dir ${accounts_SUBDIRS})
+  INSTALL(DIRECTORY ${dir} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/gnucash/accounts
+                           PATTERN Makefile.* EXCLUDE
+                           PATTERN acctchrt_full.gnucash-xea EXCLUDE
+                           PATTERN README.bas_2012 EXCLUDE)
+  IF (GNC_BUILD_AS_INSTALL)
+    FILE(COPY ${dir} DESTINATION ${DATADIR_BUILD}/gnucash/accounts
+      PATTERN Makefile.* EXCLUDE
+      PATTERN acctchrt_full.gnucash-xea EXCLUDE
+      PATTERN README.bas_2012 EXCLUDE
+    )
+  ENDIF()
+ENDFOREACH(dir)
+
+FOREACH(dir ${accounts_fullcharts_SUBDIRS})
+  INSTALL(DIRECTORY ${dir} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/gnucash/accounts
+      PATTERN Makefile.* EXCLUDE
+      PATTERN README.bas_2012 EXCLUDE)
+  IF (GNC_BUILD_AS_INSTALL)
+    FILE(COPY ${dir} DESTINATION ${DATADIR_BUILD}/gnucash/accounts
+      PATTERN Makefile.* EXCLUDE
+      PATTERN README.bas_2012 EXCLUDE
+    )
+  ENDIF()
+ENDFOREACH(dir)
\ No newline at end of file
diff --git a/checks/CMakeLists.txt b/checks/CMakeLists.txt
new file mode 100644
index 0000000..2663434
--- /dev/null
+++ b/checks/CMakeLists.txt
@@ -0,0 +1,15 @@
+SET(checks_DATA
+  deluxe.chk
+  liberty.chk
+  quicken.chk
+  quicken_wallet.chk
+  voucher.chk
+  quicken_check_21.chk
+  quicken_3part.chk
+)
+
+INSTALL(FILES ${checks_DATA} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/gnucash/checks)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${checks_DATA} DESTINATION ${DATADIR_BUILD}/gnucash/checks)
+ENDIF()
\ No newline at end of file
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
new file mode 100644
index 0000000..7c664c5
--- /dev/null
+++ b/cmake/CMakeLists.txt
@@ -0,0 +1,26 @@
+# Post install actions go here.
+
+INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GLIB_COMPILE_SCHEMAS} ${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas)")
+
+IF (APPLE)
+  INSTALL(CODE "EXECUTE_PROCESS(
+                COMMAND /usr/bin/install_name_tool -add_rpath ${CMAKE_INSTALL_PREFIX}/lib
+                                                   -add_rpath ${CMAKE_INSTALL_PREFIX}/lib/gnucash
+                                                   ${CMAKE_INSTALL_PREFIX}/bin/gnucash)")
+ENDIF(APPLE)
+
+
+IF (GNC_BUILD_AS_INSTALL)
+  SET(schema-targets aqb-gschema business-gnome-gschema csv-exp-gschema csv-imp-gschema
+      generic-import-gschema gnome-gschema gnome-utils-gschema ofx-gschema qif-imp-gschema)
+
+  SET(SCHEMA_DIRECTORY ${DATADIR_BUILD}/glib-2.0/schemas)
+  ADD_CUSTOM_COMMAND(
+    OUTPUT ${SCHEMA_DIRECTORY}/gschemas.compiled
+    COMMAND ${CMAKE_COMMAND} -E env ${GLIB_COMPILE_SCHEMAS} ${SCHEMA_DIRECTORY}
+    DEPENDS ${schema-targets}
+  )
+
+  ADD_CUSTOM_TARGET(compiled-schemas ALL DEPENDS ${SCHEMA_DIRECTORY}/gschemas.compiled)
+
+ENDIF(GNC_BUILD_AS_INSTALL)
\ No newline at end of file
diff --git a/cmake/README_CMAKE.txt b/cmake/README_CMAKE.txt
new file mode 100644
index 0000000..439a048
--- /dev/null
+++ b/cmake/README_CMAKE.txt
@@ -0,0 +1,218 @@
+Using CMake to build GnuCash
+============================
+
+== Intro
+
+As part of his CuteCash work, Christian Stimming added support for
+using http://www.cmake.org[CMake] to build the part of GnuCash that
+went into CuteCash. This work extends the use of CMake to cover all of
+GnuCash proper such that GnuCash itself can be fully compiled with
+CMake.
+
+Some advantages of using CMake:
+
+ * The build time on Windows drops from around an hour to just a few
+   minutes.
+   
+ * CMake supports the generation of build files for several IDEs
+   such as Xcode, Eclipse, KDevelop and others. The open source Qt
+   Creator and the commercial CLion C/C++ IDE from JetBrains can use
+   CMake files natively.
+
+ * The CMake language, though with significant issues, is still
+   easier to maintain than autotools.
+
+This setup also uses the http://www.ninja-build.org[Ninja] build
+system to enable fast and parallel builds on Windows. (On POSIX
+systems [OS X, Linux, FreeBSD, etc.] Ninja does not seem significantly
+faster that using the default Makefile generator to me.)
+
+== Scope
+
+The scope of the current work is to duplicate the `make` and `make
+install` actions as the Autotools system would. Currently, there is no
+support for `make check`, `make dist`, `make distcheck` or similar
+targets. Other limitations include:
+
+  * Not all options available in `./configure` have been ported to
+    this CMake system.
+
+  * Password management is included for OS X, but not
+    tested. Gnome-keyring and libsecret support has not
+    been ported over.
+
+  * The Xcode build only supports the Debug configuration. Others such
+    as Release are not supported yet.
+
+  * Python support has not been ported over.
+
+  * Visual Studio support is out of scope. While CMake supports
+    generating build files for Visual Studio on Windows, it is not
+    likely at this point that either GnuCash or all of its
+    dependencies can be built using the Microsoft compiler tool chain.
+
+== Known Issues
+
+* Sometimes the Tip of the Day is empty. I've got a stray
+  carriage return somewhere.
+
+* Clicking on 'Start AqBanking Wizard' in the AqBanking setup will
+  cause a crash. I have not yet investigated this.
+
+== Using CMake on Linux, OS X,  etc.
+
+=== Prerequisites
+
+The CMake setup does not support building and installing dependencies
+(although it probably could some day). So you need to have the
+dependencies available, most likely by having run the existing
+Autotools build at least once. Various resources on the GnuCash wiki
+will have advice on how to do this.
+
+You will need to have CMake and optionally Ninja installed, either
+from distro package repositories or by hand. You need at least version
+3.1 of CMake.
+
+=== Running CMake
+
+The next step is to invoke CMake to generate the build system. Before
+running CMake, you need to create a build directory:
+
+  $ cd ..   # back to workdir
+  $ mkdir gnucash-build
+  $ cd gnucash-build
+
+Then decide what cmake command line options you will need:
+
+ * If you want to install after building, add
+   `-D CMAKE_INSTALL_PREFIX=/path/to/install`
+
+ * If your dependencies are installed in a non-standard place as is
+   typical for building on OS X, put
+   `-D CMAKE_PREFIX_PATH=/path/to/installed/depends`
+   on the command line.
+
+ * If you want to use the Ninja generator, put `-G Ninja` on the
+   command line.
+
+ * If you want to use the Xcode generator on OS X, put `-G Xcode` on
+   the command line.
+
+ * If you don't specify a generator, Makefiles will be generated.
+
+ * Finally, put the path to your source directory last.
+   Here, that is ../gnucash
+
+ * There are other options available; look in the `OPTIONS` section of
+   the top-level `CMakeLists.txt` file.  For example, you can disable
+   SQL using these options.
+
+Some examples:
+
+ * Build on Linux, don't want to install, use the Makefile generator:
+
+   $ cmake ../gnucash
+
+ * Build on Linux, install to /tmp/gnucash, use Ninja generator:
+
+   $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -G Ninja ../gnucash
+
+ * Build on OS X, install to /tmp/gnucash, use Ninja generator:
+
+   $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -G Ninja ../gnucash
+
+ * The same, but use the Xcode generator:
+
+   $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -G Xcode ../gnucash
+
+=== Building
+
+The Xcode, Ninja and Makefile generators all support parallel builds,
+so decide how many cores you want to use.  Ninja will pick a sensible
+default.
+
+If you chose to configure for installation, you can use the `install`
+target for each generator. The Makefile and Ninja generators also
+support a verbose option if you want to see all of the command lines
+scroll by. Xcodebuild seems to show all the gory details whether you
+want them or not.
+
+For Ninja, use the line below. Note that the executable is called
+`ninja-build` on Fedora. Also, Ninja supports the `NINJA_STATUS`
+environment variable to give status on the build. I like to use
+`NINJA_STATUS="%es [%p/%s/%t] "`.
+
+   $ ninja [-v] [install]
+
+For Makefiles:
+
+   $ make [VERBOSE=1] -j N [install]
+
+For Xcode via the command line (see below to build from within Xcode):
+
+   $ xcodebuild -jobs N [-target=install]
+
+=== Launching GnuCash
+
+Assuming the build completes successfully, in all cases you can run
+directly from the build directory:
+
+   $ bin/gnucash
+
+In you chose to install, you can switch to the install directory and
+do the same.
+
+
+== Using CMake and Ninja on Windows
+
+
+For Windows, follow the instructions at
+https://github.com/Gnucash/gnucash-on-windows to the point where you
+are ready to run install.sh.
+
+Edit custom.sh to add these lines at the bottom:
+
+  WITH_CMAKE=yes
+  WITH_NINJA=yes
+
+Ensure that your custom.sh file contains this line:
+
+  MSYS_DIR=c:\\gcdev\\mingw\\msys\\1.0
+
+Remove or move any existing install at /c/gcdev/gnucash/inst.
+
+Then continue to follow the existing build instructions.
+
+At this writing, generating a distribution with the CMake build
+via dist.sh has not been tested.
+
+
+== Using Xcode on OS X
+
+CMake can generate build files for Xcode such that GnuCash can be
+built, run and debugged from within Xcode.  Follow the instructions
+above to the point where you would use `xcodebuild` to launch the
+build. Instead, launch Xcode by doing:
+
+  $ open Gnucash.xcodeproj
+
+Xcode 7 will pop up a window about Autocreate Schemes. I usually
+choose "Manually Manage Schemes". On the next window, use the "\+"
+symbol to use the "ALL_BUILD" scheme. Then click on OK. If you want to
+be able to run the equivalent of "make install" from within Xcode, use
+the "+" symbol again and choose the "install" scheme.
+
+Back in the Xcode main window, make sure the "ALL_BUILD" scheme is
+selected (next to the stop symbol).  Click on "ALL_BUILD" and
+then "Edit Scheme". On the "Info" tab, choose the executable to be
+"gnucash".
+
+Now use Command-B to build (or Product -> Build) to start the
+build. When it finishes, click on the play symbol (or Product
+-> Run) to verify that you can launch GnuCash from within Xcode. If
+that works, you can now set breakpoints with Xcode and debug away.
+
+To run the install script, click on the "ALL_BUILD" scheme and change
+it to "install". Then press the play button to run the script.
+
+That's it.
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 0000000..6c532c3
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,72 @@
+ADD_SUBDIRECTORY(examples)
+
+SET(doc_DATA
+  README.francais
+  README.german
+  README-de.win32-bin.txt
+  README-fr.win32-bin.txt
+  README-it.win32-bin.txt
+  README-lv.win32-bin.txt
+  README-nl.win32-bin.txt
+  README-zh_CN.win32-bin.txt
+  README-zh_TW.win32-bin.txt
+  README.win32-bin.txt
+  guile-hackers.txt
+  projects.html
+)
+
+INSTALL(FILES ${doc_DATA} DESTINATION share/doc/gnucash)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${doc_DATA} DESTINATION ${DATADIR_BUILD}/doc/gnucash)
+ENDIF()
+
+EXECUTE_PROCESS(
+    COMMAND ${CMAKE_COMMAND} -E  env date +"%B %Y"
+    OUTPUT_VARIABLE DATE
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+# Generate the tip of the day file.
+
+EXECUTE_PROCESS(
+    COMMAND ${CMAKE_C_COMPILER} -E -P -x c -DN_\(x\)=x -o ${CMAKE_CURRENT_BINARY_DIR}/tip_of_the_day.list.tmp ${CMAKE_CURRENT_SOURCE_DIR}/tip_of_the_day.list.in
+)
+
+FILE(STRINGS ${CMAKE_CURRENT_BINARY_DIR}/tip_of_the_day.list.tmp TIP_OF_THE_DAY_LINES)
+
+SET(TOTD_OUTPUT "")
+SET(FIRST_LINE TRUE)
+FOREACH(line ${TIP_OF_THE_DAY_LINES})
+  STRING(REGEX REPLACE "^ *\"" "" line2 "${line}")
+  STRING(REGEX REPLACE "\" *$" "" line3 "${line2}")
+  IF (NOT FIRST_LINE)
+    LIST(APPEND TOTD_OUTPUT "\n\n")
+  ENDIF()
+  SET(FIRST_LINE FALSE)
+  LIST(APPEND TOTD_OUTPUT "${line3}\n")
+ENDFOREACH()
+
+LIST(APPEND TOTD_OUTPUT "\n")
+
+STRING(CONCAT FINAL_TOTD ${TOTD_OUTPUT})
+
+FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/tip_of_the_day.list "${FINAL_TOTD}")
+
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tip_of_the_day.list DESTINATION share/gnucash)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/tip_of_the_day.list
+    DESTINATION ${DATADIR_BUILD}/gnucash)
+ENDIF()
+
+# ---
+
+GNC_CONFIGURE(gnucash.1.in gnucash.1 )
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/gnucash.1 DESTINATION share/man/man1)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/gnucash.1
+    DESTINATION ${DATADIR_BUILD}/gnucash)
+ENDIF()
+
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
new file mode 100644
index 0000000..efd5bd7
--- /dev/null
+++ b/doc/examples/CMakeLists.txt
@@ -0,0 +1,24 @@
+
+
+SET(examples_DATA
+  Money95bank_fr.qif
+  Money95invst_fr.qif
+  Money95mfunds_fr.qif
+  Money95stocks_fr.qif
+  README
+  README_invoice
+  abc-all.qif
+  abc.qif
+  bogus.qif
+  cbb-export.qif
+  currency_tree_xml.gnucash
+  every.qif
+  invoice.csv
+  ms-money.qif
+  quicktest.qif
+  swipe.qif
+  taxreport.gnucash
+  web.qif
+)
+
+INSTALL(FILES ${examples_DATA} DESTINATION share/doc/gnucash)
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644
index 0000000..ba7728f
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,48 @@
+
+
+# Set of available languages.
+SET (TP_LINGUAS az ca cs da eu fa ja nl pt rw sk sr sv tr uk zh_CN)
+# already marked as external at TP:
+SET (GC_LINGUAS ar bg de el en_GB es fi fr gu he hi hu it kn ko lt lv mr nb ne pl pt_BR ro ru ta te ur vi zh_TW)
+# not marked or no TP team:
+SET (NEW_LINGUAS as brx doi es_NI kok kok at latin ks mai mni mni at bengali)
+
+SET (ALL_LINGUAS ${TP_LINGUAS} ${GC_LINGUAS} ${NEW_LINGUAS})
+
+SET (CATALOGS "")
+SET (BUILD_CATALOGS "")
+FOREACH(lingua ${ALL_LINGUAS})
+  SET(_OUTPUT_FILE ${lingua}.gmo)
+  LIST(APPEND CATALOGS ${_OUTPUT_FILE})
+  ADD_CUSTOM_COMMAND(
+      OUTPUT ${_OUTPUT_FILE}
+      COMMAND ${CMAKE_COMMAND} -E env ${MSGFMT} -o ${_OUTPUT_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
+  )
+  IF (GNC_BUILD_AS_INSTALL)
+    SET(_BUILD_FILE_DIR ${DATADIR_BUILD}/locale/${lingua}/LC_MESSAGES)
+    MAKE_DIRECTORY(${_BUILD_FILE_DIR})
+    SET(_BUILD_FILE ${_BUILD_FILE_DIR}/gnucash.gmo)
+    LIST(APPEND BUILD_CATALOGS ${_BUILD_FILE})
+    #ADD_CUSTOM_COMMAND(
+    #  OUTPUT ${_BUILD_FILE}
+    #  COMMAND ${CMAKE_COMMAND} make_directory ${_BUILD_FILE_DIR}
+    #
+    #)
+    ADD_CUSTOM_COMMAND(
+      OUTPUT ${_BUILD_FILE}
+      COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.gmo ${_BUILD_FILE}
+      DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT_FILE}
+      #APPEND
+    )
+  ENDIF()
+ENDFOREACH(lingua)
+
+ADD_CUSTOM_TARGET(po-gmo ALL DEPENDS ${CATALOGS})
+IF (GNC_BUILD_AS_INSTALL)
+  ADD_CUSTOM_TARGET(po-gmo-build ALL DEPENDS ${BUILD_CATALOGS})
+ENDIF()
+
+
+FOREACH(lingua ${ALL_LINGUAS})
+  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.gmo RENAME gnucash.mo DESTINATION share/locale/${lingua}/LC_MESSAGES)
+ENDFOREACH(lingua)
\ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7267f4a..3b67f3b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,8 @@
 
 SET (GETTEXT_PACKAGE "gnucash")
 
+SET(GNOME 1)
+
 IF (WIN32)
   SET (HAVE_SCANF_I64D 1)
   SET (HAVE_HTMLHELPW 1)
@@ -36,6 +38,20 @@ CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
 CHECK_INCLUDE_FILES (utmp.h HAVE_UTMP_H)
 CHECK_INCLUDE_FILES (wctype.h HAVE_WCTYPE_H)
 
+IF (NOT DISABLE_NLS)
+SET(ENABLE_NLS 1)
+ENDIF(NOT DISABLE_NLS)
+
+IF (ENABLE_DEBUG)
+  SET(DEBUG_MEMORY 1)
+ENDIF(ENABLE_DEBUG)
+
+IF (ENABLE_BINRELOC)
+  IF (UNIX OR MINGW)
+    SET(BR_PTHREAD 1)
+  ENDIF(UNIX OR MINGW)
+ENDIF(ENABLE_BINRELOC)
+
 IF (UNIX OR MINGW)
   SET (HAVE_BIND_TEXTDOMAIN_CODESET 1)
   SET (HAVE_DCGETTEXT 1)
@@ -50,12 +66,12 @@ IF (UNIX OR MINGW)
   SET (_POSIX_PTHREAD_SEMANTICS 1)
   SET (_TANDEM_SOURCE 1)
   SET (__EXTENSIONS__ 1)
-  SET (WORDS_BIGENDIAN 1)
 ENDIF (UNIX OR MINGW)
 
 IF (UNIX)
   SET (HAVE_CHOWN 1)
   SET (HAVE_DLERROR 1)
+  SET (HAVE_DLSYM 1)
   SET (HAVE_GETHOSTID 1)
   SET (HAVE_GETHOSTNAME 1)
   SET (HAVE_GETPPID 1)
@@ -67,15 +83,59 @@ IF (UNIX)
   SET (HAVE_LINK 1)
   SET (HAVE_LOCALTIME_R 1)
   SET (HAVE_PTHREAD_MUTEX_INIT 1)
+  SET (HAVE_PTHREAD_PRIO_INHERIT 1)
   SET (HAVE_SCANF_LLD 1)
   SET (HAVE_SETENV 1)
   SET (HAVE_STPCPY 1)
+  SET (HAVE_STRFMON 1)
   SET (HAVE_STRPTIME 1)
   SET (HAVE_STRUCT_TM_GMTOFF 1)
   SET (HAVE_TIMEGM 1)
+  SET (HAVE_TOWUPPER 1)
   SET (GNC_PLATFORM_POSIX 1)
 ENDIF (UNIX)
 
+IF (WIN32)
+  SET (GNC_PLATFORM_WINDOWS 1)
+ENDIF (WIN32)
+
+IF (APPLE)
+  # FIXME: HANDLE gtk-mac-integration-gtk2
+  SET(GNC_PLATFORM_DARWIN 1)
+  SET(GNC_PLATFORM_OSX 1)
+  SET(HAVE_OSX_KEYCHAIN 1)
+
+ENDIF(APPLE)
+
+IF(GLIB2_VERSION VERSION_GREATER 2.32.0 OR GLIB2_VERSION VERSION_EQUAL 2.32.0)
+  SET(HAVE_GLIB_2_32 1)
+ENDIF()
+
+IF(GLIB2_VERSION VERSION_GREATER 2.36.0 OR GLIB2_VERSION VERSION_EQUAL 2.36.0)
+  SET(HAVE_GLIB_2_36 1)
+ENDIF()
+
+IF(GLIB2_VERSION VERSION_GREATER 2.38.0 OR GLIB2_VERSION VERSION_EQUAL 2.38.0)
+  SET(HAVE_GLIB_2_38 1)
+ENDIF()
+
+SET(HAVE_WEBKIT_WEB_FRAME_PRINT_FULL 1)
+SET(HAVE_WEBKIT_WEB_VIEW_LOAD_URI 1)
+
+IF(DISABLE_DEPRECATED_GNOME)
+  SET(GNOME_DISABLE_DEPRECATED 1)
+ENDIF(DISABLE_DEPRECATED_GNOME)
+
+IF(DISABLE_DEPRECATED_GTK)
+  SET(GTK_DISABLE_DEPRECATED 1)
+  SET(GDK_DISABLE_DEPRECATED 1)
+  SET(GDK_PIXMAP_DISABLE_DEPRECATED 1)
+ENDIF(DISABLE_DEPRECATED_GTK)
+
+IF(DISABLE_DEPRECATED_GLIB)
+  SET(G_DISABLE_DEPRECATED 1)
+ENDIF(DISABLE_DEPRECATED_GLIB)
+
 ADD_DEFINITIONS (-DHAVE_CONFIG_H)
 
 SET (CONFIG_H ${CMAKE_CURRENT_BINARY_DIR}/config.h)
@@ -83,8 +143,16 @@ CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in ${CONFIG_H})
 
 SET (SWIG_RUNTIME_H ${CMAKE_CURRENT_BINARY_DIR}/swig-runtime.h)
 
+#ADD_CUSTOM_COMMAND (
+#  OUTPUT ${SWIG_RUNTIME_H}
+#  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
+#  COMMAND ${SWIG_EXECUTABLE} -guile -external-runtime ${SWIG_RUNTIME_H}
+#)
 # ############################################################
 
+SET(SCHEME_INSTALLED_SOURCE_DIR ${CMAKE_INSTALL_PREFIX}/share/gnucash/scm)
+SET(SCHEME_INSTALLED_CACHE_DIR ${CMAKE_INSTALL_PREFIX}/lib/gnucash/scm/ccache/${GUILE_EFFECTIVE_VERSION})
+
 # The subdirectories
 ADD_SUBDIRECTORY (libqof)
 ADD_SUBDIRECTORY (core-utils)
@@ -97,7 +165,30 @@ IF (WITH_SQL)
   ADD_SUBDIRECTORY (backend/dbi)
   ADD_SUBDIRECTORY (backend/sql)
 ENDIF (WITH_SQL)
-ADD_SUBDIRECTORY (optional/gtkmm)
 
-ADD_SUBDIRECTORY (gnc)
+IF (WITH_GNUCASH)
+  ADD_SUBDIRECTORY (bin)
+  ADD_SUBDIRECTORY (business/business-ledger)
+  ADD_SUBDIRECTORY (business/business-gnome)
+  ADD_SUBDIRECTORY (gnome)
+  ADD_SUBDIRECTORY (gnome-utils)
+  ADD_SUBDIRECTORY (gnome-search)
+  ADD_SUBDIRECTORY (html)
+  ADD_SUBDIRECTORY (plugins/bi_import)
+  ADD_SUBDIRECTORY (plugins/customer_import)
+  ADD_SUBDIRECTORY (pixmaps)
+  ADD_SUBDIRECTORY (quotes)
+  ADD_SUBDIRECTORY (register/ledger-core)
+  ADD_SUBDIRECTORY (register/register-core)
+  ADD_SUBDIRECTORY (register/register-gnome)
+  ADD_SUBDIRECTORY(report)
+  ADD_SUBDIRECTORY (scm)
+  ADD_SUBDIRECTORY (tax/us)
+  ADD_SUBDIRECTORY (test-core)
+ENDIF (WITH_GNUCASH)
+
+IF (WITH_CUTECASH)
+  ADD_SUBDIRECTORY (optional/gtkmm)
+  ADD_SUBDIRECTORY (gnc)
+ENDIF (WITH_CUTECASH)
 
diff --git a/src/app-utils/CMakeLists.txt b/src/app-utils/CMakeLists.txt
index 71f68577..dd4f97a 100644
--- a/src/app-utils/CMakeLists.txt
+++ b/src/app-utils/CMakeLists.txt
@@ -1,26 +1,17 @@
-# CMakeLists.txt for src/engine
-
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.app-utils\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${HTMLHELP_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for pow.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/gnc-module) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/app-utils/calculation) # for finproto.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/engine) # for gnc-engine.h
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src/engine) # for swig-runtime.h
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}) # for <option-util.h>
+
+# Build the library
+
+SET (app_utils_noinst_HEADERS
+  calculation/finvar.h
+  calculation/finproto.h
+  calculation/fin_spl_protos.h
+  calculation/fin_static_proto.h
+)
 
 SET (app_utils_HEADERS
   QuickFill.h
+  business-helpers.h
+  business-options.h
   file-utils.h
   gfec.h
   gnc-basic-gobject.h
@@ -32,17 +23,17 @@ SET (app_utils_HEADERS
   gnc-euro.h
   gnc-exp-parser.h
   gnc-gettext-util.h
+  gnc-gsettings.h
   gnc-help-utils.h
   gnc-helpers.h
+  gnc-prefs-utils.h
+  gnc-state.h  
   gnc-sx-instance-model.h
   gnc-ui-util.h
   gnc-ui-balances.h
   guile-util.h
   option-util.h
-  calculation/finvar.h
-  calculation/finproto.h
-  calculation/fin_spl_protos.h
-  calculation/fin_static_proto.h
+
 )
 
 # Command to generate the swig-app-utils.c wrapper file
@@ -52,6 +43,8 @@ GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.
 SET (app_utils_SOURCES
   calculation/expression_parser.c
   calculation/fin.c
+  business-helpers.c
+  business-options.c
   QuickFill.c
   file-utils.c
   gfec.c
@@ -63,8 +56,11 @@ SET (app_utils_SOURCES
   gnc-euro.c
   gnc-exp-parser.c
   gnc-gettext-util.c
+  gnc-gsettings.c
   gnc-helpers.c
+  gnc-prefs-utils.c
   gnc-sx-instance-model.c
+  gnc-state.c
   gnc-ui-util.c
   gnc-ui-balances.c
   gncmod-app-utils.c
@@ -77,7 +73,121 @@ IF (WIN32)
   SET (app_utils_SOURCES ${app_utils_SOURCES} gnc-help-utils.c)
 ENDIF (WIN32)
 
-ADD_LIBRARY	(app-utils
+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}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-app-utils gncmod-engine gnc-module 
+  ${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS}
+)
+
+IF (WIN32) 
+   TARGET_LINK_LIBRARIES(gncmod-app-utils ${HTMLHELP_LIBRARY})
+ENDIF(WIN32)
+
+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}
+)
+
+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
+)
+INSTALL(FILES ${app_utils_HEADERS} DESTINATION include/gnucash)
+
+FILE(READ ${CMAKE_SOURCE_DIR}/src/import-export/ofx/migratable-prefs-ofx.xml MIGRATABLE_PREFS_OFX)
+FILE(READ ${CMAKE_SOURCE_DIR}/src/import-export/aqb/migratable-prefs-aqbanking.xml MIGRATABLE_PREFS_AQBANKING)
+
+SET(MIGRATABLE_PREFS_XML ${CMAKE_CURRENT_BINARY_DIR}/migratable-prefs.xml)
+IF (GNC_BUILD_AS_INSTALL)
+  SET(MIGRATABLE_PREFS_XML ${DATADIR_BUILD}/gnucash/migratable-prefs.xml)
+  FILE(COPY make-prefs-migration-script.xsl DESTINATION ${DATADIR_BUILD}/gnucash)
+ENDIF()
+
+CONFIGURE_FILE(migratable-prefs.xml.in ${MIGRATABLE_PREFS_XML})
+
+INSTALL(FILES ${MIGRATABLE_PREFS_XML} DESTINATION share/gnucash)
+INSTALL(FILES make-prefs-migration-script.xsl DESTINATION share/gnucash)
+
+# And now handle scheme files
+
+SET (app_utils_SCHEME_2
+    app-utils.scm
+)
+
+SET (app_utils_SCHEME_1
+    hooks.scm
+    business-options.scm
+    c-interface.scm
+    config-var.scm
+    date-utilities.scm
+    migrate-prefs.scm
+    options.scm
+    prefs.scm
+    simple-obj.scm
+)
+
+SET(app_utils_SCHEME_3
+    business-prefs.scm
+)
+
+SET(GUILE_MODULES      src/engine)
+SET(GUILE_LOAD_DIRS    src/app-utils src/core-utils src/engine src/gnc-module src/scm)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/core-utils src/engine src/gnc-module src/libqof/qof)
+SET(GUILE_DEPENDS      gncmod-app-utils scm-core-utils scm-engine scm-scm)
+
+GNC_ADD_SCHEME_TARGETS(scm-gettext
+  gettext.scm
+  gnucash
+  src/app-utils
+  ""
+  ""
+  gncmod-app-utils
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-app-utils-1
+  "${app_utils_SCHEME_1}"
+  ""
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-gettext;${GUILE_DEPENDS}"
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-app-utils-2
+  "${app_utils_SCHEME_2}"
+  "gnucash"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  scm-app-utils-1
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-app-utils-3
+  "${app_utils_SCHEME_3}"
+  ""
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  scm-app-utils-2
+  FALSE
+)
+
+ADD_CUSTOM_TARGET(scm-app-utils ALL DEPENDS scm-app-utils-3 scm-app-utils-2 scm-app-utils-1 scm-gettext)
\ No newline at end of file
diff --git a/src/backend/dbi/CMakeLists.txt b/src/backend/dbi/CMakeLists.txt
index 9524167..8e96b81 100644
--- a/src/backend/dbi/CMakeLists.txt
+++ b/src/backend/dbi/CMakeLists.txt
@@ -1,32 +1,47 @@
 # CMakeLists.txt for src/backend/dbi
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.backend.dbi\")
-
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${LIBDBI_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/engine)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/app-utils)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/backend/sql)
-
-SET (libgnc_backend_dbi_SOURCES
+# Source file gncmod-backend-dbi.c does not appear to be use in Makefile.in, so not included here.
+
+SET (backend_dbi_SOURCES
   gnc-backend-dbi.cpp
 )
-SET (libgnc_backend_dbi_HEADERS
-  gnc-backend-dbi.h
+SET (backend_dbi_noinst_HEADERS
+  gnc-backend-dbi.h gnc-backend-dbi-priv.h
 )
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_backend_dbi_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${backend_dbi_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY	(gncmod-backend-dbi
+  ${backend_dbi_SOURCES}
+  ${backend_dbi_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-backend-dbi gnc-backend-sql gncmod-engine gnc-qof ${GTK2_LDFLAGS} ${LIBDBI_LIBRARY})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-backend-dbi PRIVATE -DG_LOG_DOMAIN=\"gnc.backend.dbi\")
 
-ADD_LIBRARY	(gnc-backend-dbi
-  ${libgnc_backend_dbi_SOURCES}
-  ${libgnc_backend_dbi_HEADERS}
+TARGET_INCLUDE_DIRECTORIES(gncmod-backend-dbi PRIVATE ${LIBDBI_INCLUDE_PATH})
+
+INSTALL(TARGETS gncmod-backend-dbi
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
+
+# FIXME: Below is a hack to create .libs/libgncmod-backend-dbi to silence some complaints
+# from guile when compiling. Eventually, fix the guile module loader to not expect items
+# to be in .libs. At this time, WIN32 does not use guile-2, so no need for this.
+
+IF (NOT WIN32)
+  SET(_LINK_TARGET ${CMAKE_CURRENT_BINARY_DIR}/.libs/libgncmod-backend-dbi${CMAKE_SHARED_LIBRARY_SUFFIX})
+  FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.libs)
+
+  ADD_CUSTOM_COMMAND(
+      OUTPUT ${_LINK_TARGET}
+      COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE:gncmod-backend-dbi> ${_LINK_TARGET}
+      DEPENDS gnc-backend-dbi
   )
+
+  ADD_CUSTOM_TARGET(gncmod-backend-dbi-link ALL DEPENDS gncmod-backend-dbi ${_LINK_TARGET})
+ENDIF()
diff --git a/src/backend/sql/CMakeLists.txt b/src/backend/sql/CMakeLists.txt
index 9b421bc..4da6bfa 100644
--- a/src/backend/sql/CMakeLists.txt
+++ b/src/backend/sql/CMakeLists.txt
@@ -1,21 +1,8 @@
 # CMakeLists.txt for src/backend/dbi
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.backend.sql\")
 
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/gnc-module)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/engine)
 
-SET (libgnc_backend_sql_SOURCES
+SET (backend_sql_SOURCES
   gnc-backend-sql.cpp
   gnc-account-sql.cpp
   gnc-address-sql.cpp
@@ -40,7 +27,7 @@ SET (libgnc_backend_sql_SOURCES
   gnc-vendor-sql.cpp
   escape.cpp
 )
-SET (libgnc_backend_sql_HEADERS
+SET (backend_sql_noinst_HEADERS
   gnc-account-sql.h
   gnc-address-sql.h
   gnc-backend-sql.h
@@ -67,9 +54,22 @@ SET (libgnc_backend_sql_HEADERS
 )
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_backend_sql_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${gnc_backend_sql_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
 ADD_LIBRARY	(gnc-backend-sql
-  ${libgnc_backend_sql_SOURCES}
-  ${libgnc_backend_sql_HEADERS}
-  )
+  ${backend_sql_SOURCES}
+  ${backend_sql_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gnc-backend-sql gncmod-engine gnc-qof)
+
+TARGET_COMPILE_DEFINITIONS (gnc-backend-sql PRIVATE -DG_LOG_DOMAIN=\"gnc.backend.sql\")
+
+TARGET_INCLUDE_DIRECTORIES(gnc-backend-sql PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+INSTALL(TARGETS gnc-backend-sql
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+  RUNTIME DESTINATION bin)
+
+# No headers to install
diff --git a/src/backend/xml/CMakeLists.txt b/src/backend/xml/CMakeLists.txt
index 54861f0..99fd698 100644
--- a/src/backend/xml/CMakeLists.txt
+++ b/src/backend/xml/CMakeLists.txt
@@ -1,27 +1,39 @@
 # CMakeLists.txt for src/backend/xml
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.backend.xml\")
-
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${LIBXML2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/gnc-module)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/engine)
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}) # when building swig-gnc-module.cpp
-
-# Command to generate the swig-engine.cpp wrapper file
-SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.cpp)
+# 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)
 
-SET (libgnc_backend_xml_SOURCES
+SET (backend_xml_utils_noinst_HEADERS
+  gnc-backend-xml.h
+  gnc-xml.h
+  gnc-address-xml-v2.h
+  gnc-bill-term-xml-v2.h
+  gnc-customer-xml-v2.h
+  gnc-employee-xml-v2.h
+  gnc-entry-xml-v2.h
+  gnc-invoice-xml-v2.h
+  gnc-job-xml-v2.h
+  gnc-order-xml-v2.h
+  gnc-owner-xml-v2.h
+  gnc-tax-table-xml-v2.h
+  gnc-vendor-xml-v2.h
+  gnc-xml-helper.h
+  io-example-account.h
+  io-gncxml-gen.h
+  io-gncxml-v2.h
+  io-gncxml.h
+  io-utils.h
+  sixtp-dom-generators.h
+  sixtp-dom-parsers.h
+  sixtp-parsers.h
+  sixtp-stack.h
+  sixtp-utils.h
+  sixtp.h
+  xml-helpers.h
+)
+
+SET (backend_xml_utils_SOURCES
   gnc-account-xml-v2.cpp
   gnc-address-xml-v2.cpp
   gnc-bill-term-xml-v2.cpp
@@ -55,12 +67,70 @@ SET (libgnc_backend_xml_SOURCES
   sixtp-to-dom-parser.cpp
   sixtp-utils.cpp
   sixtp.cpp
-  gnc-backend-xml.cpp
 )
 
+
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_backend_xml_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${backend_xml_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY	(gnc-backend-xml-utils
+  ${backend_xml_utils_SOURCES}
+  ${backend_xml_utils_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gnc-backend-xml-utils gncmod-engine ${LIBXML2_LDFLAGS} ${ZLIB_LDFLAGS})
+
+TARGET_INCLUDE_DIRECTORIES (gnc-backend-xml-utils
+  PUBLIC  ${LIBXML2_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}
+  PRIVATE ${ZLIB_INCLUDE_DIRS}
+)
+
+TARGET_COMPILE_DEFINITIONS (gnc-backend-xml-utils PRIVATE -DG_LOG_DOMAIN=\"gnc.backend.xml\")
+
+INSTALL(TARGETS gnc-backend-xml-utils
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+  RUNTIME DESTINATION bin)
+# No headers to install
+
+# ----
 
-ADD_LIBRARY	(gnc-backend-xml
-  ${libgnc_backend_xml_SOURCES}
+SET(libgncmod_backend_xml_SOURCES gnc-backend-xml.cpp)
+
+SET_SOURCE_FILES_PROPERTIES (${libgncmod_backend_xml_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY(gncmod-backend-xml MODULE ${libgncmod_backend_xml_SOURCES})
+TARGET_LINK_LIBRARIES(gncmod-backend-xml gnc-backend-xml-utils gncmod-engine
+                        gnc-core-utils ${LIBXML2_LDFLAGS} ${GLIB2_LDFLAGS} ${ZLIB_LIBRARY})
+
+TARGET_COMPILE_DEFINITIONS (gncmod-backend-xml PRIVATE -DG_LOG_DOMAIN=\"gnc.backend.xml\")
+
+SET(LIB_DIR lib/gnucash)
+IF (WIN32)
+  SET(LIB_DIR bin)
+ENDIF(WIN32)
+
+
+INSTALL(TARGETS gncmod-backend-xml
+  LIBRARY DESTINATION ${LIB_DIR}
+  ARCHIVE DESTINATION ${LIB_DIR}
+  RUNTIME DESTINATION bin)
+
+# ----
+
+# FIXME: Below is a hack to create .libs/libgncmod-backend-xml to silence some complaints
+# from guile when compiling. Eventually, fix the guile module loader to not expect items
+# to be in .libs. At this time, WIN32 does not use guile-2, so no need for this.
+
+IF (NOT WIN32)
+  SET(_LINK_TARGET ${CMAKE_CURRENT_BINARY_DIR}/.libs/libgncmod-backend-xml${CMAKE_SHARED_MODULE_SUFFIX})
+  FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.libs)
+
+  ADD_CUSTOM_COMMAND(
+      OUTPUT ${_LINK_TARGET}
+      COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE:gncmod-backend-xml> ${_LINK_TARGET}
+      DEPENDS gnc-backend-xml-utils
   )
+
+  ADD_CUSTOM_TARGET(gncmod-backend-xml-link ALL DEPENDS gncmod-backend-xml ${_LINK_TARGET})
+ENDIF()
diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt
new file mode 100644
index 0000000..98e3c2a
--- /dev/null
+++ b/src/bin/CMakeLists.txt
@@ -0,0 +1,187 @@
+ADD_SUBDIRECTORY(overrides)
+
+# Some settings are platform dependent. Let's define them per platform.
+IF (WIN32)
+  # Windows specific settings go here:
+  SET (GNUCASH_RESOURCE_FILE gnucash.rc)
+
+ELSE (WIN32)
+  # All other platforms use these settings:
+  SET (PLATFORM_FILES gnucash-valgrind)
+
+ENDIF (WIN32)
+
+SET (gnucash_SOURCES
+  gnucash-bin.c
+  ${GNUCASH_RESOURCE_FILE}  
+)
+
+ADD_EXECUTABLE (gnucash
+  ${gnucash_SOURCES}
+)
+
+TARGET_COMPILE_DEFINITIONS(gnucash PRIVATE -DG_LOG_DOMAIN=\"gnc.bin\")
+
+TARGET_LINK_LIBRARIES (gnucash
+   gncmod-ledger-core gncmod-report-gnome gnc-gnome gncmod-gnome-utils gncmod-app-utils
+   gncmod-engine gnc-module gnc-core-utils gnc-qof gncmod-report-system
+   ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GTK2_LDFLAGS} ${GTK_MAC_LDFLAGS}
+)
+
+
+IF (MAC_INTEGRATION)
+  TARGET_COMPILE_OPTIONS(gnucash PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
+  TARGET_LINK_LIBRARIES(gnucash ${OSX_EXTRA_LIBRARIES})
+ENDIF(MAC_INTEGRATION)
+
+INSTALL(TARGETS gnucash DESTINATION bin)
+# No headers to install.
+
+# Generate the gnucash-env script
+SET(SCRIPT_LIST  "")
+SET(SCRIPT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+IF (GNC_BUILD_AS_INSTALL)
+  SET(SCRIPT_OUTPUT_DIR ${BINDIR_BUILD})
+ENDIF()
+
+FOREACH (script gnucash-env gnucash-make-guids)
+  SET (GNUCASH_ENV_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${script})
+  LIST(APPEND SCRIPT_LIST ${SCRIPT_OUTPUT_DIR}/${script})
+  SET (GNC_OVERRIDES_DIR ${CMAKE_INSTALL_PREFIX}/libexec/gnucash/overrides)
+  FILE(WRITE ${GNUCASH_ENV_SCRIPT} "#!/bin/sh\n")
+  FILE(APPEND ${GNUCASH_ENV_SCRIPT} "PATH=\"${GNC_OVERRIDES_DIR}:\${PATH}\"\n")
+  FILE(APPEND ${GNUCASH_ENV_SCRIPT} "export PATH\n")
+  FILE(APPEND ${GNUCASH_ENV_SCRIPT} "\nGUILE_WARN_DEPRECATED=\"no\"\n")
+  FILE(APPEND ${GNUCASH_ENV_SCRIPT} "export GUILE_WARN_DEPRECATED\n")
+  FILE(APPEND ${GNUCASH_ENV_SCRIPT} "\nexec \"${script}\" \"\$@\"\n")
+  FILE(COPY ${GNUCASH_ENV_SCRIPT}
+       DESTINATION ${SCRIPT_OUTPUT_DIR}
+       FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+  )
+ENDFOREACH(script)
+
+SET(TOP_SRC_DIR ${CMAKE_SOURCE_DIR})
+SET(GNUCASH_BIN_INSTALL_NAME "gnucash")
+
+SET(VALGRIND_OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
+IF (GNC_BUILD_AS_INSTALL)
+  SET(VALGRIND_OUTDIR ${BINDIR_BUILD})
+ENDIF()
+
+GNC_CONFIGURE(gnucash-valgrind.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-valgrind)
+
+FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-valgrind
+          DESTINATION ${VALGRIND_OUTDIR}
+          FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+)
+
+## Create the environment file
+
+FILE(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/environment.in ENV_STRINGS_IN)
+
+SET(ENV_STRINGS_LIST "")
+
+FOREACH(line ${ENV_STRINGS_IN})
+  STRING(REGEX REPLACE "@-|-@" "@" line2 "${line}")
+    STRING(REPLACE ";" "\;" line3 "${line2}")
+  IF(NOT "${line3}" MATCHES "@NOTE")
+    LIST(APPEND ENV_STRINGS_LIST "${line3}\n")
+  ENDIF()
+ENDFOREACH()
+
+STRING(CONCAT ENV_STRINGS ${ENV_STRINGS_LIST})
+STRING(CONFIGURE "${ENV_STRINGS}" ENV_STRINGS_CONF @ONLY)
+
+SET(ENV_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/environment)
+IF (GNC_BUILD_AS_INSTALL)
+  SET(BUILD_ENV_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/environment.build)
+ENDIF()
+
+FILE(WRITE ${ENV_FILE_OUT} "${ENV_STRINGS_CONF}")
+FILE(WRITE ${BUILD_ENV_FILE_OUT} "${ENV_STRINGS_CONF}")
+
+SET(XDG_TEXT "
+# GnuCash was not installed in the default location.
+# XDG_DATA_DIRS will be set so that our documentation
+# and gsettings schema are found.\n"
+)
+
+IF (NOT(${GNC_DBD_DIR} STREQUAL "${CMAKE_PREFIX_PATH}/lib/dbd"))
+  FILE(APPEND ${ENV_FILE_OUT} "GNC_DBD_DIR=${GNC_DBD_DIR}")
+ENDIF()
+
+IF (NOT(${DATADIR} STREQUAL "/usr/share") AND NOT(${DATADIR} STREQUAL "/usr/local/share"))
+  FILE(APPEND ${ENV_FILE_OUT} ${XDG_TEXT})
+  FILE(APPEND ${ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR};{XDG_DATA_DIRS}" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
+ENDIF()
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(APPEND ${BUILD_ENV_FILE_OUT} "GNC_DBD_DIR=${LIBDBI_DRIVERS_DIR}/dbd")
+
+  FILE(APPEND ${BUILD_ENV_FILE_OUT} ${XDG_TEXT})
+  FILE(APPEND ${BUILD_ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR_BUILD};{XDG_DATA_DIRS};" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
+
+  FILE(COPY ${BUILD_ENV_FILE_OUT}
+    DESTINATION ${SYSCONFDIR_BUILD}/gnucash
+    FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+  )
+  FILE(RENAME
+    ${SYSCONFDIR_BUILD}/gnucash/environment.build
+    ${SYSCONFDIR_BUILD}/gnucash/environment
+  )
+ENDIF()
+
+SET(ENVIRONMENT_FILE_DIR ${CMAKE_CURRENT_BINARY_DIR})
+FILE(COPY ${ENV_FILE_OUT}
+  DESTINATION ${ENVIRONMENT_FILE_DIR}
+  FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+)
+
+
+
+INSTALL(FILES ${SCRIPT_LIST} ${VALGRIND_OUTDIR}/gnucash-valgrind DESTINATION bin)
+INSTALL(FILES ${ENVIRONMENT_FILE_DIR}/environment DESTINATION etc/gnucash)
+
+IF (WIN32)
+  # Write out a command script for windows
+  SET(lib_directories boost enchant libsoup mysql pgsql libxslt)
+  SET(bin_directories mingw gnutls goffice libgsf pcre gnome guile webkit regex aqbanking gwenhywfar libofx opensp
+    libdbi sqlite3 mysql pgsql enchant libsoup libxslt)
+
+  SET(CMD_LINES "")
+  SET(BUILD_CMD_LINES "")
+  FOREACH(dir bin lib lib/gnucash)
+    FILE(TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX}/${dir} INSTALL_PATH_ITEM)
+    FILE(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${dir} BUILD_PATH_ITEM)
+    LIST(APPEND CMD_LINES "set PATH=${INSTALL_PATH_ITEM}\;%PATH%\n")
+    LIST(APPEND BUILD_CMD_LINES "set PATH=${BUILD_PATH_ITEM}\;%PATH%\n")
+  ENDFOREACH(dir)
+
+  FOREACH(dir ${lib_directories})
+    FILE(TO_NATIVE_PATH ${CMAKE_PREFIX_PATH}/${dir}/lib PATH_ITEM)
+    LIST(APPEND CMD_LINES "set PATH=${PATH_ITEM}\;%PATH%\n")
+  ENDFOREACH(dir)
+
+  FOREACH(dir ${bin_directories})
+    FILE(TO_NATIVE_PATH ${CMAKE_PREFIX_PATH}/${dir}/bin PATH_ITEM)
+    LIST(APPEND CMD_LINES "set PATH=${PATH_ITEM}\;%PATH%\n")
+  ENDFOREACH(dir)
+
+  SET(CMD_FILE ${CMAKE_CURRENT_BINARY_DIR}/gnucash-launcher.cmd)
+  FILE(WRITE ${CMD_FILE} "@echo off\nsetlocal\n\n")
+  FOREACH(line ${CMD_LINES})
+    FILE(APPEND ${CMD_FILE} "${line}")
+  ENDFOREACH(line)
+  FILE(APPEND ${CMD_FILE} "\nstart gnucash %*\n")
+
+  IF (GNC_BUILD_AS_INSTALL)
+    SET(BUILD_CMD_FILE ${CMAKE_BINARY_DIR}/bin/gnucash-launcher.cmd)
+    FILE(WRITE ${BUILD_CMD_FILE} "@echo off\nsetlocal\n\n")
+    FOREACH(line ${CMD_LINES})
+      FILE(APPEND ${BUILD_CMD_FILE} "${line}")
+    ENDFOREACH(line)
+    FILE(APPEND ${BUILD_CMD_FILE} "\nstart gnucash %*\n")
+  ENDIF()
+
+  INSTALL(PROGRAMS ${CMD_FILE} DESTINATION bin)
+ENDIF(WIN32)
diff --git a/src/bin/overrides/CMakeLists.txt b/src/bin/overrides/CMakeLists.txt
new file mode 100644
index 0000000..0390377
--- /dev/null
+++ b/src/bin/overrides/CMakeLists.txt
@@ -0,0 +1,33 @@
+
+SET(GNC_PKGLIB_INSTALLDIR ${PKGLIBDIR})
+SET(GNC_SCM_INSTALLDIR ${SCHEME_INSTALLED_SOURCE_DIR})
+SET(GNC_LIB_INSTALLDIR ${LIBDIR})
+SET(GNC_PYTHON_DIR ${GNUCASH_PATH_DIR})
+SET(GUILE ${GUILE_EXECUTABLE})
+SET(GNC_SRCDIR ${CMAKE_SOURCE_DIR})
+SET(GNC_BUILDDIR ${CMAKE_BINARY_DIR})
+
+CONFIGURE_FILE(gnucash-make-guids.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-make-guids)
+GNC_CONFIGURE(gnucash-env.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-env)
+GNC_CONFIGURE(guile.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/guile)
+GNC_CONFIGURE(gnucash-build-env.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-build-env)   # not installed
+
+SET(SCRIPT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+IF (GNC_BUILD_AS_INSTALL)
+  SET(SCRIPT_OUTPUT_DIR ${LIBDIR_BUILD}exec/gnucash/overrides)
+ENDIF()
+
+FOREACH(file gnucash-make-guids gnucash-env guile gnucash-build-env)
+  FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${file}
+       DESTINATION ${SCRIPT_OUTPUT_DIR}
+       FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+  )
+ENDFOREACH(file)
+
+INSTALL(
+    PROGRAMS
+      ${SCRIPT_OUTPUT_DIR}/gnucash-env
+      ${SCRIPT_OUTPUT_DIR}/gnucash-make-guids
+      ${SCRIPT_OUTPUT_DIR}/guile
+    DESTINATION libexec/gnucash/overrides
+)
\ No newline at end of file
diff --git a/src/business/business-gnome/CMakeLists.txt b/src/business/business-gnome/CMakeLists.txt
new file mode 100644
index 0000000..e33571a
--- /dev/null
+++ b/src/business/business-gnome/CMakeLists.txt
@@ -0,0 +1,82 @@
+ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(gtkbuilder)
+ADD_SUBDIRECTORY(ui)
+
+SET(business_gnome_SOURCES
+  business-options-gnome.c
+  business-urls.c
+  business-gnome-utils.c
+  dialog-billterms.c
+  dialog-choose-owner.c
+  dialog-customer.c
+  dialog-date-close.c
+  dialog-employee.c
+  dialog-invoice.c
+  dialog-job.c
+  dialog-order.c
+  dialog-payment.c
+  dialog-vendor.c
+  gnc-plugin-business.c
+  gnc-plugin-page-invoice.c
+  gnc-plugin-page-owner-tree.c
+  gncmod-business-gnome.c
+  search-owner.c
+)
+
+SET(business_gnome_noinst_HEADERS
+  business-options-gnome.h
+  business-urls.h
+  business-gnome-utils.h
+  dialog-billterms.h
+  dialog-choose-owner.h
+  dialog-customer.h
+  dialog-date-close.h
+  dialog-employee.h
+  dialog-invoice.h
+  dialog-job.h
+  dialog-order.h
+  dialog-payment.h
+  dialog-vendor.h
+  gnc-plugin-business.h
+  gnc-plugin-page-invoice.h
+  gnc-plugin-page-owner-tree.h
+  search-owner.h
+)  
+
+SET_SOURCE_FILES_PROPERTIES (${business_gnome_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (business-options-gnome.c PROPERTIES OBJECT_DEPENDS ${SWIG_RUNTIME_H})
+ADD_LIBRARY(gncmod-business-gnome
+  ${business_gnome_SOURCES}
+  ${business_gnome_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-business-gnome gnc-business-ledger gncmod-gnome-search 
+   gncmod-report-gnome gncmod-gnome-utils gnc-gnome gncmod-engine gnc-qof ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-business-gnome PRIVATE -DG_LOG_DOMAIN=\"gnc.business.gnome\")
+
+INSTALL(TARGETS gncmod-business-gnome
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
+
+# Scheme
+
+SET(gncmod_business_gnome_SCHEME business-gnome.scm)
+
+SET(GUILE_OUTPUT_DIR   gnucash)
+SET(GUILE_MODULES      src/app-utils src/engine src/gnome-utils src/html src/report/report-system src/report/standard-reports)
+SET(GUILE_LOAD_DIRS    src/app-utils src/engine src/core-utils src/gnc-module src/gnome-utils src/report/business-reports src/report/report-system src/report/standard-reports src/scm)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/engine src/core-utils src/gnc-module src/gnome-utils src/report/report-system)
+SET(GUILE_DEPENDS      scm-business-reports)
+
+GNC_ADD_SCHEME_TARGETS(scm-business-gnome
+  "${gncmod_business_gnome_SCHEME}"
+  ${GUILE_OUTPUT_DIR} 
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
\ No newline at end of file
diff --git a/src/business/business-gnome/gschemas/CMakeLists.txt b/src/business/business-gnome/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..cabe172
--- /dev/null
+++ b/src/business/business-gnome/gschemas/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+SET(business_gnome_GSCHEMA org.gnucash.dialogs.business.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(business-gnome-gschema "${business_gnome_GSCHEMA}")
\ No newline at end of file
diff --git a/src/business/business-gnome/gtkbuilder/CMakeLists.txt b/src/business/business-gnome/gtkbuilder/CMakeLists.txt
new file mode 100644
index 0000000..1d4d3d1
--- /dev/null
+++ b/src/business/business-gnome/gtkbuilder/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/business/business-gnome/ui/CMakeLists.txt b/src/business/business-gnome/ui/CMakeLists.txt
new file mode 100644
index 0000000..6c9019d
--- /dev/null
+++ b/src/business/business-gnome/ui/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/business/business-ledger/CMakeLists.txt b/src/business/business-ledger/CMakeLists.txt
new file mode 100644
index 0000000..6573f86
--- /dev/null
+++ b/src/business/business-ledger/CMakeLists.txt
@@ -0,0 +1,35 @@
+
+SET (gnc_business_ledger_SOURCES
+  gncEntryLedger.c
+  gncEntryLedgerControl.c
+  gncEntryLedgerDisplay.c
+  gncEntryLedgerLayout.c
+  gncEntryLedgerLoad.c
+  gncEntryLedgerModel.c
+)
+
+SET (gnc_business_ledger_noinst_HEADERS
+  gncEntryLedger.h
+  gncEntryLedgerP.h
+  gncEntryLedgerControl.h
+  gncEntryLedgerLayout.h
+  gncEntryLedgerModel.h
+)
+
+ADD_LIBRARY (gnc-business-ledger
+  ${gnc_business_ledger_SOURCES}
+  ${gnc_business_ledger_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gnc-business-ledger gncmod-ledger-core  gncmod-register-core gncmod-engine gncmod-gnome-utils
+                            gnc-core-utils ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gnc-business-ledger PRIVATE -DG_LOG_DOMAIN=\"gnc.business.ledger\")
+
+TARGET_INCLUDE_DIRECTORIES (gnc-business-ledger PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+INSTALL(TARGETS gnc-business-ledger
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+  RUNTIME DESTINATION bin)
+# No headers to install
\ No newline at end of file
diff --git a/src/cmake_modules/GncAddGSchemaTargets.cmake b/src/cmake_modules/GncAddGSchemaTargets.cmake
new file mode 100644
index 0000000..1b80d54
--- /dev/null
+++ b/src/cmake_modules/GncAddGSchemaTargets.cmake
@@ -0,0 +1,49 @@
+MACRO(ADD_GSCHEMA_TARGETS _TARGET _gschema_INPUTS)
+  SET(_gschema_OUTPUTS "")
+  SET(_gschema_VALIDS "")
+  SET(_gschema_BUILDS "")
+  # FIXME: I have no idea of I'm using the right options here for intltool-merge for Windows.
+  SET(INITTOOL_OPTIONS "--no-translations")
+  IF(WIN32)
+    SET(INITTOOL_OPTIONS "/tmp")
+  ENDIF(WIN32)
+  FOREACH(file ${_gschema_INPUTS})
+    GNC_CONFIGURE2(${file}.in.in ${file}.in)
+    STRING(REPLACE ".xml" ".valid" file_no_xml ${file})
+    SET(_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${file})
+    SET(_BUILD_FILE ${DATADIR_BUILD}/glib-2.0/schemas/${file})
+    SET(_VALID_FILE ${CMAKE_CURRENT_BINARY_DIR}/${file_no_xml})
+    LIST(APPEND _gschema_OUTPUTS ${_OUTPUT_FILE})
+    LIST(APPEND _gschema_VALIDS ${_VALID_FILE})
+    IF (GNC_BUILD_AS_INSTALL)
+      LIST(APPEND _gschema_BUILDS ${_BUILD_FILE})
+    ENDIF()
+    ADD_CUSTOM_COMMAND(
+        OUTPUT ${_OUTPUT_FILE}
+        COMMAND ${CMAKE_COMMAND} -E env
+          LC_ALL=C
+          ${PERL_EXECUTABLE} ${INTLTOOL_MERGE} -x -u ${INITTOOL_OPTIONS} ${CMAKE_CURRENT_BINARY_DIR}/${file}.in ${CMAKE_CURRENT_BINARY_DIR}/${file}
+        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${file}.in
+        MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${file}.in.in
+    )
+    IF (GNC_BUILD_AS_INSTALL)
+      ADD_CUSTOM_COMMAND(
+        OUTPUT ${_BUILD_FILE}
+        COMMAND ${CMAKE_COMMAND} -E copy ${_OUTPUT_FILE} ${_BUILD_FILE}
+        DEPENDS ${_OUTPUT_FILE}
+      )
+    ENDIF()
+    ADD_CUSTOM_COMMAND(
+        OUTPUT ${_VALID_FILE}
+        COMMAND ${CMAKE_COMMAND} -E env
+        ${GLIB_COMPILE_SCHEMAS} --strict --dry-run --schema-file=${_OUTPUT_FILE}
+        COMMAND ${CMAKE_COMMAND} -E touch ${_VALID_FILE}
+        DEPENDS ${_OUTPUT_FILE}
+    )
+  ENDFOREACH(file)
+
+  ADD_CUSTOM_TARGET(${_TARGET} DEPENDS "${_gschema_OUTPUTS};${_gschema_VALIDS};${_gschema_BUILDS}")
+
+  INSTALL(FILES ${_gschema_OUTPUTS} DESTINATION share/glib-2.0/schemas)
+
+ENDMACRO()
diff --git a/src/cmake_modules/GncAddSchemeTargets.cmake b/src/cmake_modules/GncAddSchemeTargets.cmake
new file mode 100644
index 0000000..b7ddceb
--- /dev/null
+++ b/src/cmake_modules/GncAddSchemeTargets.cmake
@@ -0,0 +1,142 @@
+# Copyright (c) 2015, Rob Gowin
+
+MACRO(GNC_ADD_SCHEME_TARGETS _TARGET _SOURCE_FILES _OUTPUT_DIR_IN _GUILE_MODULES _GUILE_LOAD_DIRS _GUILE_LIBRARY_DIRS _GUILE_DEPENDS_IN MAKE_LINKS_IN)
+  SET(__DEBUG FALSE)
+  IF (__DEBUG)
+    MESSAGE("Parameters to COMPILE_SCHEME for target ${_TARGET}")
+    MESSAGE("   SOURCE_FILES: ${_SOURCE_FILES}")
+    MESSAGE("   GUILE_MODULES: ${_GUILE_MODULES}")
+    MESSAGE("   GUILE_LOAD_DIRS: ${_GUILE_LOAD_DIRS}")
+    MESSAGE("   GUILE_LIBRARY_DIRS: ${_GUILE_LIBRARY_DIRS}")
+    MESSAGE("   GUILE_DEPENDS_IN: ${_GUILE_DEPENDS_IN}")
+  ENDIF(__DEBUG)
+  SET(_CMD "create_symlink")
+  IF(WIN32)
+    SET(_CMD "copy")
+  ENDIF(WIN32)
+  SET(MAKE_LINKS ${MAKE_LINKS_IN})
+  SET(_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT_DIR_IN})
+  IF(GNC_BUILD_AS_INSTALL)
+    SET(_OUTPUT_DIR ${DATADIR_BUILD}/gnucash/scm/${_OUTPUT_DIR_IN})
+  ENDIF()
+  FILE(MAKE_DIRECTORY ${_OUTPUT_DIR})
+  # For guile 1, we simple link (or copy, for Windows) each source file to the dest directory
+  IF(HAVE_GUILE1 OR MAKE_LINKS)
+    SET(_SCHEME_LINKS "")
+    FOREACH(scheme_file ${_SOURCE_FILES})
+      SET(_SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${scheme_file})
+      IF(IS_ABSOLUTE ${scheme_file})
+        SET(_SOURCE_FILE ${scheme_file})
+      ENDIF()
+      GET_FILENAME_COMPONENT(name ${scheme_file} NAME)
+      SET(_OUTPUT_FILE ${_OUTPUT_DIR}/${name})
+      IF(NOT EXISTS ${_OUTPUT_FILE})
+        LIST(APPEND _SCHEME_LINKS ${_OUTPUT_FILE})
+        ADD_CUSTOM_COMMAND(
+            OUTPUT ${_OUTPUT_FILE}
+            COMMAND ${CMAKE_COMMAND} -E ${_CMD} ${_SOURCE_FILE} ${_OUTPUT_FILE}
+        )
+      ENDIF()
+    ENDFOREACH(scheme_file)
+    IF(HAVE_GUILE1)
+      ADD_CUSTOM_TARGET(${_TARGET} ALL DEPENDS "${_SCHEME_LINKS}")
+    ELSE()
+      ADD_CUSTOM_TARGET(${_TARGET}-links ALL DEPENDS "${_SCHEME_LINKS}")
+    ENDIF()
+  ENDIF(HAVE_GUILE1 OR MAKE_LINKS)
+
+  IF(HAVE_GUILE2)
+    # Construct the guile source and compiled load paths
+    SET(_GUILE_LOAD_PATH "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR};${CMAKE_BINARY_DIR}/src/scm")  # to pick up generated build-config.scm
+    SET(_GUILE_LOAD_COMPILED_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+    FOREACH (load_item ${_GUILE_LOAD_DIRS})
+       LIST(APPEND _GUILE_LOAD_PATH ${CMAKE_SOURCE_DIR}/${load_item})
+       LIST(APPEND _GUILE_LOAD_COMPILED_PATH ${CMAKE_BINARY_DIR}/${load_item})
+    ENDFOREACH(load_item)
+
+    # Construct the LD_LIBRARY_PATH
+    SET(_GUILE_LD_LIBRARY_PATH ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE})
+    FOREACH(ld_item ${_GUILE_LIBRARY_DIRS})
+        LIST(APPEND _GUILE_LD_LIBRARY_PATH ${CMAKE_BINARY_DIR}/${ld_item}/${CMAKE_BUILD_TYPE})
+    ENDFOREACH(ld_item)
+
+    # And then the module path
+    SET(_GNC_MODULE_PATH "")
+    FOREACH(module_item ${_GUILE_MODULES})
+      LIST(APPEND _GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/${module_item}/${CMAKE_BUILD_TYPE})
+    ENDFOREACH(module_item)
+
+    # In CMake lists are text strings where the items are separated by semicolons ("a;b;c;d" for example).
+    # Replace the semis with colons to construct the path environment variables
+    STRING(REPLACE ";" ":" _GUILE_LOAD_PATH "${_GUILE_LOAD_PATH}")
+    STRING(REPLACE ";" ":" _GUILE_LOAD_COMPILED_PATH "${_GUILE_LOAD_COMPILED_PATH}")
+    STRING(REPLACE ";" ":" _GUILE_MODULES "{_GUILE_MODULES}")
+    STRING(REPLACE ";" ":" _GUILE_LD_LIBRARY_PATH "${_GUILE_LD_LIBRARY_PATH}")
+    STRING(REPLACE ";" ":" _GNC_MODULE_PATH "${_GNC_MODULE_PATH}")
+
+    IF(GNC_BUILD_AS_INSTALL)
+      SET(_GUILE_CACHE_DIR ${LIBDIR_BUILD}/gnucash/scm/ccache/2.0)
+      SET(_GUILE_LOAD_PATH "${CMAKE_CURRENT_SOURCE_DIR}:${DATADIR_BUILD}/gnucash/scm")
+      SET(_GUILE_LOAD_COMPILED_PATH ${_GUILE_CACHE_DIR})
+#      SET(_GNC_MODULE_PATH  "${LIBDIR_BUILD}/${CMAKE_BUILD_TYPE}:${LIBDIR_BUILD}/gnucash/${CMAKE_BUILD_TYPE}")
+      SET(_GNC_MODULE_PATH  "")
+      SET(_GUILE_LD_LIBRARY_PATH ${_GNC_MODULE_PATH})
+    ENDIF()
+    IF (__DEBUG)
+      MESSAGE("  ")
+      MESSAGE("   GUILE_LOAD_PATH: ${_GUILE_LOAD_PATH}")
+      MESSAGE("   GUILE_LOAD_COMPILED_PATH: ${_GUILE_LOAD_COMPILED_PATH}")
+      MESSAGE("   GUILE_LD_LIBRARY_PATH: ${_GUILE_LD_LIBRARY_PATH}")
+      MESSAGE("   GNC_MODULE_PATH: ${_GNC_MODULE_PATH}")
+    ENDIF(__DEBUG)
+    SET(_TARGET_FILES "")
+
+    FOREACH(source_file ${_SOURCE_FILES})
+      SET(guile_depends ${_GUILE_DEPENDS_IN})
+      GET_FILENAME_COMPONENT(basename ${source_file} NAME_WE)
+
+      SET(output_file ${basename}.go)
+      SET(_TMP_OUTPUT_DIR_IN ${_OUTPUT_DIR_IN})
+      IF (_TMP_OUTPUT_DIR_IN)
+        SET(output_file ${_OUTPUT_DIR_IN}/${basename}.go)
+      ENDIF()
+      IF(GNC_BUILD_AS_INSTALL)
+        SET(output_file ${_GUILE_CACHE_DIR}/${output_file})
+        LIST(APPEND _TARGET_FILES ${output_file})
+      ELSE()
+        LIST(APPEND _TARGET_FILES ${CMAKE_CURRENT_BINARY_DIR}/${output_file})
+      ENDIF()
+
+      SET(source_file_abs_path ${CMAKE_CURRENT_SOURCE_DIR}/${source_file})
+      IF (IS_ABSOLUTE ${source_file})
+        SET(source_file_abs_path ${source_file})
+      ENDIF()
+      IF (__DEBUG)
+        MESSAGE("ADD_CUSTOM_COMMAND: output = ${output_file}")
+      ENDIF()
+      ADD_CUSTOM_COMMAND(
+        OUTPUT ${output_file}
+        COMMAND ${CMAKE_COMMAND} -E env
+           GNC_UNINSTALLED=${_GNC_UNINSTALLED}
+           GNC_BUILDDIR=${CMAKE_BINARY_DIR}
+           #DYLD_FALLBACK_LIBRARY_PATH=${Boost_LIBRARY_DIRS} # this is hack for OS X
+           LD_LIBRARY_PATH="${LIBDIR_BUILD}:${LIBDIR_BUILD}/gnucash:${_GUILE_LD_LIBRARY_PATH}"
+           DYLD_LIBRARY_PATH="${LIBDIR_BUILD}:${LIBDIR_BUILD}/gnucash:${_GUILE_LD_LIBRARY_PATH}"
+           GUILE_LOAD_PATH=${_GUILE_LOAD_PATH}
+           GUILE_LOAD_COMPILED_PATH=${_GUILE_LOAD_COMPILED_PATH}
+           #GNC_MODULE_PATH=${_GNC_MODULE_PATH}
+           GNC_MODULE_PATH="${LIBDIR_BUILD}:${LIBDIR_BUILD}/gnucash:${GNC_MODULE_PATH}"
+           ${GUILE_EXECUTABLE} -e '\(@@ \(guild\) main\)' -s ${GUILD_EXECUTABLE} compile -o ${output_file} ${source_file_abs_path}
+        DEPENDS ${guile_depends}
+        MAIN_DEPENDENCY ${source_file_abs_path}
+      )
+    ENDFOREACH(source_file)
+    IF (__DEBUG)
+      MESSAGE("TARGET_FILES are ${_TARGET_FILES}")
+    ENDIF(__DEBUG)
+    ADD_CUSTOM_TARGET(${_TARGET} ALL DEPENDS ${_TARGET_FILES})
+    INSTALL(FILES ${_TARGET_FILES} DESTINATION ${SCHEME_INSTALLED_CACHE_DIR}/${_OUTPUT_DIR_IN})
+
+  ENDIF(HAVE_GUILE2)
+  INSTALL(FILES ${_SOURCE_FILES} DESTINATION ${SCHEME_INSTALLED_SOURCE_DIR}/${_OUTPUT_DIR_IN})
+ENDMACRO(GNC_ADD_SCHEME_TARGETS)
diff --git a/src/cmake_modules/GncConfigure.cmake b/src/cmake_modules/GncConfigure.cmake
new file mode 100644
index 0000000..8643e8a
--- /dev/null
+++ b/src/cmake_modules/GncConfigure.cmake
@@ -0,0 +1,42 @@
+
+MACRO (GNC_CONFIGURE _INPUT _OUTPUT)
+  FILE(READ ${_INPUT} FILE_CONTENTS_IN_IN)
+  SET(FILE_CONTENTS_IN "${FILE_CONTENTS_IN_IN}")
+  STRING(REGEX REPLACE "@-|-@" "@" _TMP2 "${FILE_CONTENTS_IN}")
+  STRING(CONFIGURE "${_TMP2}" FILE_CONTENTS @ONLY)
+  SET(_OUTPUT_FILE ${_OUTPUT})
+  IF (NOT IS_ABSOLUTE ${_OUTPUT})
+    SET(_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT})
+  ENDIF()
+  FILE(WRITE ${_OUTPUT_FILE} "${FILE_CONTENTS}")
+ENDMACRO()
+
+
+MACRO (GNC_CONFIGURE2 _INPUT _OUTPUT)
+
+  SET(_TMPDIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
+  FILE(READ ${_INPUT} FILE_CONTENTS_IN_IN)
+  SET(FILE_CONTENTS_IN "${FILE_CONTENTS_IN_IN}")
+  STRING(REGEX REPLACE "@-|-@" "@" _TMP2 "${FILE_CONTENTS_IN}")
+  FILE(WRITE ${_TMPDIR}/${_INPUT}.tmp "${_TMP2}")
+
+  FILE(WRITE ${_TMPDIR}/${_INPUT}.cmake
+    "SET(PERL ${PERL_EXECUTABLE})
+     SET(VERSION ${VERSION})
+     SET(GNC_HELPDIR ${GNC_HELPDIR})
+     SET(GETTEXT_PACKAGE ${GETTEXT_PACKAGE})
+     CONFIGURE_FILE(\${SRC} \${DST} @ONLY)")
+
+  SET(_OUTPUT_FILE ${_OUTPUT})
+  IF (NOT IS_ABSOLUTE ${_OUTPUT})
+    SET(_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT})
+  ENDIF()
+
+  ADD_CUSTOM_COMMAND(
+    OUTPUT ${_OUTPUT_FILE}
+    COMMAND ${CMAKE_COMMAND} -D SRC=${_TMPDIR}/${_INPUT}.tmp
+                             -D DST=${_OUTPUT_FILE}
+                             -P ${_TMPDIR}/${_INPUT}.cmake
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_INPUT}
+  )
+ENDMACRO()
\ No newline at end of file
diff --git a/src/cmake_modules/GncFindPkgConfig.cmake b/src/cmake_modules/GncFindPkgConfig.cmake
new file mode 100644
index 0000000..f79316e
--- /dev/null
+++ b/src/cmake_modules/GncFindPkgConfig.cmake
@@ -0,0 +1,248 @@
+function (pkg_get_variable result pkg variable)
+  _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
+  set("${result}"
+          "${prefix_result}"
+          PARENT_SCOPE)
+endfunction ()
+
+
+macro(_gnc_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cmake_environment_path _prefix)
+  _pkgconfig_unset(${_prefix}_FOUND)
+  _pkgconfig_unset(${_prefix}_VERSION)
+  _pkgconfig_unset(${_prefix}_PREFIX)
+  _pkgconfig_unset(${_prefix}_INCLUDEDIR)
+  _pkgconfig_unset(${_prefix}_LIBDIR)
+  _pkgconfig_unset(${_prefix}_LIBS)
+  _pkgconfig_unset(${_prefix}_LIBS_L)
+  _pkgconfig_unset(${_prefix}_LIBS_PATHS)
+  _pkgconfig_unset(${_prefix}_LIBS_OTHER)
+  _pkgconfig_unset(${_prefix}_CFLAGS)
+  _pkgconfig_unset(${_prefix}_CFLAGS_I)
+  _pkgconfig_unset(${_prefix}_CFLAGS_OTHER)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBDIR)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS_L)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER)
+  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS)
+  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I)
+  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER)
+
+  # create a better addressable variable of the modules and calculate its size
+  set(_pkg_check_modules_list ${ARGN})
+  list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt)
+
+  if(PKG_CONFIG_EXECUTABLE)
+    # give out status message telling checked module
+    if (NOT ${_is_silent})
+      if (_pkg_check_modules_cnt EQUAL 1)
+        message(STATUS "Checking for module '${_pkg_check_modules_list}'")
+      else()
+        message(STATUS "Checking for modules '${_pkg_check_modules_list}'")
+      endif()
+    endif()
+
+    set(_pkg_check_modules_packages)
+    set(_pkg_check_modules_failed)
+
+    set(_extra_paths)
+
+    if(NOT _no_cmake_path)
+      _pkgconfig_add_extra_path(_extra_paths CMAKE_PREFIX_PATH)
+      _pkgconfig_add_extra_path(_extra_paths CMAKE_FRAMEWORK_PATH)
+      _pkgconfig_add_extra_path(_extra_paths CMAKE_APPBUNDLE_PATH)
+    endif()
+
+    if(NOT _no_cmake_environment_path)
+      _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_PREFIX_PATH)
+      _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_FRAMEWORK_PATH)
+      _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_APPBUNDLE_PATH)
+    endif()
+
+    if(NOT "${_extra_paths}" STREQUAL "")
+      # Save the PKG_CONFIG_PATH environment variable, and add paths
+      # from the CMAKE_PREFIX_PATH variables
+      set(_pkgconfig_path_old $ENV{PKG_CONFIG_PATH})
+      set(_pkgconfig_path ${_pkgconfig_path_old})
+      if(NOT "${_pkgconfig_path}" STREQUAL "")
+        file(TO_CMAKE_PATH "${_pkgconfig_path}" _pkgconfig_path)
+      endif()
+
+      # Create a list of the possible pkgconfig subfolder (depending on
+      # the system
+      set(_lib_dirs)
+      if(NOT DEFINED CMAKE_SYSTEM_NAME
+          OR (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$"
+              AND NOT CMAKE_CROSSCOMPILING))
+        if(EXISTS "/etc/debian_version") # is this a debian system ?
+          if(CMAKE_LIBRARY_ARCHITECTURE)
+            list(APPEND _lib_dirs "lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig")
+          endif()
+        else()
+          # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property
+          get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
+          if(uselib64)
+            list(APPEND _lib_dirs "lib64/pkgconfig")
+          endif()
+        endif()
+      endif()
+      list(APPEND _lib_dirs "lib/pkgconfig")
+
+      # Check if directories exist and eventually append them to the
+      # pkgconfig path list
+      foreach(_prefix_dir ${_extra_paths})
+        foreach(_lib_dir ${_lib_dirs})
+          if(EXISTS "${_prefix_dir}/${_lib_dir}")
+            list(APPEND _pkgconfig_path "${_prefix_dir}/${_lib_dir}")
+            list(REMOVE_DUPLICATES _pkgconfig_path)
+          endif()
+        endforeach()
+      endforeach()
+
+      # Prepare and set the environment variable
+      if(NOT "${_pkgconfig_path}" STREQUAL "")
+        # remove empty values from the list
+        list(REMOVE_ITEM _pkgconfig_path "")
+        file(TO_NATIVE_PATH "${_pkgconfig_path}" _pkgconfig_path)
+        if(UNIX)
+          string(REPLACE ";" ":" _pkgconfig_path "${_pkgconfig_path}")
+          string(REPLACE "\\ " " " _pkgconfig_path "${_pkgconfig_path}")
+        endif()
+        set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path}")
+      endif()
+
+      # Unset variables
+      unset(_lib_dirs)
+      unset(_pkgconfig_path)
+    endif()
+
+    # iterate through module list and check whether they exist and match the required version
+    foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list})
+      set(_pkg_check_modules_exist_query)
+
+      # check whether version is given
+      if (_pkg_check_modules_pkg MATCHES "(.*[^><])(>=|=|<=)(.*)")
+        set(_pkg_check_modules_pkg_name "${CMAKE_MATCH_1}")
+        set(_pkg_check_modules_pkg_op "${CMAKE_MATCH_2}")
+        set(_pkg_check_modules_pkg_ver "${CMAKE_MATCH_3}")
+      else()
+        set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
+        set(_pkg_check_modules_pkg_op)
+        set(_pkg_check_modules_pkg_ver)
+      endif()
+
+      # handle the operands
+      if (_pkg_check_modules_pkg_op STREQUAL ">=")
+        list(APPEND _pkg_check_modules_exist_query --atleast-version)
+      endif()
+
+      if (_pkg_check_modules_pkg_op STREQUAL "=")
+        list(APPEND _pkg_check_modules_exist_query --exact-version)
+      endif()
+
+      if (_pkg_check_modules_pkg_op STREQUAL "<=")
+        list(APPEND _pkg_check_modules_exist_query --max-version)
+      endif()
+
+      # create the final query which is of the format:
+      # * --atleast-version <version> <pkg-name>
+      # * --exact-version <version> <pkg-name>
+      # * --max-version <version> <pkg-name>
+      # * --exists <pkg-name>
+      if (_pkg_check_modules_pkg_op)
+        list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}")
+      else()
+        list(APPEND _pkg_check_modules_exist_query --exists)
+      endif()
+
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX)
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR)
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR)
+
+      list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}")
+      list(APPEND _pkg_check_modules_packages    "${_pkg_check_modules_pkg_name}")
+
+      # execute the query
+      execute_process(
+        COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
+        RESULT_VARIABLE _pkgconfig_retval)
+
+      # evaluate result and tell failures
+      if (_pkgconfig_retval)
+        if(NOT ${_is_silent})
+          message(STATUS "  Package '${_pkg_check_modules_pkg}' not found")
+        endif()
+
+        set(_pkg_check_modules_failed 1)
+      endif()
+    endforeach()
+
+    if(_pkg_check_modules_failed)
+      # fail when requested
+      if (${_is_required})
+        message(FATAL_ERROR "A required package was not found")
+      endif ()
+    else()
+      # when we are here, we checked whether requested modules
+      # exist. Now, go through them and set variables
+
+      _pkgconfig_set(${_prefix}_FOUND 1)
+      list(LENGTH _pkg_check_modules_packages pkg_count)
+
+      # iterate through all modules again and set individual variables
+      foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages})
+        # handle case when there is only one package required
+        if (pkg_count EQUAL 1)
+          set(_pkg_check_prefix "${_prefix}")
+        else()
+          set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}")
+        endif()
+
+        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION    ""   --modversion )
+        pkg_get_variable("${_pkg_check_prefix}_PREFIX" ${_pkg_check_modules_pkg} "prefix")
+        pkg_get_variable("${_pkg_check_prefix}_INCLUDEDIR" ${_pkg_check_modules_pkg} "includedir")
+        pkg_get_variable("${_pkg_check_prefix}_LIBDIR" ${_pkg_check_modules_pkg} "libdir")
+
+        if (NOT ${_is_silent})
+          message(STATUS "  Found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}")
+        endif ()
+      endforeach()
+
+      # set variables which are combined for multiple modules
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES           "(^| )-l" --libs-only-l )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS        "(^| )-L" --libs-only-L )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS             ""        --libs )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER       ""        --libs-only-other )
+
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS        "(^| )-I" --cflags-only-I )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS              ""        --cflags )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER        ""        --cflags-only-other )
+    endif()
+
+    if(NOT "${_extra_paths}" STREQUAL "")
+      # Restore the environment variable
+      set(ENV{PKG_CONFIG_PATH} ${_pkgconfig_path})
+    endif()
+
+    unset(_extra_paths)
+    unset(_pkgconfig_path_old)
+  else()
+    if (${_is_required})
+      message(SEND_ERROR "pkg-config tool not found")
+    endif ()
+  endif()
+endmacro()
+
+
+
+macro(gnc_pkg_check_modules _prefix _module0)
+  # check cached value
+  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
+    _pkgconfig_parse_options   (_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path "${_module0}" ${ARGN})
+    _gnc_pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" ${_no_cmake_path} ${_no_cmake_environment_path} "${_prefix}" ${_pkg_modules})
+
+    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
+  endif()
+endmacro()
+
diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in
index 8876d33..c4754cb 100644
--- a/src/config.h.cmake.in
+++ b/src/config.h.cmake.in
@@ -1,79 +1,343 @@
 /* Template file for processing by the cmake command CONFIGURE_FILE */
 
-#define PACKAGE "@PROJECT_NAME@"
-#define GNUCASH_MAJOR_VERSION @CUTECASH_VERSION_MAJOR@
-#define GNUCASH_MICRO_VERSION @CUTECASH_VERSION_MINOR@
-#define GNUCASH_MINOR_VERSION @CUTECASH_VERSION_PATCH@
-#define GNUCASH_NANO_VERSION @CUTECASH_VERSION_NANO@
-#define GNUCASH_RESAVE_VERSION @GNUCASH_RESAVE_VERSION@
-#define VERSION "@CUTECASH_VERSION_MAJOR at .@CUTECASH_VERSION_MINOR at .@CUTECASH_VERSION_PATCH@"
 
-/* Definitions for all OS */
-#define HAVE_LIBQOF /**/
-#define HAVE_TOWUPPER 1
-#define QOF_DISABLE_DEPRECATED 1
-#define GNC_NO_LOADABLE_MODULES 1
+/* Define if building universal (internal helper macro) */
+#cmakedefine AC_APPLE_UNIVERSAL_BUILD
 
-/* WIN32 */
-#cmakedefine HAVE_HTMLHELPW 1
-#cmakedefine OS_WIN32 1
+/* Include pthread support for binary relocation? */
+#cmakedefine BR_PTHREAD 1
+
+/* Enable debug memory */
+#cmakedefine01 DEBUG_MEMORY
+
+/* Use binary relocation? */
+#cmakedefine ENABLE_BINRELOC
+
+/* always defined to indicate that i18n is enabled */
+#cmakedefine ENABLE_NLS 1
+
+/* Don't use deprecated gdk functions */
+#cmakedefine GDK_DISABLE_DEPRECATED 1
+
+/* Don't use deprecated gdk-pixbuf functions */
+#cmakedefine GDK_PIXBUF_DISABLE_DEPRECATED 1
 
-/* Unix or Mingw or Win32 */
+/* Using GDK Quartz (not X11) */
+#cmakedefine GDK_QUARTZ
+
+/* GetText version number */
 #define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@"
+
+/* Cocoa/Nexstep/GnuStep framework */
+#cmakedefine GNC_PLATFORM_COCOA 1
+
+/* Darwin-based OS */
+#cmakedefine GNC_PLATFORM_DARWIN 1
+
+/* Running on OSX, either X11 or Quartz */
+#cmakedefine GNC_PLATFORM_OSX 1
+
+/* POSIX-compliant OS */
+#cmakedefine GNC_PLATFORM_POSIX 1
+
+/* Microsoft Windows OS */
+#cmakedefine GNC_PLATFORM_WINDOWS 1
+
+/* using GNOME */
+#cmakedefine GNOME
+
+/* Don't use deprecated gnome functions */
+#cmakedefine GNOME_DISABLE_DEPRECATED
+
+/* Most recent stable GnuCash series */
+#define GNUCASH_LATEST_STABLE_SERIES "@GNUCASH_LATEST_STABLE_SERIES@"
+
+/* GnuCash Major version number */
+#define GNUCASH_MAJOR_VERSION @GNUCASH_MAJOR_VERSION@
+
+/* GnuCash Micro version number */
+#define GNUCASH_MICRO_VERSION @GNUCASH_MICRO_VERSION@
+
+/* GnuCash Minor version number */
+#define GNUCASH_MINOR_VERSION @GNUCASH_MINOR_VERSION@
+
+/* GnuCash Nano version number */
+#define GNUCASH_NANO_VERSION @GNUCASH_NANO_VERSION@
+
+/* GnuCash earliest compatible databaseversion number */
+#define GNUCASH_RESAVE_VERSION @GNUCASH_RESAVE_VERSION@
+
+/* Don't use deprecated gtk functions */
+#cmakedefine GTK_DISABLE_DEPRECATED 1
+
+/* Don't use deprecated glib functions */
+#cmakedefine G_DISABLE_DEPRECATED 1
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
 #cmakedefine HAVE_BIND_TEXTDOMAIN_CODESET 1
+
+/* define if the Boost library is available */
+#cmakedefine HAVE_BOOST
+
+/* Define to 1 if you have the `chown' function. */
 #cmakedefine HAVE_CHOWN 1
+
+/* define if the compiler supports basic C++11 syntax */
+#cmakedefine HAVE_CXX11 1
+
+/* Define to 1 if you have the <dbi/dbi.h> header file. */
+#cmakedefine HAVE_DBI_DBI_H 1
+
+/* Define to 1 if you have the `dcgettext' function. */
 #cmakedefine HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dirent.h> header file. */
 #cmakedefine HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the `dlerror' function. */
 #cmakedefine HAVE_DLERROR 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
 #cmakedefine HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `dlsym' function. */
+#cmakedefine HAVE_DLSYM 1
+
+/* Define to 1 if you have the <dl.h> header file. */
+#cmakedefine HAVE_DL_H 1
+
+/* Define to 1 if you have the `gethostid' function. */
 #cmakedefine HAVE_GETHOSTID 1
+
+/* Define to 1 if you have the `gethostname' function. */
 #cmakedefine HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the `getppid' function. */
 #cmakedefine HAVE_GETPPID 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
 #cmakedefine HAVE_GETTEXT 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
 #cmakedefine HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getuid' function. */
 #cmakedefine HAVE_GETUID 1
+
+/* Configure gthread deprecations */
+#cmakedefine HAVE_GLIB_2_32 1
+
+/* Configure g_type_init deprecation */
+#cmakedefine HAVE_GLIB_2_36 1
+
+/* Configure leading quote around assertions */
+#cmakedefine HAVE_GLIB_2_38 1
+
+/* Define to 1 if you have the <glob.h> header file. */
 #cmakedefine HAVE_GLOB_H 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
 #cmakedefine HAVE_GMTIME_R 1
-#cmakedefine HAVE_GUILE 1
+
+/* System has gnome-keyring 0.6 or better */
+#cmakedefine HAVE_GNOME_KEYRING 1
+
+/* System has HtmlHelpW */
+#cmakedefine HAVE_HTMLHELPW 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
 #cmakedefine HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <ktoblzcheck.h> header file. */
+#cmakedefine HAVE_KTOBLZCHECK_H 1
+
+/* Define if you have <langinfo.h> and nl_langinfo(D_FMT). */
 #cmakedefine HAVE_LANGINFO_D_FMT 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
 #cmakedefine HAVE_LC_MESSAGES 1
-#cmakedefine HAVE_LIBM 1
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
 #cmakedefine HAVE_LIBPTHREAD 1
+
+/* System has libsecret 0.18 or better */
+#cmakedefine HAVE_LIBSECRET 1
+
+/* Define to 1 if you have the <limits.h> header file. */
 #cmakedefine HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the `link' function. */
 #cmakedefine HAVE_LINK 1
+
+/* Define to 1 if you have the <locale.h> header file. */
 #cmakedefine HAVE_LOCALE_H 1
-#cmakedefine HAVE_LOCALTIME_R 1
+
+/* Define to 1 if you have the <ltdl.h> header file. */
+#cmakedefine HAVE_LTDL_H 1
+
+/* Define to 1 if you have the <mcheck.h> header file. */
+#cmakedefine HAVE_MCHECK_H 1
+
+/* Define to 1 if you have the `memcpy' function. */
 #cmakedefine HAVE_MEMCPY 1
+
+/* Define to 1 if you have the <memory.h> header file. */
 #cmakedefine HAVE_MEMORY_H 1
+
+/* System has an OS X Key chain */
+#cmakedefine HAVE_OSX_KEYCHAIN 1
+
+/* Define to 1 if you have the <pow.h> header file. */
+#cmakedefine HAVE_POW_H 1
+
+/* Define to 1 if you have the `pthread_mutex_init' function. */
 #cmakedefine HAVE_PTHREAD_MUTEX_INIT 1
+
+/* Have PTHREAD_PRIO_INHERIT. */
+#cmakedefine HAVE_PTHREAD_PRIO_INHERIT 1
+
+/* Define to 1 if you have the `putenv' function. */
 #cmakedefine HAVE_PUTENV 1
+
+/* If available, contains the Python version number currently in use. */
+#cmakedefine HAVE_PYTHON 1
+
+/* Define if scanf supports %I64d conversions. */
 #cmakedefine HAVE_SCANF_I64D 1
+
+/* Define if scanf supports %lld conversions. */
 #cmakedefine HAVE_SCANF_LLD 1
+
+/* Define if scanf supports %qd conversions. */
+#cmakedefine HAVE_SCANF_QD 1
+
+/* Define to 1 if you have the `setenv' function. */
 #cmakedefine HAVE_SETENV 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
 #cmakedefine HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
 #cmakedefine HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
 #cmakedefine HAVE_STPCPY 1
+
+/* Define to 1 if you have the `strfmon' function. */
+#cmakedefine HAVE_STRFMON 1
+
+/* Define to 1 if you have the <strings.h> header file. */
 #cmakedefine HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
 #cmakedefine HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strptime' function. */
 #cmakedefine HAVE_STRPTIME 1
+
+/* Define if you have the tm_gmtoff member of struct tm. */
 #cmakedefine HAVE_STRUCT_TM_GMTOFF 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
 #cmakedefine HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/times.h> header file. */
 #cmakedefine HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
 #cmakedefine HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
 #cmakedefine HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
 #cmakedefine HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `timegm' function. */
 #cmakedefine HAVE_TIMEGM 1
+
+/* Define to 1 if you have the `towupper' function. */
+#cmakedefine HAVE_TOWUPPER 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
 #cmakedefine HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <utmp.h> header file. */
 #cmakedefine HAVE_UTMP_H 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
 #cmakedefine HAVE_WCTYPE_H 1
+
+/* webkit_web_frame_print_full exists */
+#cmakedefine HAVE_WEBKIT_WEB_FRAME_PRINT_FULL 1
+
+/* Define to 1 if you have the `webkit_web_view_load_uri' function. */
+#cmakedefine HAVE_WEBKIT_WEB_VIEW_LOAD_URI 1
+
+/* Define to 1 if you have the <X11/Xlib.h> header file. */
 #cmakedefine HAVE_X11_XLIB_H 1
 
-#cmakedefine GNC_PLATFORM_POSIX 1
+/* Define to 1 if you have the file `/usr/include/gmock/gmock.h'. */
+#cmakedefine HAVE__USR_INCLUDE_GMOCK_GMOCK_H
+
+/* Define to 1 if you have the file `/usr/include/gtest/gtest.h'. */
+#cmakedefine HAVE__USR_INCLUDE_GTEST_GTEST_H 1
+
+/* Define to 1 if you have the file `/usr/src/gmock/gmock-all.cc'. */
+#cmakedefine HAVE__USR_SRC_GMOCK_GMOCK_ALL_CC 1
+
+/* Define to 1 if you have the file `/usr/src/gmock/src/gmock-all.cc'. */
+#cmakedefine HAVE__USR_SRC_GMOCK_SRC_GMOCK_ALL_CC 1
+
+/* Define to 1 if you have the file `/usr/src/gtest/gtest-main.cc'. */
+#cmakedefine HAVE__USR_SRC_GTEST_GTEST_MAIN_CC 1
+
+/* Define to 1 if you have the file `/usr/src/gtest/src/gtest-all.cc'. */
+#cmakedefine HAVE__USR_SRC_GTEST_SRC_GTEST_ALL_CC 1
+
+/* Enable the experimental locale-specific tax categories */
+#cmakedefine LOCALE_SPECIFIC_TAX 1
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+#define PACKAGE "@PACKAGE@"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "@PACKAGE_NAME@"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "@PACKAGE_STRING@"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "@PACKAGE_TARNAME@"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "@PACKAGE_URL@"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "@PACKAGE_VERSION@"
+
+/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+#cmakedefine PTHREAD_CREATE_JOINABLE 1
+
+/* Name of package containing qt3-wizard. */
+#define QT3_WIZARD_PACKAGE "aqbanking"
+
+/* We are not using Register2 */
+#cmakedefine REGISTER2_ENABLED 1
 
 /* Define to 1 if you have the ANSI C header files. */
 #cmakedefine STDC_HEADERS 1
 
+/* We are using EFence */
+#cmakedefine USE_EFENCE 1
+
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 #cmakedefine _ALL_SOURCE 1
@@ -95,8 +359,34 @@
 #cmakedefine __EXTENSIONS__ 1
 #endif
 
+
+/* Version number of package */
+#define VERSION "@VERSION@"
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
 #if defined AC_APPLE_UNIVERSAL_BUILD
 # if defined __BIG_ENDIAN__
-#cmakedefine WORDS_BIGENDIAN 1
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#cmakedefine WORDS_BIGENDIAN
 # endif
 #endif
+
+/* Define to 1 if on MINIX. */
+#cmakedefine _MINIX 1
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#cmakedefine _POSIX_1_SOURCE 1
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#cmakedefine _POSIX_SOURCE 1
+
+/* Definitions for all OS */
+/* From cutecash */
+//#define HAVE_LIBQOF /**/
+//#define QOF_DISABLE_DEPRECATED 1
+//#define GNC_NO_LOADABLE_MODULES 1
diff --git a/src/core-utils/CMakeLists.txt b/src/core-utils/CMakeLists.txt
index b9c2d50..55eab99 100644
--- a/src/core-utils/CMakeLists.txt
+++ b/src/core-utils/CMakeLists.txt
@@ -1,25 +1,14 @@
 # CMakeLists.txt for src/core-utils
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.core-utils\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}/..) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}/../libqof/qof) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}) # when building swig-core-utils.c
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}) # for gncla-dir.h, gnc-version.h
 
 # 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)
 
-SET (libgnc_core_utils_SOURCES
+SET (core_utils_SOURCES
   binreloc.c
   gnc-prefs.c
+  gnc-environment.c
   gnc-filepath-utils.c
   gnc-features.c
   gnc-gdate-utils.c
@@ -34,44 +23,75 @@ SET (libgnc_core_utils_SOURCES
 )
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_core_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${core_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
 # Command to generate the swig-runtime.h header
 ADD_CUSTOM_COMMAND (
-  OUTPUT ${SWIG_RUNTIME_H}
-  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
-  COMMAND ${SWIG_EXECUTABLE} -guile -external-runtime ${SWIG_RUNTIME_H}
+ OUTPUT ${SWIG_RUNTIME_H}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
+ COMMAND ${SWIG_EXECUTABLE} -guile -external-runtime ${SWIG_RUNTIME_H}
 )
 
 # Add dependency on swig-runtime.h
 SET_SOURCE_FILES_PROPERTIES (gnc-guile-utils.c PROPERTIES OBJECT_DEPENDS ${SWIG_RUNTIME_H})
 
-# Workaround to create a very simple gncla-dir.h file
-FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR}/gncla-dir.h "
-#define PREFIX \"${CMAKE_INSTALL_PREFIX}\"
-#define DATADIR \"${CMAKE_INSTALL_PREFIX}/share\"
-#define SYSCONFDIR \"${CMAKE_INSTALL_PREFIX}/etc\"
-#define LIBDIR \"${CMAKE_INSTALL_PREFIX}/lib\"
-#define BINDIR \"${CMAKE_INSTALL_PREFIX}/bin\"
-#define LOCALE_DATADIRNAME \"share\"
-")
+SET(prefix ${CMAKE_INSTALL_PREFIX})
+SET(datadir ${DATADIR})
+SET(bindir ${BINDIR})
+SET(libdir ${LIBDIR})
+SET(sysconfdir ${SYSCONFDIR})
+GNC_CONFIGURE(gncla-dir.h.in gncla-dir.h)
+
+### Create gnc-version.h ###
 
-# Workaround to create a simple gnc-version.h file
-FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR}/gnc-version.h "
-/* Autogenerated. Do not change. */
+SET (GNC_VERSION_H_IN
+"/* Autogenerated. Do not change. */
 #ifndef GNC_VERSION_H
 #define GNC_VERSION_H
 
-#define GNUCASH_SVN 1
-#define GNUCASH_BUILD_DATE \"2010-XX-XX\"
-#define GNUCASH_SVN_REV \"xxxxxxx\"
+#define GNUCASH_SCM \"git\"
+#define GNUCASH_BUILD_DATE \"@GNUCASH_BUILD_DATE@\"
+#include \"gnc-vcs-info.h\"
 #endif
 ")
 
-SET (libgnc_core_utils_HEADERS
+STRING(TIMESTAMP GNUCASH_BUILD_DATE "%Y-%m-%d")
+
+STRING(CONFIGURE ${GNC_VERSION_H_IN} GNC_VERSION_H_CONTENT)
+
+FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR}/gnc-version.h ${GNC_VERSION_H_CONTENT})
+
+### Create gnc-vcs-info.h
+# The meta-cmake gymnastics here come from https://cmake.org/pipermail/cmake/2010-July/038015.html
+
+FIND_PACKAGE(Git)
+
+FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h.in
+   "/* Autogenerated. Do not change. */\n#define GNUCASH_SCM_REV \"@GNUCASH_SCM_REV@\"\n"
+)
+
+FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.cmake
+  "EXECUTE_PROCESS(
+    COMMAND ${GIT_EXECUTABLE} --git-dir ${CMAKE_SOURCE_DIR}/.git log -1 --pretty=format:%h HEAD
+    OUTPUT_VARIABLE GNUCASH_SCM_REV
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
+  CONFIGURE_FILE(\${SRC} \${DST} @ONLY)
+")
+
+ADD_CUSTOM_TARGET(gnc-vcs-info ALL
+  ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h.in
+                   -D DST=${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h
+                   -P ${CMAKE_CURRENT_BINARY_DIR}/version.cmake
+)
+
+### Compile library
+
+SET(core_utils_noinst_HEADERS
   binreloc.h
   gnc-prefs.h
   gnc-prefs-p.h
+  gnc-environment.h
   gnc-features.h
   gnc-filepath-utils.h
   gnc-gdate-utils.h
@@ -84,7 +104,52 @@ SET (libgnc_core_utils_HEADERS
   gnc-uri-utils.h
 )
 
-ADD_LIBRARY	(core-utils
-  ${libgnc_core_utils_SOURCES}
-  ${libgnc_core_utils_HEADERS}
-  )
+ADD_LIBRARY	(gnc-core-utils
+  ${core_utils_SOURCES}
+  ${core_utils_noinst_HEADERS}
+)
+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_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}
+)
+
+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)
+# No headers to install
+
+# Scheme
+
+SET (core_utils_SCHEME core-utils.scm)
+
+SET(GUILE_OUTPUT_DIR   gnucash)
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    src/core-utils)
+SET(GUILE_LIBRARY_DIRS src/core-utils)
+SET(GUILE_DEPENDS      gnc-core-utils)
+
+GNC_ADD_SCHEME_TARGETS(scm-core-utils
+    "${core_utils_SCHEME}"
+    ${GUILE_OUTPUT_DIR}
+    "${GUILE_MODULES}"
+    "${GUILE_LOAD_DIRS}"
+    "${GUILE_LIBRARY_DIRS}"
+    "${GUILE_DEPENDS}"
+    FALSE
+)
+
diff --git a/src/engine/CMakeLists.txt b/src/engine/CMakeLists.txt
index a193b09..a1efcda 100644
--- a/src/engine/CMakeLists.txt
+++ b/src/engine/CMakeLists.txt
@@ -1,21 +1,20 @@
 # CMakeLists.txt for src/engine
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.engine\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for pow.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/gnc-module) # for gnc-module.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}) # for <Account.h>
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}) # for iso-4217-currencies.c
-
-SET (libgncmod_engine_HEADERS
+SET(engine_noinst_HEADERS
+  AccountP.h
+  ScrubP.h
+  SplitP.h
+  SX-book.h
+  SX-ttinfo.h
+  TransactionP.h
+  gnc-hooks-scm.h
+  gnc-lot.h
+  gnc-lot-p.h
+  gnc-pricedb-p.h
+  policy-p.h
+)
+
+SET (engine_HEADERS
   Account.h
   FreqSpec.h
   Recurrence.h
@@ -25,6 +24,7 @@ SET (libgncmod_engine_HEADERS
   Query.h
   Scrub.h
   Scrub2.h
+  ScrubBusiness.h
   Scrub3.h
   Split.h
   TransLog.h
@@ -32,6 +32,7 @@ SET (libgncmod_engine_HEADERS
   cap-gains.h
   cashobjects.h
   engine-helpers.h
+  engine-helpers-guile.h
   glib-helpers.h
   gnc-budget.h
   gnc-commodity.h
@@ -54,6 +55,7 @@ SET (libgncmod_engine_HEADERS
   gncEmployeeP.h
   gncEntry.h
   gncEntryP.h
+  gncIDSearch.h
   gncInvoice.h
   gncInvoiceP.h
   gncJob.h
@@ -70,7 +72,7 @@ SET (libgncmod_engine_HEADERS
 
 # 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 ${libgncmod_engine_HEADERS})
+GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS})
 
 # Command to generate the iso-4217-currencies.c file
 SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c)
@@ -78,15 +80,18 @@ ADD_CUSTOM_COMMAND (
   OUTPUT ${ISO_4217_C}
   DEPENDS iso-4217-currencies.xml iso-currencies-to-c.xsl
   COMMAND
-    ${XSLTPROC} -o ${ISO_4217_C} "${CMAKE_CURRENT_SOURCE_DIR}/iso-currencies-to-c.xsl" "${CMAKE_CURRENT_SOURCE_DIR}/iso-4217-currencies.xml"
+    ${LIBXSLT_XSLTPROC_EXECUTABLE} -o ${ISO_4217_C} "${CMAKE_CURRENT_SOURCE_DIR}/iso-currencies-to-c.xsl" "${CMAKE_CURRENT_SOURCE_DIR}/iso-4217-currencies.xml"
 )
 # Add dependency on iso-4217-currencies.c
-SET_SOURCE_FILES_PROPERTIES (gnc-commodity.c PROPERTIES OBJECT_DEPENDS ${ISO_4217_C})
+SET_SOURCE_FILES_PROPERTIES (gnc-commodity.c PROPERTIES OBJECT_DEPENDS "${ISO_4217_C};${CONFIG_H}")
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${libgncmod_engine_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
 # Add dependency on swig-runtime.h
-SET_SOURCE_FILES_PROPERTIES (gnc-hooks.c engine-helpers.c kvp-scm.cpp glib-helpers.c PROPERTIES OBJECT_DEPENDS ${SWIG_RUNTIME_H})
+SET_SOURCE_FILES_PROPERTIES (gnc-hooks.c engine-helpers.c kvp-scm.cpp glib-helpers.c PROPERTIES OBJECT_DEPENDS "${CONFIG_H};${SWIG_RUNTIME_H}")
 
-SET (libgncmod_engine_SOURCES
+SET (engine_SOURCES
   Account.c
   Recurrence.c
   Query.c
@@ -96,6 +101,7 @@ SET (libgncmod_engine_SOURCES
   Scrub.c
   Scrub2.c
   Scrub3.c
+  ScrubBusiness.c
   Split.c
   TransLog.c
   Transaction.c
@@ -118,9 +124,11 @@ SET (libgncmod_engine_SOURCES
   gncAddress.c
   gncBillTerm.c
   gncBusGuile.c
+  gncBusiness.c
   gncCustomer.c
   gncEmployee.c
   gncEntry.c
+  gncIDSearch.c
   gncInvoice.c
   gncJob.c
   gncOrder.c
@@ -129,10 +137,74 @@ SET (libgncmod_engine_SOURCES
   gncVendor.c
 )
 
-# Add dependency on config.h
-#SET_SOURCE_FILES_PROPERTIES (${libgncmod_engine_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
-ADD_LIBRARY	(engine
-  ${libgncmod_engine_SOURCES}
-  ${libgncmod_engine_HEADERS}
-  )
+ADD_LIBRARY	(gncmod-engine
+  ${engine_SOURCES}
+  ${engine_HEADERS}
+  ${engine_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-engine gnc-core-utils gnc-module gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gncmod-engine PRIVATE -DG_LOG_DOMAIN=\"gnc.engine\")
+
+TARGET_INCLUDE_DIRECTORIES (gncmod-engine
+    PRIVATE ${CMAKE_CURRENT_BINARY_DIR} # for iso-4217-currencies.c
+    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+INSTALL(TARGETS gncmod-engine
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${engine_HEADERS} DESTINATION include/gnucash)
+
+# Scheme
+
+SET (engine_SCHEME_0
+    engine.scm
+    business-core.scm
+)
+
+SET (engine_SCHEME_1
+    commodity-table.scm
+    engine-interface.scm
+    engine-utilities.scm
+    gnc-numeric.scm
+)
+
+SET(BACKEND_DEPENDS gncmod-backend-xml-link)
+
+
+IF(WITH_SQL)
+  LIST(APPEND BACKEND_DEPENDS gncmod-backend-dbi-link)
+ENDIF(WITH_SQL)
+
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    src/gnc-module)
+SET(GUILE_LIBRARY_DIRS src/gnc-module)
+SET(GUILE_DEPENDS      ${BACKEND_DEPENDS} gnc-module gncmod-engine scm-gnc-module)
+
+
+GNC_ADD_SCHEME_TARGETS(scm-engine-0
+  "${engine_SCHEME_0}"
+  gnucash
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-engine-1
+  "${engine_SCHEME_1}"
+  ""
+  ""
+  ""
+  ""
+  "scm-engine-0;${GUILE_DEPENDS}"
+  FALSE
+)
+
+ADD_CUSTOM_TARGET(scm-engine ALL DEPENDS scm-engine-1 scm-engine-0)
\ No newline at end of file
diff --git a/src/gnc-module/CMakeLists.txt b/src/gnc-module/CMakeLists.txt
index be5ec37..d06f982 100644
--- a/src/gnc-module/CMakeLists.txt
+++ b/src/gnc-module/CMakeLists.txt
@@ -1,33 +1,59 @@
 # CMakeLists.txt for src/gnc-module
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.module\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}) # when building swig-gnc-module.c
-
 # 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)
 
-SET (libgnc_module_SOURCES
+SET (gnc_module_SOURCES
   gnc-module.c
   ${SWIG_GNC_MODULE_C}
 )
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_module_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${gnc_module_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
-SET (libgnc_module_HEADERS
+SET (gnc_module_HEADERS
   gnc-module.h
   gnc-module-api.h
 )
 
 ADD_LIBRARY	(gnc-module
-  ${libgnc_module_SOURCES}
-  ${libgnc_module_HEADERS}
-  )
+  ${gnc_module_SOURCES}
+  ${gnc_module_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gnc-module gnc-qof ${GUILE_LDFLAGS} ${GMODULE_LDFLAGS} ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gnc-module PRIVATE -DG_LOG_DOMAIN=\"gnc.module\")
+
+TARGET_INCLUDE_DIRECTORIES (gnc-module
+    PRIVATE ${GUILE_INCLUDE_DIRS}
+    PUBLIC  ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+INSTALL(TARGETS gnc-module
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${gnc_module_HEADERS} DESTINATION include/gnucash)
+
+# --- Compile Scheme file(s) ---
+
+SET (gnc_module_SCHEME gnc-module.scm)
+
+SET(GUILE_OUTPUT_DIR   gnucash)
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    "")
+SET(GUILE_LIBRARY_DIRS "")
+SET(GUILE_DEPENDS      gnc-module)
+
+GNC_ADD_SCHEME_TARGETS(scm-gnc-module
+  "${gnc_module_SCHEME}"
+  ${GUILE_OUTPUT_DIR} 
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
diff --git a/src/gnome-search/CMakeLists.txt b/src/gnome-search/CMakeLists.txt
new file mode 100644
index 0000000..bad46c5
--- /dev/null
+++ b/src/gnome-search/CMakeLists.txt
@@ -0,0 +1,60 @@
+
+SET (gnome_search_SOURCES
+  gncmod-gnome-search.c
+  gnc-general-search.c
+  dialog-search.c
+  search-account.c
+  search-boolean.c
+  search-core-type.c
+  search-core-utils.c
+  search-date.c
+  search-double.c
+  search-int64.c
+  search-numeric.c
+  search-reconciled.c
+  search-string.c
+)
+
+SET (gnome_search_HEADERS
+  dialog-search.h
+  gnc-general-search.h
+)
+
+SET (gnome_search_noinst_HEADERS
+  search-account.h
+  search-boolean.h
+  search-core-type.h
+  search-core-utils.h
+  search-date.h
+  search-double.h
+  search-int64.h
+  search-numeric.h
+  search-reconciled.h
+  search-string.h
+)  
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${gnome_search_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY (gncmod-gnome-search
+    ${gnome_search_SOURCES}
+    ${gnome_search_HEADERS}
+    ${gnome_search_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-gnome-search gnc-qof gncmod-gnome-utils ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-gnome-search PRIVATE -DG_LOG_DOMAIN=\"gnc.gui.search\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-gnome-search PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+INSTALL(TARGETS gncmod-gnome-search
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${gnome_search_HEADERS} DESTINATION include/gnucash)
+
+SET(gnome_search_GLADE dialog-search.glade)
+
+INSTALL(FILES ${gnome_search_GLADE} DESTINATION share/gnucash/gtkbuilder)
diff --git a/src/gnome-utils/CMakeLists.txt b/src/gnome-utils/CMakeLists.txt
new file mode 100644
index 0000000..73f6390
--- /dev/null
+++ b/src/gnome-utils/CMakeLists.txt
@@ -0,0 +1,264 @@
+# Note that src/gnome-utils CANNOT depend on src/gnome!
+
+ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(gtkbuilder)
+ADD_SUBDIRECTORY(ui)
+
+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)
+
+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)
+
+SET (WARNINGS_SCHEMA gschemas/org.gnucash.warnings.gschema.xml.in)
+SET (GNC_WARNINGS_C ${CMAKE_CURRENT_BINARY_DIR}/gnc-warnings.c)
+SET (GNC_WARNINGS_H ${CMAKE_CURRENT_BINARY_DIR}/gnc-warnings.h)
+
+ADD_CUSTOM_COMMAND(
+  OUTPUT ${GNC_WARNINGS_C}
+  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${WARNINGS_SCHEMA} make-gnc-warnings-c.xsl
+  COMMAND
+    ${LIBXSLT_XSLTPROC_EXECUTABLE} -o ${GNC_WARNINGS_C} ${CMAKE_CURRENT_SOURCE_DIR}/make-gnc-warnings-c.xsl ${CMAKE_CURRENT_BINARY_DIR}/${WARNINGS_SCHEMA}
+)
+ADD_CUSTOM_COMMAND(
+  OUTPUT ${GNC_WARNINGS_H}
+  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${WARNINGS_SCHEMA} make-gnc-warnings-h.xsl
+  COMMAND
+    ${LIBXSLT_XSLTPROC_EXECUTABLE} -o ${GNC_WARNINGS_H} ${CMAKE_CURRENT_SOURCE_DIR}/make-gnc-warnings-h.xsl ${CMAKE_CURRENT_BINARY_DIR}/${WARNINGS_SCHEMA}
+)
+
+SET (gnome_utils_SOURCES
+  account-quickfill.c
+  assistant-xml-encoding.c
+  cursors.c
+  dialog-account.c
+  dialog-book-close.c
+  dialog-commodity.c
+  dialog-dup-trans.c
+  dialog-file-access.c
+  dialog-object-references.c
+  dialog-options.c
+  dialog-preferences.c
+  dialog-query-view.c
+  dialog-reset-warnings.c
+  dialog-tax-table.c
+  dialog-totd.c
+  dialog-transfer.c
+  dialog-userpass.c
+  dialog-utils.c
+  gnc-account-sel.c
+  gnc-amount-edit.c
+  gnc-autosave.c
+  gnc-cell-renderer-date.c
+  gnc-cell-renderer-popup.c
+  gnc-cell-renderer-popup-entry.c
+  gnc-combott.c
+  gnc-commodity-edit.c
+  gnc-currency-edit.c
+  gnc-date-delta.c
+  gnc-date-edit.c
+  gnc-date-format.c 
+  gnc-dense-cal.c
+  gnc-dense-cal-model.c
+  gnc-dense-cal-store.c
+  gnc-embedded-window.c
+  gnc-file.c
+  gnc-frequency.c
+  gnc-recurrence.c
+  gnc-general-select.c
+  gnc-gnome-utils.c
+  gnc-gobject-utils.c
+  gnc-gtk-utils.c
+  gnc-gui-query.c
+  gnc-icons.c
+  gnc-keyring.c
+  gnc-main-window.c
+  gnc-menu-extensions.c
+  gnc-plugin-file-history.c
+  gnc-plugin-manager.c
+  gnc-plugin-menu-additions.c
+  gnc-plugin-page.c
+  gnc-plugin.c
+  gnc-period-select.c
+  gnc-query-view.c
+  gnc-splash.c
+  gnc-sx-instance-dense-cal-adapter.c
+  gnc-sx-list-tree-model-adapter.c
+  gnc-tree-control-split-reg.c
+  gnc-tree-model.c
+  gnc-tree-model-account-types.c
+  gnc-tree-model-account.c
+  gnc-tree-model-budget.c
+  gnc-tree-model-owner.c
+  gnc-tree-model-commodity.c
+  gnc-tree-model-price.c
+  gnc-tree-model-split-reg.c
+  gnc-tree-util-split-reg.c
+  gnc-tree-view-account.c
+  gnc-tree-view-commodity.c
+  gnc-tree-view-owner.c
+  gnc-tree-view-price.c
+  gnc-tree-view-split-reg.c
+  gnc-tree-view-sx-list.c
+  gnc-tree-view.c
+  ${GNC_WARNINGS_C}
+  gnc-window.c
+  gncmod-gnome-utils.c
+  misc-gnome-utils.c
+  tree-view-utils.c
+  search-param.c
+  print-session.c
+  ${SWIG_GNOME_UTILS_C}
+  swig-gnome-utils.c
+  window-main-summarybar.c
+)
+
+SET(gnome_utils_noinst_HEADERS
+  dialog-tax-table.h
+  gnc-autosave.h
+  gnc-gobject-utils.h
+  gnc-gtk-utils.h
+  search-param.h
+  ${GNC_WARNINGS_H}
+)
+
+SET (gnome_utils_HEADERS
+  account-quickfill.h
+  assistant-xml-encoding.h
+  dialog-account.h
+  dialog-book-close.h
+  dialog-commodity.h
+  dialog-dup-trans.h
+  dialog-file-access.h
+  dialog-preferences.h
+  dialog-object-references.h
+  dialog-options.h
+  dialog-query-view.h
+  dialog-reset-warnings.h
+  dialog-totd.h
+  dialog-transfer.h
+  dialog-utils.h
+  gnc-account-sel.h
+  gnc-amount-edit.h
+  gnc-cell-renderer-date.h
+  gnc-cell-renderer-popup.h
+  gnc-cell-renderer-popup-entry.h
+  gnc-combott.h
+  gnc-commodity-edit.h
+  gnc-currency-edit.h
+  gnc-date-delta.h
+  gnc-date-edit.h
+  gnc-date-format.h
+  gnc-dense-cal.h
+  gnc-dense-cal-model.h
+  gnc-dense-cal-store.h
+  gnc-embedded-window.h
+  gnc-file.h
+  gnc-frequency.h
+  gnc-recurrence.h
+  gnc-general-select.h
+  gnc-gnome-utils.h
+  gnc-gui-query.h
+  gnc-icons.h
+  gnc-keyring.h
+  gnc-main-window.h
+  gnc-menu-extensions.h
+  gnc-plugin-file-history.h
+  gnc-plugin-manager.h
+  gnc-plugin-menu-additions.h
+  gnc-plugin-page.h
+  gnc-plugin.h
+  gnc-period-select.h
+  gnc-query-view.h
+  gnc-splash.h
+  gnc-sx-instance-dense-cal-adapter.h
+  gnc-sx-list-tree-model-adapter.h
+  gnc-tree-control-split-reg.h
+  gnc-tree-model.h
+  gnc-tree-model-account-types.h
+  gnc-tree-model-account.h
+  gnc-tree-model-budget.h
+  gnc-tree-model-owner.h
+  gnc-tree-model-commodity.h
+  gnc-tree-model-price.h
+  gnc-tree-model-split-reg.h
+  gnc-tree-util-split-reg.h
+  gnc-tree-view-account.h
+  gnc-tree-view-commodity.h
+  gnc-tree-view-owner.h
+  gnc-tree-view-price.h
+  gnc-tree-view-split-reg.h
+  gnc-tree-view-sx-list.h
+  gnc-tree-view.h
+  gnc-ui.h
+  gnc-window.h
+  misc-gnome-utils.h
+  tree-view-utils.h
+  print-session.h
+  window-main-summarybar.h
+)
+
+ADD_LIBRARY (gncmod-gnome-utils
+  ${gnome_utils_SOURCES}
+  ${gnome_utils_HEADERS}
+  ${gnome_utils_noinst_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-gnome-utils gncmod-app-utils gncmod-engine gnc-backend-xml-utils
+     ${GTK2_LDFLAGS} ${GTK_MAC_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-gnome-utils PUBLIC ${GTK_MAC_CFLAGS_OTHER}
+    PRIVATE -DG_LOG_DOMAIN=\"gnc.gui\")
+
+IF (MAC_INTEGRATION)
+  TARGET_COMPILE_OPTIONS(gncmod-gnome-utils PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
+  TARGET_LINK_LIBRARIES(gncmod-gnome-utils ${OSX_EXTRA_LIBRARIES})
+ENDIF(MAC_INTEGRATION)
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-gnome-utils
+    PUBLIC
+      ${GTK2_INCLUDE_DIRS}
+      ${CMAKE_CURRENT_SOURCE_DIR}
+    PRIVATE
+      ${GTK_MAC_INCLUDE_DIRS}
+      ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+
+INSTALL(TARGETS gncmod-gnome-utils
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${gnome_utils_HEADERS} DESTINATION include/gnucash)
+
+
+# Scheme
+
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    src/core-utils src/gnc-module src/scm)
+SET(GUILE_LIBRARY_DIRS src/core-utils src/gnc-module)
+SET(GUILE_DEPENDS      gncmod-gnome-utils scm-core-utils scm-gnc-module scm-scm)
+
+GNC_ADD_SCHEME_TARGETS(scm-gnome-utils-1
+  gnome-utils.scm
+  gnucash
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+
+GNC_ADD_SCHEME_TARGETS(scm-gnome-utils-2
+  gnc-menu-extensions.scm
+  ""
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+ADD_CUSTOM_TARGET(scm-gnome-utils ALL DEPENDS scm-gnome-utils-2 scm-gnome-utils-1)
\ No newline at end of file
diff --git a/src/gnome-utils/gschemas/CMakeLists.txt b/src/gnome-utils/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..376767d
--- /dev/null
+++ b/src/gnome-utils/gschemas/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+SET(gnome_utils_GSCHEMA org.gnucash.history.gschema.xml org.gnucash.warnings.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(gnome-utils-gschema "${gnome_utils_GSCHEMA}")
\ No newline at end of file
diff --git a/src/gnome-utils/gtkbuilder/CMakeLists.txt b/src/gnome-utils/gtkbuilder/CMakeLists.txt
new file mode 100644
index 0000000..168e5c2
--- /dev/null
+++ b/src/gnome-utils/gtkbuilder/CMakeLists.txt
@@ -0,0 +1,11 @@
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/gnome-utils/ui/CMakeLists.txt b/src/gnome-utils/ui/CMakeLists.txt
new file mode 100644
index 0000000..6c9019d
--- /dev/null
+++ b/src/gnome-utils/ui/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/gnome/CMakeLists.txt b/src/gnome/CMakeLists.txt
new file mode 100644
index 0000000..cd8cc47
--- /dev/null
+++ b/src/gnome/CMakeLists.txt
@@ -0,0 +1,149 @@
+
+ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(gtkbuilder)
+ADD_SUBDIRECTORY(ui)
+
+SET (gnc_gnome_noinst_HEADERS
+  assistant-acct-period.h
+  assistant-hierarchy.h
+  assistant-loan.h
+  assistant-stock-split.h
+  dialog-fincalc.h
+  dialog-find-transactions.h
+  dialog-find-transactions2.h
+  dialog-lot-viewer.h
+  dialog-new-user.h
+  dialog-print-check.h
+  dialog-print-check2.h
+  dialog-progress.h
+  dialog-sx-editor.h
+  dialog-sx-editor2.h
+  dialog-sx-from-trans.h
+  dialog-sx-since-last-run.h
+  gnc-budget-view.h
+  gnc-plugin-account-tree.h
+  gnc-plugin-basic-commands.h
+  gnc-plugin-budget.h
+  gnc-plugin-register.h
+  gnc-plugin-register2.h
+  gnc-plugin-page-account-tree.h
+  gnc-plugin-page-budget.h
+  gnc-plugin-page-sx-list.h
+  gnc-plugin-page-register.h
+  gnc-plugin-page-register2.h
+  gnc-split-reg.h
+  gnc-split-reg2.h
+  reconcile-view.h
+  top-level.h
+  window-reconcile.h
+  window-reconcile2.h
+  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})
+
+SET (gnc_gnome_SOURCES 
+  ${SWIG_GNOME_C}
+  assistant-acct-period.c
+  assistant-hierarchy.c
+  assistant-loan.c
+  assistant-stock-split.c
+  dialog-commodities.c
+  dialog-fincalc.c
+  dialog-find-transactions.c
+  dialog-find-transactions2.c
+  dialog-lot-viewer.c
+  dialog-new-user.c
+  dialog-price-editor.c
+  dialog-price-edit-db.c
+  dialog-print-check.c
+  dialog-print-check2.c
+  dialog-progress.c
+  dialog-sx-editor.c
+  dialog-sx-editor2.c
+  dialog-sx-from-trans.c
+  dialog-sx-since-last-run.c
+  dialog-tax-info.c
+  gnc-budget-view.c
+  gnc-plugin-account-tree.c
+  gnc-plugin-basic-commands.c
+  gnc-plugin-budget.c
+  gnc-plugin-register.c
+  gnc-plugin-register2.c
+  gnc-plugin-page-account-tree.c
+  gnc-plugin-page-budget.c
+  gnc-plugin-page-sx-list.c
+  gnc-plugin-page-register.c
+  gnc-plugin-page-register2.c
+  gnc-split-reg.c
+  gnc-split-reg2.c
+  reconcile-view.c
+  top-level.c
+  window-reconcile.c
+  window-reconcile2.c
+  window-autoclear.c
+)  
+
+IF (WIN32)
+  SET (gnc_gnome_SOURCES ${gnc_gnome_SOURCES} ${CMAKE_SOURCE_DIR}/lib/libc/strfmon.c)
+ENDIF(WIN32)
+
+ADD_LIBRARY (gnc-gnome ${gnc_gnome_SOURCES} ${gnc_gnome_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gnc-gnome gncmod-gnome-search gncmod-ledger-core gncmod-report-gnome gncmod-report-system
+    gncmod-register-gnome gncmod-register-core gncmod-engine ${GTK2_LDFLAGS} ${GTK_MAC_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gnc-gnome PRIVATE -DG_LOG_DOMAIN=\"gnc.gui\" ${GTK_MAC_CFLAGS_OTHER})
+
+TARGET_INCLUDE_DIRECTORIES(gnc-gnome
+  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+  PRIVATE ${CMAKE_SOURCE_DIR}/src/app-utils/calculation ${GTK_MAC_INCLUDE_DIRS}
+)
+
+
+IF (MAC_INTEGRATION)
+  TARGET_COMPILE_OPTIONS(gnc-gnome PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
+  TARGET_LINK_LIBRARIES(gnc-gnome ${OSX_EXTRA_LIBRARIES})
+ENDIF(MAC_INTEGRATION)
+
+
+INSTALL(TARGETS gnc-gnome
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+  RUNTIME DESTINATION bin)
+
+# No headers to install
+
+# FIXME: where does LC_ALL=C come from?
+
+ADD_CUSTOM_COMMAND(
+    OUTPUT gnucash.appdata.xml
+    COMMAND ${CMAKE_COMMAND} -E env
+      LC_ALL=C
+      ${PERL_EXECUTABLE} ${INTLTOOL_MERGE} -x -u -c ${CMAKE_SOURCE_DIR}/po/.intltool-merge-cache ${CMAKE_SOURCE_DIR}/po
+        ${CMAKE_CURRENT_SOURCE_DIR}/gnucash.appdata.xml.in gnucash.appdata.xml
+    MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/gnucash.appdata.xml.in
+)
+
+ADD_CUSTOM_TARGET(gnucash-appdata ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/gnucash.appdata.xml)
+
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/gnucash.appdata.xml DESTINATION share/appdata)
+
+#=======
+
+CONFIGURE_FILE(gnucash.desktop.in.in gnucash.desktop.in)
+
+
+ADD_CUSTOM_COMMAND(
+    OUTPUT gnucash.desktop
+    COMMAND ${CMAKE_COMMAND} -E env
+      LC_ALL=C
+      ${PERL_EXECUTABLE} ${INTLTOOL_MERGE} -d -u -c ${CMAKE_SOURCE_DIR}/po/.intltool-merge-cache ${CMAKE_SOURCE_DIR}/po
+        gnucash.desktop.in gnucash.desktop
+    MAIN_DEPENDENCY gnucash.desktop.in
+)
+
+ADD_CUSTOM_TARGET(gnucash-desktop ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/gnucash.desktop)
+
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/gnucash.desktop DESTINATION share/applications)
diff --git a/src/gnome/gschemas/CMakeLists.txt b/src/gnome/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..b0ff4a1
--- /dev/null
+++ b/src/gnome/gschemas/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+SET(gnome_GSCHEMA
+  org.gnucash.dialogs.gschema.xml
+  org.gnucash.dialogs.commodities.gschema.xml
+  org.gnucash.dialogs.checkprinting.gschema.xml
+  org.gnucash.dialogs.reconcile.gschema.xml
+  org.gnucash.dialogs.sxs.gschema.xml
+  org.gnucash.dialogs.totd.gschema.xml
+  org.gnucash.gschema.xml
+  org.gnucash.window.pages.account.tree.gschema.xml
+  org.gnucash.window.pages.gschema.xml
+)
+
+# If you edit one of the above files, you need to rerun cmake.
+# When we can use CONFIGURE_FILE() instead of GNC_CONFIGURE()
+# this issue will go away.
+
+
+ADD_GSCHEMA_TARGETS(gnome-gschema "${gnome_GSCHEMA}")
\ No newline at end of file
diff --git a/src/gnome/gtkbuilder/CMakeLists.txt b/src/gnome/gtkbuilder/CMakeLists.txt
new file mode 100644
index 0000000..025e0bf
--- /dev/null
+++ b/src/gnome/gtkbuilder/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+        DESTINATION share/gnucash
+        PATTERN Makefile.* EXCLUDE
+        PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/gnome/ui/CMakeLists.txt b/src/gnome/ui/CMakeLists.txt
new file mode 100644
index 0000000..84f2356
--- /dev/null
+++ b/src/gnome/ui/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+          DESTINATION ${DATADIR_BUILD}/gnucash/ui
+          PATTERN Makefile.* EXCLUDE
+          PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/html/CMakeLists.txt b/src/html/CMakeLists.txt
new file mode 100644
index 0000000..1e2f3fa
--- /dev/null
+++ b/src/html/CMakeLists.txt
@@ -0,0 +1,43 @@
+
+SET (html_HEADERS
+  gnc-html-history.h
+  gnc-html.h
+  gnc-html-p.h
+  gnc-html-factory.h
+  gnc-html-webkit.h
+  gnc-html-extras.h
+  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})  
+
+SET (html_SOURCES
+  gncmod-html.c
+  gnc-html.c
+  gnc-html-history.c
+  gnc-html-factory.c
+  gnc-html-webkit.c
+  ${SWIG_GNC_HTML_C}
+)
+
+ADD_LIBRARY (gncmod-html
+  ${html_SOURCES}
+  ${html_HEADERS}
+)
+
+TARGET_LINK_LIBRARIES(gncmod-html gnc-qof gnc-module gncmod-gnome-utils ${WEBKIT_LDFLAGS} ${GUILE_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-html PRIVATE -DG_LOG_DOMAIN=\"gnc.html\")
+
+
+TARGET_INCLUDE_DIRECTORIES (gncmod-html
+    PUBLIC ${WEBKIT_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+INSTALL(TARGETS gncmod-html
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${html_HEADERS} DESTINATION include/gnucash)
\ No newline at end of file
diff --git a/src/import-export/CMakeLists.txt b/src/import-export/CMakeLists.txt
index 0a21959..4bca259 100644
--- a/src/import-export/CMakeLists.txt
+++ b/src/import-export/CMakeLists.txt
@@ -1,41 +1,77 @@
 # CMakeLists.txt for src/import-export
 
 # ############################################################
-
 IF (WITH_AQBANKING)
-  ADD_SUBDIRECTORY (aqb)
-ENDIF (WITH_AQBANKING)
-
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.import\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-#INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-#INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for pow.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/gnc-module) # for gnc-module.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/engine)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/app-utils)
-
-SET (libgnc_import_SOURCES
+  ADD_SUBDIRECTORY(aqb)
+ENDIF(WITH_AQBANKING)
+ADD_SUBDIRECTORY(csv-exp)
+ADD_SUBDIRECTORY(csv-imp)
+ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(log-replay)
+IF (WITH_OFX)
+  ADD_SUBDIRECTORY(ofx)
+ENDIF(WITH_OFX)
+ADD_SUBDIRECTORY(qif)
+ADD_SUBDIRECTORY(qif-imp)
+
+
+SET (generic_import_SOURCES
+  import-account-matcher.c
+  import-commodity-matcher.c
+  import-backend.c
+  import-format-dialog.c
+  import-match-picker.c
+  import-parse.c
   import-utilities.c
   import-settings.c
+  import-main-matcher.c
+  gncmod-generic-import.c
 )
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_import_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${generic_import_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
-SET (libgnc_import_HEADERS
-  import-utilities.h
+SET (generic_import_HEADERS
+  import-parse.h
+)
+
+SET (generic_import_noinst_HEADERS
+  import-account-matcher.h
+  import-backend.h
+  import-commodity-matcher.h
+  import-main-matcher.h
+  import-match-picker.h
   import-settings.h
+  import-utilities.h
+)
+
+ADD_LIBRARY (gncmod-generic-import
+  ${generic_import_SOURCES}
+  ${generic_import_HEADERS}
+  ${generic_import_noinst_HEADERS}
 )
 
-ADD_LIBRARY (gnc-import
-  ${libgnc_import_SOURCES}
-  ${libgnc_import_HEADERS}
-  )
+TARGET_LINK_LIBRARIES(gncmod-generic-import gncmod-gnome-utils gncmod-engine ${GTK2_LDFLAGS} ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gncmod-generic-import PRIVATE -DG_LOG_DOMAIN=\"gnc.import\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-generic-import PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+
+INSTALL(TARGETS gncmod-generic-import
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin
+)
+
+INSTALL(FILES ${generic_import_HEADERS} DESTINATION include/gnucash)
+
+SET(generic_import_GLADE dialog-import.glade)
+
+INSTALL(FILES ${generic_import_GLADE} DESTINATION share/gnucash/gtkbuilder)
+
 
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${generic_import_GLADE}
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
+ENDIF()
\ No newline at end of file
diff --git a/src/import-export/aqb/CMakeLists.txt b/src/import-export/aqb/CMakeLists.txt
index 2957afb..9aa5902 100644
--- a/src/import-export/aqb/CMakeLists.txt
+++ b/src/import-export/aqb/CMakeLists.txt
@@ -1,41 +1,76 @@
 # CMakeLists.txt for src/import-export/aqbanking
 
-# ############################################################
-
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"gnc.import.aqbanking\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GCONF2_INCLUDE_DIRS})
-#INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-#INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-#INCLUDE_DIRECTORIES (${GUILE_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${GWENHYWFAR_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${AQBANKING_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for pow.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src ) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/gnc-module) # for gnc-module.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/core-utils) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/engine)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/app-utils)
-
-SET (libgnc_aqbanking_SOURCES
+ADD_SUBDIRECTORY(gschemas)
+
+
+SET (aqbanking_SOURCES
+  dialog-ab-trans.c
+  dialog-ab-daterange.c
+  assistant-ab-initial.c
+  gnc-ab-getbalance.c
+  gnc-ab-gettrans.c
   gnc-ab-kvp.c
-#  gnc-ab-utils.c
-#  gnc-gwen-gui.c
+  gnc-ab-transfer.c
+  gnc-ab-utils.c
+  gnc-file-aqb-import.c
+  gnc-gwen-gui.c
+  gnc-plugin-aqbanking.c
+  gncmod-aqbanking.c
 )
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_aqbanking_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${aqbanking_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
-SET (libgnc_aqbanking_HEADERS
+SET (aqbanking_noinst_HEADERS
+  dialog-ab-trans.h
+  dialog-ab-daterange.h
+  assistant-ab-initial.h
+  gnc-ab-getbalance.h
+  gnc-ab-gettrans.h
   gnc-ab-kvp.h
-#  gnc-ab-utils.h
-#  gnc-gwen-gui.h
+  gnc-ab-transfer.h
+  gnc-ab-utils.h
+  gnc-file-aqb-import.h
+  gnc-gwen-gui.h
+  gnc-plugin-aqbanking.h
 )
 
-ADD_LIBRARY (gnc-aqbanking
-  ${libgnc_aqbanking_SOURCES}
-  ${libgnc_aqbanking_HEADERS}
+ADD_LIBRARY (gncmod-aqbanking
+  ${aqbanking_SOURCES}
+  ${aqbanking_noinst_HEADERS}
   )
+
+SET(AQB_EXPORT_SYMBOLS "")
+IF (WIN32)
+  SET(AQB_EXPORT_SYMBOLS "-Wl,--export-all-symbols")
+ENDIF()
+
+TARGET_LINK_LIBRARIES(gncmod-aqbanking gnc-gnome gncmod-gnome-utils gncmod-generic-import gncmod-register-core
+         gncmod-register-gnome gncmod-ledger-core gncmod-engine gnc-qof ${AQB_EXPORT_SYMBOLS} ${AQBANKING_LDFLAGS} ${GWENHYWFAR_LDFLAGS}
+         ${GWENGUI_GTK2_LDFLAGS} ${GNOME_LDFLAGS} ${KTOBLZCHECK_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-aqbanking PRIVATE -DG_LOG_DOMAIN=\"gnc.import.aqbanking\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-aqbanking PRIVATE ${AQBANKING_INCLUDE_DIRS}
+       ${GWENHYWFAR_INCLUDE_DIRS} ${KTOBLZCHECK_INCLUDE_DIRS})
+
+INSTALL(TARGETS gncmod-aqbanking
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
+
+SET(aqbanking_GLADE assistant-ab-initial.glade dialog-ab.glade)
+
+SET(aqbanking_UI gnc-plugin-aqbanking-ui.xml)
+
+INSTALL(FILES ${aqbanking_GLADE} DESTINATION share/gnucash/gtkbuilder)
+
+INSTALL(FILES ${aqbanking_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${aqbanking_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+  FILE(COPY ${aqbanking_GLADE}
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
+ENDIF()
\ No newline at end of file
diff --git a/src/import-export/aqb/gschemas/CMakeLists.txt b/src/import-export/aqb/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..d2c036f
--- /dev/null
+++ b/src/import-export/aqb/gschemas/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+SET(aqb_GSCHEMA org.gnucash.dialogs.import.hbci.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(aqb-gschema "${aqb_GSCHEMA}")
\ No newline at end of file
diff --git a/src/import-export/csv-exp/CMakeLists.txt b/src/import-export/csv-exp/CMakeLists.txt
new file mode 100644
index 0000000..5926d59
--- /dev/null
+++ b/src/import-export/csv-exp/CMakeLists.txt
@@ -0,0 +1,47 @@
+ADD_SUBDIRECTORY(gschemas)
+
+SET(csv_export_SOURCES
+  gncmod-csv-export.c
+  gnc-plugin-csv-export.c
+  assistant-csv-export.c
+  csv-tree-export.c
+  csv-transactions-export.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${csv_export_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET(csv_export_noinst_HEADERS
+  gnc-plugin-csv-export.h
+  assistant-csv-export.h
+  csv-tree-export.h
+  csv-transactions-export.h
+)
+
+ADD_LIBRARY(gncmod-csv-export ${csv_export_noinst_HEADERS} ${csv_export_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-csv-export gncmod-register-gnome gncmod-register-core gncmod-ledger-core gncmod-engine
+                         gnc-module gncmod-gnome-utils gnc-gnome gncmod-app-utils gnc-core-utils)
+
+TARGET_COMPILE_DEFINITIONS(gncmod-csv-export PRIVATE -DG_LOG_DOMAIN=\"gnc.export.csv\")
+
+INSTALL(TARGETS gncmod-csv-export
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install.
+
+SET(csv_export_GLADE assistant-csv-export.glade)
+
+INSTALL(FILES ${csv_export_GLADE} DESTINATION share/gnucash/gtkbuilder)
+
+SET(csv_export_UI gnc-plugin-csv-export-ui.xml)
+
+INSTALL(FILES ${csv_export_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${csv_export_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+  FILE(COPY ${csv_export_GLADE}
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
+ENDIF()
\ No newline at end of file
diff --git a/src/import-export/csv-exp/gschemas/CMakeLists.txt b/src/import-export/csv-exp/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..95b32c0
--- /dev/null
+++ b/src/import-export/csv-exp/gschemas/CMakeLists.txt
@@ -0,0 +1,5 @@
+
+SET(csv_exp_GSCHEMA org.gnucash.dialogs.export.csv.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(csv-exp-gschema "${csv_exp_GSCHEMA}")
+
diff --git a/src/import-export/csv-imp/CMakeLists.txt b/src/import-export/csv-imp/CMakeLists.txt
new file mode 100644
index 0000000..dc42986
--- /dev/null
+++ b/src/import-export/csv-imp/CMakeLists.txt
@@ -0,0 +1,68 @@
+ADD_SUBDIRECTORY(gschemas)
+
+SET(csv_import_SOURCES
+  gncmod-csv-import.c
+  assistant-csv-account-import.c
+  assistant-csv-fixed-trans-import.c
+  assistant-csv-trans-import.c
+  gnc-plugin-csv-import.c
+  csv-account-import.c
+  csv-fixed-trans-import.c
+  gnc-csv-account-map.c
+  gnc-csv-model.c
+  gnc-csv-gnumeric-popup.c
+  gnc-csv-trans-settings.c
+  ${CMAKE_SOURCE_DIR}/lib/stf/stf-parse.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${csv_import_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET(csv_import_noinst_HEADERS
+  assistant-csv-account-import.h
+  assistant-csv-fixed-trans-import.h
+  assistant-csv-trans-import.h
+  gnc-plugin-csv-import.h
+  csv-account-import.h
+  csv-fixed-trans-import.h
+  gnc-csv-account-map.h
+  gnc-csv-model.h
+  gnc-csv-gnumeric-popup.h
+  gnc-csv-trans-settings.h
+  ${CMAKE_SOURCE_DIR}/lib/stf/stf-parse.h
+)
+
+ADD_LIBRARY(gncmod-csv-import ${csv_import_noinst_HEADERS} ${csv_import_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-csv-import ${GOFFICE_LDFLAGS} gncmod-generic-import gncmod-gnome-utils
+                 gncmod-app-utils gncmod-engine gnc-core-utils gnc-module)
+
+
+TARGET_COMPILE_DEFINITIONS(gncmod-csv-import PRIVATE -DG_LOG_DOMAIN=\"gnc.import.csv\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-csv-import PRIVATE
+     ${CMAKE_SOURCE_DIR}/lib ${GOFFICE_INCLUDE_DIRS}
+)
+
+INSTALL(TARGETS gncmod-csv-import
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+# No headers to install
+
+SET(csv_import_GLADE assistant-csv-account-import.glade assistant-csv-fixed-trans-import.glade
+      assistant-csv-trans-import.glade)
+
+INSTALL(FILES ${csv_import_GLADE} DESTINATION share/gnucash/gtkbuilder)
+
+SET(csv_import_UI gnc-plugin-csv-import-ui.xml)
+
+INSTALL(FILES ${csv_import_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${csv_import_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+  FILE(COPY ${csv_import_GLADE}
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
+ENDIF()
diff --git a/src/import-export/csv-imp/gschemas/CMakeLists.txt b/src/import-export/csv-imp/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..3a7b23d
--- /dev/null
+++ b/src/import-export/csv-imp/gschemas/CMakeLists.txt
@@ -0,0 +1,3 @@
+SET(csv_imp_GSCHEMA org.gnucash.dialogs.import.csv.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(csv-imp-gschema "${csv_imp_GSCHEMA}")
\ No newline at end of file
diff --git a/src/import-export/gschemas/CMakeLists.txt b/src/import-export/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..958269e
--- /dev/null
+++ b/src/import-export/gschemas/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+SET(generic_import_GSCHEMA org.gnucash.dialogs.import.generic.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(generic-import-gschema "${generic_import_GSCHEMA}")
\ No newline at end of file
diff --git a/src/import-export/log-replay/CMakeLists.txt b/src/import-export/log-replay/CMakeLists.txt
new file mode 100644
index 0000000..5d72b84
--- /dev/null
+++ b/src/import-export/log-replay/CMakeLists.txt
@@ -0,0 +1,36 @@
+
+SET(log_replay_SOURCES
+  gnc-log-replay.c
+  gnc-plugin-log-replay.c
+  gncmod-log-replay.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${log_replay_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET(log_replay_noinst_HEADERS
+  gnc-log-replay.h
+  gnc-plugin-log-replay.h
+)
+
+ADD_LIBRARY(gncmod-log-replay ${log_replay_SOURCES} ${log_replay_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-log-replay gncmod-gnome-utils gncmod-app-utils gncmod-engine
+     gnc-core-utils gnc-module gnc-qof ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-log-replay PRIVATE -DG_LOG_DOMAIN=\"gnc.import.log-replay\")
+
+INSTALL(TARGETS gncmod-log-replay
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install.
+
+SET(log_replay_UI gnc-plugin-log-replay-ui.xml)
+
+INSTALL(FILES ${log_replay_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${log_replay_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+ENDIF()
\ No newline at end of file
diff --git a/src/import-export/ofx/CMakeLists.txt b/src/import-export/ofx/CMakeLists.txt
new file mode 100644
index 0000000..de0d7ed
--- /dev/null
+++ b/src/import-export/ofx/CMakeLists.txt
@@ -0,0 +1,41 @@
+ADD_SUBDIRECTORY(gschemas)
+
+SET(ofx_SOURCES
+  gnc-ofx-import.c
+  gnc-ofx-kvp.c
+  gncmod-ofx-import.c
+  gnc-plugin-ofx.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${ofx_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET(ofx_noinst_HEADERS
+  gnc-ofx-import.h
+  gnc-ofx-kvp.h
+  gnc-plugin-ofx.h
+)
+
+ADD_LIBRARY(gncmod-ofx ${ofx_SOURCES} ${ofx_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-ofx gncmod-generic-import gncmod-engine gncmod-app-utils gnc-core-utils
+                    gncmod-gnome-utils gnc-qof ${LIBOFX_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-ofx PRIVATE -DG_LOG_DOMAIN=\"gnc.import.ofx\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-ofx PRIVATE ${LIBOFX_INCLUDE_DIRS})
+
+INSTALL(TARGETS gncmod-ofx
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+SET(ofx_UI gnc-plugin-ofx-ui.xml)
+
+INSTALL(FILES ${ofx_UI} DESTINATION share/gnucash/ui)
+
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${ofx_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+ENDIF()
\ No newline at end of file
diff --git a/src/import-export/ofx/gschemas/CMakeLists.txt b/src/import-export/ofx/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..9f143ad
--- /dev/null
+++ b/src/import-export/ofx/gschemas/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+set(ofx_GSCHEMA org.gnucash.dialogs.import.ofx.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(ofx-gschema "${ofx_GSCHEMA}")
diff --git a/src/import-export/qif-imp/CMakeLists.txt b/src/import-export/qif-imp/CMakeLists.txt
new file mode 100644
index 0000000..7205543
--- /dev/null
+++ b/src/import-export/qif-imp/CMakeLists.txt
@@ -0,0 +1,90 @@
+# CMakeLists.txt for src/import_export/qif-imp
+
+ADD_SUBDIRECTORY(gschemas)
+
+SET (qif_import_SOURCES
+    dialog-account-picker.c
+    assistant-qif-import.c
+    gnc-plugin-qif-import.c
+    gncmod-qif-import.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${qif_import_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET (qif_import_noinst_HEADERS
+    dialog-account-picker.h
+    assistant-qif-import.h
+    gnc-plugin-qif-import.h
+)
+
+ADD_LIBRARY	(gncmod-qif-import ${qif_import_SOURCES} ${qif_import_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-qif-import gncmod-app-utils gncmod-gnome-utils gnc-gnome)
+
+TARGET_COMPILE_DEFINITIONS(gncmod-qif-import PRIVATE -DG_LOG_DOMAIN=\"gnc.import.qif.import\")
+
+INSTALL(TARGETS gncmod-qif-import
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install.
+
+
+# Scheme
+
+SET (qif_import_SCHEME
+  qif-dialog-utils.scm
+  qif-file.scm
+  qif-guess-map.scm
+  qif-merge-groups.scm
+  qif-objects.scm
+  qif-parse.scm
+  qif-to-gnc.scm
+  qif-utils.scm
+  qif-import.scm # yes, included in both SETs
+)
+
+SET(qif_import_SCHEME_2
+  qif-import.scm
+)
+
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    src/core-utils src/gnc-module src/scm)
+SET(GUILE_LIBRARY_DIRS src/core-utils src/gnc-module src/gnome)
+SET(GUILE_DEPENDS      gncmod-qif-import scm-core-utils scm-gnc-module scm-scm)
+
+GNC_ADD_SCHEME_TARGETS(scm-qif-import-2
+  "${qif_import_SCHEME_2}"
+  "gnucash/import-export"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-qif-import
+  "${qif_import_SCHEME}"
+  "qif-import"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+SET(qif_import_GLADE assistant-qif-import.glade dialog-account-picker.glade)
+
+INSTALL(FILES ${qif_import_GLADE} DESTINATION share/gnucash/gtkbuilder)
+
+SET(qif_import_UI gnc-plugin-qif-import-ui.xml)
+
+INSTALL(FILES ${qif_import_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${qif_import_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+  FILE(COPY ${qif_import_GLADE}
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
+ENDIF()
\ No newline at end of file
diff --git a/src/import-export/qif-imp/gschemas/CMakeLists.txt b/src/import-export/qif-imp/gschemas/CMakeLists.txt
new file mode 100644
index 0000000..aabed64
--- /dev/null
+++ b/src/import-export/qif-imp/gschemas/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+set(qif_imp_GSCHEMA org.gnucash.dialogs.import.qif.gschema.xml)
+
+ADD_GSCHEMA_TARGETS(qif-imp-gschema "${qif_imp_GSCHEMA}")
diff --git a/src/import-export/qif/CMakeLists.txt b/src/import-export/qif/CMakeLists.txt
new file mode 100644
index 0000000..0bb858a
--- /dev/null
+++ b/src/import-export/qif/CMakeLists.txt
@@ -0,0 +1,33 @@
+
+SET(qif_SOURCES
+  qif-context.c
+  qif-defaults.c
+  qif-file.c
+  qif-objects.c
+  qif-parse.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${qif_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET(qif_noinst_HEADERS
+  qif-file.h
+  qif-defaults.h
+  qif-import-p.h
+  qif-import.h
+  qif-objects.h
+  qif-objects-p.h
+  qif-parse.h
+)
+
+ADD_LIBRARY(gncmod-qif ${qif_noinst_HEADERS} ${qif_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-qif gncmod-generic-import gncmod-engine gnc-qof ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-qif PRIVATE -DG_LOG_DOMAIN=\"gnc.import.qif\")
+
+INSTALL(TARGETS gncmod-qif
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install.
diff --git a/src/libqof/CMakeLists.txt b/src/libqof/CMakeLists.txt
index 80f91b0..4d9d5bc 100644
--- a/src/libqof/CMakeLists.txt
+++ b/src/libqof/CMakeLists.txt
@@ -1,21 +1,57 @@
 # CMakeLists.txt for src/libqof
 
-ADD_DEFINITIONS (-DG_LOG_DOMAIN=\"qof\")
-
-INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}/.. ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for strptime.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src) # for platform.h
+SET (gnc_qof_HEADERS
+    qof/gnc-aqbanking-templates.h
+    qof/gnc-date-p.h
+    qof/gnc-date.h
+    qof/gnc-numeric.h
+    qof/gnc-datetime.hpp
+    qof/gnc-rational.hpp
+    qof/gnc-timezone.hpp
+    qof/guid.h
+    qof/kvp_frame.hpp
+    qof/kvp-value.hpp
+    qof/qof.h
+    qof/qofbackend-p.h
+    qof/qofbackend.h
+    qof/qofbook.h
+    qof/qofbookslots.h
+    qof/qofchoice.h
+    qof/qofclass.h
+    qof/qofevent.h
+    qof/qofid-p.h
+    qof/qofid.h
+    qof/qofinstance-p.h
+    qof/qofinstance.h
+    qof/qoflog.h
+    qof/qofobject.h
+    qof/qofquery.h
+    qof/qofquerycore.h
+    qof/qofsession.h
+    qof/qofutil.h
+    qof/qof-gobject.h
+    qof/qof-string-cache.h
+)
+SET (gnc_qof_noinst_HEADERS
+    qof/qofbook-p.h
+    qof/qofclass-p.h
+    qof/gnc-date-p.h
+    qof/qofevent-p.h
+    qof/gnc-int128.hpp
+    qof/qofobject-p.h
+    qof/qofquery-p.h
+    qof/qofquerycore-p.h
+    qof/qofsession-p.h
+)
 
-SET (libgnc_qof_SOURCES
+SET (gnc_qof_SOURCES
    qof/gnc-aqbanking-templates.cpp
    qof/gnc-date.cpp
    qof/gnc-datetime.cpp
    qof/gnc-int128.cpp
    qof/gnc-numeric.cpp
    qof/gnc-rational.cpp
+   qof/gnc-datetime.cpp
    qof/gnc-timezone.cpp
    qof/guid.cpp
    qof/kvp_frame.cpp
@@ -37,45 +73,48 @@ SET (libgnc_qof_SOURCES
 )
 IF (WIN32)
   ADD_DEFINITIONS (-DOS_WIN32)
-  SET (libgnc_qof_SOURCES ${libgnc_qof_SOURCES}
-    qof/qof-win32.c
+  SET (gnc_qof_SOURCES ${gnc_qof_SOURCES}
+    qof/qof-win32.cpp
 	../../lib/libc/strptime.c
   )
 ENDIF (WIN32)
 
 # Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgnc_qof_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+SET_SOURCE_FILES_PROPERTIES (${gnc_qof_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
 
-SET (libgnc_qof_HEADERS
-   qof/gnc-date-p.h
-   qof/gnc-date.h
-   qof/gnc-numeric.h
-   qof/guid.h
-   qof/kvp_frame.hpp
-   qof/kvp-value.hpp
-   qof/qof.h
-   qof/qofbackend-p.h
-   qof/qofbackend.h
-   qof/qofbook.h
-   qof/qofbookslots.h
-   qof/qofchoice.h
-   qof/qofclass.h
-   qof/qofevent.h
-   qof/qofid-p.h
-   qof/qofid.h
-   qof/qofinstance-p.h
-   qof/qofinstance.h
-   qof/qoflog.h
-   qof/qofobject.h
-   qof/qofquery.h
-   qof/qofquerycore.h
-   qof/qofsession.h
-   qof/qofutil.h
-   qof/qof-gobject.h
-   qof/qof-string-cache.h
+
+ADD_LIBRARY	(gnc-qof
+  ${gnc_qof_SOURCES}
+  ${gnc_qof_HEADERS}
+  ${gnc_qof_noinst_HEADERS}
 )
 
-ADD_LIBRARY	(qof
-  ${libgnc_qof_SOURCES}
-  ${libgnc_qof_HEADERS}
-  )
+TARGET_LINK_LIBRARIES(gnc-qof ${Boost_DATE_TIME_LIBRARIES} ${REGEX_LDFLAGS} ${GMODULE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gnc-qof PRIVATE -DG_LOG_DOMAIN=\"qof\")
+
+TARGET_INCLUDE_DIRECTORIES (gnc-qof PUBLIC
+  ${CMAKE_BINARY_DIR}/src # for config.h
+  ${CMAKE_SOURCE_DIR}/src # for platform.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/qof
+  ${GLIB2_INCLUDE_DIRS}
+  ${LIBINTL_INCLUDE_PATH}
+  ${REGEX_INCLUDE_PATH}
+  ${CMAKE_SOURCE_DIR}/lib/libc # for strptime.h
+)
+
+INSTALL(TARGETS gnc-qof
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+  RUNTIME DESTINATION bin)
+INSTALL(FILES ${gnc_qof_HEADERS} DESTINATION include/gnucash)
+
+SET(qof_test_HEADERS
+    qof/kvp_frame.hpp
+    qof/qofbook.h
+    qof/qofinstance.h
+    qof/qofobject.h
+    qof/qofsession.h
+)
+
+INSTALL(FILES ${qof_test_HEADERS} DESTINATION libexec/gnucash/src/libqof/qof/test)
\ No newline at end of file
diff --git a/src/pixmaps/CMakeLists.txt b/src/pixmaps/CMakeLists.txt
new file mode 100644
index 0000000..2f0fb27
--- /dev/null
+++ b/src/pixmaps/CMakeLists.txt
@@ -0,0 +1,119 @@
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION share/gnucash
+        PATTERN Makefile.* EXCLUDE
+        PATTERN CMakeLists.txt EXCLUDE
+)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+     DESTINATION ${DATADIR_BUILD}/gnucash/pixmaps
+     PATTERN Makefile.* EXCLUDE
+     PATTERN CMakeLists.txt EXCLUDE
+  )
+ENDIF()
+
+FOREACH(dir 256x256 128x128 96x96 64x64 48x48)
+  INSTALL(
+      FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnucash-icon-${dir}.png
+      RENAME gnucash-icon.png
+      DESTINATION share/icons/hicolor/${dir}/apps)
+  IF(GNC_BUILD_AS_INSTALL)    
+    FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/gnucash-icon-${dir}.png
+         DESTINATION ${DATADIR_BUILD}/icons/hicolor/${dir}/apps/gnucash-icon-${dir}.png)
+  ENDIF()
+ENDFOREACH(dir)
+
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/32x32/gnucash.png
+    RENAME gnucash-icon.png
+    DESTINATION share/icons/hicolor/32x32/apps
+)
+
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/22x22/gnucash-22x22.png
+    RENAME gnucash-icon.png
+    DESTINATION share/icons/hicolor/22x22/apps
+)
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/22x22/gnucash-24x24.png
+    RENAME gnucash-icon.png
+    DESTINATION share/icons/hicolor/24x24/apps
+)
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/16x16/gnucash.png
+    RENAME gnucash-icon.png
+    DESTINATION share/icons/hicolor/16x16/apps
+)
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/scalable/gnucash.svg
+    RENAME gnucash-icon.svg
+    DESTINATION share/icons/hicolor/scalable/apps
+)
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/16x16/gnucash.png
+    RENAME gnucash-icon-16x16.png
+    DESTINATION share/gnucash/pixmaps
+)
+INSTALL(
+    FILES ${CMAKE_SOURCE_DIR}/art/tango/32x32/gnucash.png
+    RENAME gnucash-icon-32x32.png
+    DESTINATION share/gnucash/pixmaps
+)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/32x32/gnucash.png
+    DESTINATION ${DATADIR_BUILD}/icons/hicolor/32x32/apps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/icons/hicolor/32x32/apps/gnucash.png
+    ${DATADIR_BUILD}/icons/hicolor/32x32/apps/gnucash-icon.png
+    )
+
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/22x22/gnucash-22x22.png
+    DESTINATION ${DATADIR_BUILD}/icons/hicolor/22x22/apps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/icons/hicolor/22x22/apps/gnucash-22x22.png
+    ${DATADIR_BUILD}/icons/hicolor/22x22/apps/gnucash-icon.png
+    )
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/22x22/gnucash-24x24.png
+    DESTINATION ${DATADIR_BUILD}/icons/hicolor/24x24/apps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/icons/hicolor/24x24/apps/gnucash-24x24.png
+    ${DATADIR_BUILD}/icons/hicolor/24x24/apps/gnucash-icon.png
+  )
+
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/16x16/gnucash.png
+    DESTINATION ${DATADIR_BUILD}/icons/hicolor/16x16/apps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/icons/hicolor/16x16/apps/gnucash.png
+    ${DATADIR_BUILD}/icons/hicolor/16x16/apps/gnucash-icon.png
+  )
+
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/scalable/gnucash.svg
+    DESTINATION ${DATADIR_BUILD}/icons/hicolor/scalable/apps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/icons/hicolor/scalable/apps/gnucash.svg
+    ${DATADIR_BUILD}/icons/hicolor/scalable/apps/gnucash-icon.svg
+  )
+
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/16x16/gnucash.png
+    DESTINATION ${DATADIR_BUILD}/gnucash/pixmaps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/gnucash/pixmaps/gnucash.png
+              ${DATADIR_BUILD}/gnucash/pixmaps/gnucash-icon-16x16.png
+  )
+
+  FILE(
+    COPY ${CMAKE_SOURCE_DIR}/art/tango/32x32/gnucash.png
+    DESTINATION ${DATADIR_BUILD}/gnucash/pixmaps
+  )
+  FILE(RENAME ${DATADIR_BUILD}/gnucash/pixmaps/gnucash.png
+    ${DATADIR_BUILD}/gnucash/pixmaps/gnucash-icon-32x32.png
+  )
+
+ENDIF()
\ No newline at end of file
diff --git a/src/plugins/bi_import/CMakeLists.txt b/src/plugins/bi_import/CMakeLists.txt
new file mode 100644
index 0000000..dc837ae
--- /dev/null
+++ b/src/plugins/bi_import/CMakeLists.txt
@@ -0,0 +1,43 @@
+
+ADD_SUBDIRECTORY(gtkbuilder)
+ADD_SUBDIRECTORY(ui)
+
+SET(bi_import_SOURCES
+  gnc-plugin-bi-import.c
+  gncmod-bi-import.c
+  dialog-bi-import-gui.c
+  dialog-bi-import-helper.c
+  dialog-bi-import.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${bi_import_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+SET(bi_import_noinst_HEADERS
+  gnc-plugin-bi-import.h 
+  dialog-bi-import-gui.h 
+  dialog-bi-import-helper.h 
+  dialog-bi-import.h
+)
+
+ADD_LIBRARY(gncmod-bi_import ${bi_import_noinst_HEADERS} ${bi_import_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-bi_import
+  gncmod-business-gnome
+  gncmod-gnome-utils
+  gncmod-gnome-search
+  gncmod-app-utils
+  gncmod-engine
+  gnc-core-utils
+  gnc-module
+  gnc-qof
+)
+
+TARGET_COMPILE_DEFINITIONS(gncmod-bi_import PRIVATE -DG_LOG_DOMAIN=\"gnc.plugin.bi-import\")
+
+INSTALL(TARGETS gncmod-bi_import
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install.
+
diff --git a/src/plugins/bi_import/gtkbuilder/CMakeLists.txt b/src/plugins/bi_import/gtkbuilder/CMakeLists.txt
new file mode 100644
index 0000000..168e5c2
--- /dev/null
+++ b/src/plugins/bi_import/gtkbuilder/CMakeLists.txt
@@ -0,0 +1,11 @@
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/plugins/bi_import/ui/CMakeLists.txt b/src/plugins/bi_import/ui/CMakeLists.txt
new file mode 100644
index 0000000..6c9019d
--- /dev/null
+++ b/src/plugins/bi_import/ui/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/plugins/customer_import/CMakeLists.txt b/src/plugins/customer_import/CMakeLists.txt
new file mode 100644
index 0000000..75a8c58
--- /dev/null
+++ b/src/plugins/customer_import/CMakeLists.txt
@@ -0,0 +1,32 @@
+ADD_SUBDIRECTORY(gtkbuilder)
+ADD_SUBDIRECTORY(ui)
+
+SET(customer_import_SOURCES
+  gnc-plugin-customer_import.c
+  libgncmod-customer_import.c
+  dialog-customer-import-gui.c
+  dialog-customer-import.c
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${customer_import_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+
+SET(customer_import_noinst_HEADERS
+  gnc-plugin-customer_import.h
+  dialog-customer-import-gui.h
+  dialog-customer-import.h
+)
+
+ADD_LIBRARY(gncmod-customer_import ${customer_import_SOURCES} ${customer_input_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-customer_import gncmod-business-gnome gncmod-gnome-utils gncmod-app-utils
+     gncmod-engine gnc-core-utils gnc-module gnc-qof ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-customer_import PRIVATE -DG_LOG_DOMAIN=\"gnc.plugin.customer_import\")
+
+INSTALL(TARGETS gncmod-customer_import
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install.
\ No newline at end of file
diff --git a/src/plugins/customer_import/gtkbuilder/CMakeLists.txt b/src/plugins/customer_import/gtkbuilder/CMakeLists.txt
new file mode 100644
index 0000000..1d4d3d1
--- /dev/null
+++ b/src/plugins/customer_import/gtkbuilder/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/plugins/customer_import/ui/CMakeLists.txt b/src/plugins/customer_import/ui/CMakeLists.txt
new file mode 100644
index 0000000..6c9019d
--- /dev/null
+++ b/src/plugins/customer_import/ui/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY .
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DESTINATION share/gnucash
+    PATTERN Makefile.* EXCLUDE
+    PATTERN CMakeLists.txt EXCLUDE)
diff --git a/src/quotes/CMakeLists.txt b/src/quotes/CMakeLists.txt
new file mode 100644
index 0000000..d00ec9e
--- /dev/null
+++ b/src/quotes/CMakeLists.txt
@@ -0,0 +1,46 @@
+
+
+
+SET(PERL ${PERL_EXECUTABLE})
+
+SET(_TMPDIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
+FILE(WRITE ${_TMPDIR}/copy_with_perms.cmake
+  "FILE(COPY \${SRC} DESTINATION \${DST}
+   FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)"
+)
+
+FOREACH(file gnc-fq-check.in gnc-fq-helper.in gnc-fq-update.in gnc-fq-dump)
+  STRING(REPLACE ".in" "" _OUTPUT_FILE_NAME ${file})
+  GNC_CONFIGURE2(${file} ${_OUTPUT_FILE_NAME})
+  SET(_ABS_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT_FILE_NAME})
+  INSTALL(PROGRAMS ${_ABS_OUPUT_FILE} DESTINATION bin)
+  IF (GNC_BUILD_AS_INSTALL)
+    ADD_CUSTOM_COMMAND(
+      OUTPUT ${_ABS_OUTPUT_FILE}
+      APPEND
+      COMMAND ${CMAKE_COMMAND} -D SRC=${_ABS_OUTPUT_FILE}
+                               -D DST=${BINDIR_BUILD}
+                               -P ${_TMPDIR}/copy_with_perms.cmake
+    )
+  ENDIF()
+ENDFOREACH(file)
+
+SET(_MAN_FILES "")
+FOREACH(file gnc-fq-dump gnc-fq-helper)
+  SET(_POD_INPUT ${CMAKE_CURRENT_BINARY_DIR}/${file})
+  SET(_MAN_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${file}.1)
+  LIST(APPEND _MAN_FILES ${_MAN_OUTPUT})
+  ADD_CUSTOM_COMMAND(
+      OUTPUT ${_MAN_OUTPUT}
+      COMMAND
+        ${CMAKE_COMMAND} -E env ${PERL_EXECUTABLE} ${POD2MAN_EXECUTABLE} ${_POD_INPUT} ${_MAN_OUTPUT}
+      DEPENDS ${_POD_INPUT}
+  )
+ENDFOREACH(file)
+
+# I don't bother copying the man pages for GNC_BUILD_AS_INSTALL. I probably should for completeness.
+
+ADD_CUSTOM_TARGET(quotes-man ALL DEPENDS ${_MAN_FILES})
+ADD_CUSTOM_TARGET(quotes-bin ALL DEPENDS gnc-fq-check gnc-fq-update)
+INSTALL(FILES ${_MAN_FILES} DESTINATION share/man/man1)
+
diff --git a/src/register/ledger-core/CMakeLists.txt b/src/register/ledger-core/CMakeLists.txt
new file mode 100644
index 0000000..09b3fbc
--- /dev/null
+++ b/src/register/ledger-core/CMakeLists.txt
@@ -0,0 +1,43 @@
+
+
+SET (ledger_core_SOURCES
+  gnc-ledger-display.c
+  gnc-ledger-display2.c
+  gncmod-ledger-core.c
+  split-register.c
+  split-register-control.c
+  split-register-layout.c
+  split-register-load.c
+  split-register-model.c
+  split-register-model-save.c
+  split-register-util.c
+)
+
+SET (ledger_core_HEADERS
+  gnc-ledger-display.h
+  gnc-ledger-display2.h
+  split-register.h
+  split-register-control.h
+  split-register-layout.h
+  split-register-model.h
+  split-register-model-save.h
+  split-register-p.h
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${ledger_core_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY (gncmod-ledger-core ${ledger_core_SOURCES} ${ledger_core_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-ledger-core gncmod-register-gnome gncmod-register-core gncmod-gnome-utils
+        gncmod-engine ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gncmod-ledger-core PRIVATE -DG_LOG_DOMAIN=\"gnc.register.ledger\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-ledger-core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+INSTALL(TARGETS gncmod-ledger-core
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
\ No newline at end of file
diff --git a/src/register/register-core/CMakeLists.txt b/src/register/register-core/CMakeLists.txt
new file mode 100644
index 0000000..c5ab961
--- /dev/null
+++ b/src/register/register-core/CMakeLists.txt
@@ -0,0 +1,59 @@
+
+
+SET (register_core_SOURCES
+  gncmod-register-core.c
+  basiccell.c
+  cell-factory.c
+  cellblock.c
+  formulacell.c
+  gtable.c
+  numcell.c
+  pricecell.c
+  quickfillcell.c
+  recncell.c
+  checkboxcell.c
+  register-common.c
+  table-allgui.c
+  table-control.c
+  table-layout.c
+  table-model.c
+)  
+
+
+SET (register_core_HEADERS
+  basiccell.h
+  cell-factory.h
+  cellblock.h
+  combocell.h
+  datecell.h
+  formulacell.h
+  gtable.h
+  numcell.h
+  pricecell.h
+  quickfillcell.h
+  recncell.h
+  checkboxcell.h
+  register-common.h
+  table-allgui.h
+  table-control.h
+  table-layout.h
+  table-model.h
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${register_core_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY (gncmod-register-core ${register_core_SOURCES} ${register_core_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-register-core gncmod-gnome-utils  gnc-qof gncmod-app-utils ${GMODULE_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gncmod-register-core PRIVATE -DG_LOG_DOMAIN=\"gnc.register.core\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-register-core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+INSTALL(TARGETS gncmod-register-core
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${register_core_HEADERS} DESTINATION include/gnucash)
\ No newline at end of file
diff --git a/src/register/register-gnome/CMakeLists.txt b/src/register/register-gnome/CMakeLists.txt
new file mode 100644
index 0000000..9f0a5db
--- /dev/null
+++ b/src/register/register-gnome/CMakeLists.txt
@@ -0,0 +1,58 @@
+
+SET (register_gnome_SOURCES
+  gncmod-register-gnome.c
+  combocell-gnome.c
+  datecell-gnome.c
+  formulacell-gnome.c
+  gnucash-color.c
+  gnucash-cursor.c
+  gnucash-date-picker.c
+  gnucash-grid.c
+  gnucash-header.c
+  gnucash-item-edit.c
+  gnucash-item-list.c
+  gnucash-scrolled-window.c
+  gnucash-sheet.c
+  gnucash-style.c
+  pricecell-gnome.c
+  quickfillcell-gnome.c
+  table-gnome.c
+)
+
+SET (register_gnome_noinst_HEADERS
+  formulacell-gnome.h
+  gnucash-color.h
+  gnucash-cursor.h
+  gnucash-date-picker.h
+  gnucash-grid.h
+  gnucash-header.h
+  gnucash-item-edit.h
+  gnucash-item-list.h
+  gnucash-scrolled-window.h
+  gnucash-sheet.h
+  gnucash-sheetP.h
+  gnucash-style.h
+  pricecell-gnome.h
+  quickfillcell-gnome.h
+  table-gnome.h
+)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${register_gnome_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY (gncmod-register-gnome ${register_gnome_SOURCES} ${register_gnome_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-register-gnome gncmod-register-core gnc-qof ${GNOMECANVAS_LDFLAGS} ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-register-gnome PRIVATE -DG_LOG_DOMAIN=\"gnc.register.gnome\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-register-gnome
+    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+    PRIVATE ${CMAKE_SOURCE_DIR}/src/register/ledger-core ${GNOMECANVAS_INCLUDE_DIRS}
+)
+
+INSTALL(TARGETS gncmod-register-gnome
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
\ No newline at end of file
diff --git a/src/report/CMakeLists.txt b/src/report/CMakeLists.txt
new file mode 100644
index 0000000..cb57c20
--- /dev/null
+++ b/src/report/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+ADD_SUBDIRECTORY(business-reports)
+ADD_SUBDIRECTORY(jqplot)
+ADD_SUBDIRECTORY(locale-specific/us)
+ADD_SUBDIRECTORY(report-gnome)
+ADD_SUBDIRECTORY(report-system)
+ADD_SUBDIRECTORY(standard-reports)
+ADD_SUBDIRECTORY(stylesheets)
+ADD_SUBDIRECTORY(utility-reports)
+
diff --git a/src/report/business-reports/CMakeLists.txt b/src/report/business-reports/CMakeLists.txt
new file mode 100644
index 0000000..70687af
--- /dev/null
+++ b/src/report/business-reports/CMakeLists.txt
@@ -0,0 +1,46 @@
+
+SET (business_reports_SCHEME
+  aging.scm
+  customer-summary.scm
+  easy-invoice.scm
+  fancy-invoice.scm
+  taxinvoice.scm
+  receipt.scm
+  invoice.scm
+  job-report.scm
+  owner-report.scm
+  payables.scm
+  receivables.scm
+  balsheet-eg.scm
+  business-reports.scm
+)
+
+SET(business_reports_DATA
+  taxinvoice.eguile.scm
+  taxinvoice.css
+  receipt.eguile.scm
+  receipt.css
+  balsheet-eg.css
+  balsheet-eg.eguile.scm
+)
+
+SET(GUILE_OUTPUT_DIR   gnucash/report)
+SET(GUILE_MODULES      src/app-utils src/engine src/html src/gnome-utils
+                         src/report/report-system src/report/standard-reports)
+SET(GUILE_LOAD_DIRS    src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils src/scm
+                         src/report/business_reports src/report/report-system src/report/standard-reports)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils src/report/report-system
+                         src/report/standard-reports)
+SET(GUILE_DEPENDS      scm-business-reports-links gncmod-standard-reports scm-standard-reports)
+
+GNC_ADD_SCHEME_TARGETS(scm-business-reports
+  "${business_reports_SCHEME}"
+  ${GUILE_OUTPUT_DIR} 
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  TRUE
+)
+
+INSTALL(FILES ${business_reports_DATA} DESTINATION ${SCHEME_INSTALLED_SOURCE_DIR}/gnucash/report)
\ No newline at end of file
diff --git a/src/report/jqplot/CMakeLists.txt b/src/report/jqplot/CMakeLists.txt
new file mode 100644
index 0000000..b168ce1
--- /dev/null
+++ b/src/report/jqplot/CMakeLists.txt
@@ -0,0 +1,33 @@
+
+SET(gncjqplot_DATA
+  jquery.min.js
+  jquery.jqplot.js
+  jquery.jqplot.css
+  plugins/jqplot.barRenderer.js
+  plugins/jqplot.BezierCurveRenderer.js
+  plugins/jqplot.blockRenderer.js
+  plugins/jqplot.bubbleRenderer.js
+  plugins/jqplot.canvasAxisLabelRenderer.js
+  plugins/jqplot.canvasAxisTickRenderer.js
+  plugins/jqplot.canvasTextRenderer.js
+  plugins/jqplot.categoryAxisRenderer.js
+  plugins/jqplot.ciParser.js
+  plugins/jqplot.cursor.js
+  plugins/jqplot.dateAxisRenderer.js
+  plugins/jqplot.donutRenderer.js
+  plugins/jqplot.dragable.js
+  plugins/jqplot.enhancedLegendRenderer.js
+  plugins/jqplot.funnelRenderer.js
+  plugins/jqplot.highlighter.js
+  plugins/jqplot.json2.js
+  plugins/jqplot.logAxisRenderer.js
+  plugins/jqplot.mekkoAxisRenderer.js
+  plugins/jqplot.mekkoRenderer.js
+  plugins/jqplot.meterGaugeRenderer.js
+  plugins/jqplot.ohlcRenderer.js
+  plugins/jqplot.pieRenderer.js
+  plugins/jqplot.pointLabels.js
+  plugins/jqplot.trendline.js
+)
+
+INSTALL(FILES ${gncjqplot_DATA} DESTINATION share/gnucash/jqplot)
\ No newline at end of file
diff --git a/src/report/locale-specific/us/CMakeLists.txt b/src/report/locale-specific/us/CMakeLists.txt
new file mode 100644
index 0000000..1945079
--- /dev/null
+++ b/src/report/locale-specific/us/CMakeLists.txt
@@ -0,0 +1,54 @@
+
+
+SET(locale_reports_us_SOURCES
+  gncmod-locale-reports-us.c
+)
+
+ADD_LIBRARY(gncmod-locale-reports-us ${locale_reports_us_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-locale-reports-us gnc-module gncmod-app-utils gncmod-gnome-utils
+                         ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-locale-reports-us PRIVATE -DG_LOG_DOMAIN=\"gnc.report.locale.us\")
+
+
+INSTALL(TARGETS gncmod-locale-reports-us
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
+
+# Scheme
+
+SET(gncmod_local_reports_us_SCHEME_1 taxtxf.scm taxtxf-de_DE.scm)
+
+
+SET(gncmod_local_reports_us_SCHEME_2 us.scm de_DE.scm)
+
+
+SET(GUILE_MODULES src/app-utils src/engine src/gnome-utils src/html src/report/report-system src/tax/us)
+SET(GUILE_LOAD_DIRS  src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils src/report/report-system
+                     src/scm src/tax/us)
+SET(GUILE_LIBRARY_DIRS src/engine src/libqof/qof src/app-utils src/core-utils src/gnc-module src/gnome-utils
+                       src/html src/report/report-system)
+SET(GUILE_DEPENDS   gncmod-html scm-tax-us-1 scm-tax-us-2 scm-report-system-3)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-locale-specific-1
+  "${gncmod_local_reports_us_SCHEME_1}"
+  gnucash/report
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-locale-specific-2
+  "${gncmod_local_reports_us_SCHEME_2}"
+  gnucash/report/locale-specific
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-report-locale-specific-1;${GUILE_DEPENDS}"
+  FALSE
+)
\ No newline at end of file
diff --git a/src/report/report-gnome/CMakeLists.txt b/src/report/report-gnome/CMakeLists.txt
new file mode 100644
index 0000000..8df635e
--- /dev/null
+++ b/src/report/report-gnome/CMakeLists.txt
@@ -0,0 +1,77 @@
+
+
+SET (report_gnome_HEADERS
+  dialog-report-column-view.h
+  dialog-custom-report.h
+  dialog-report-style-sheet.h
+  gnc-plugin-page-report.h
+  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})
+
+SET (report_gnome_SOURCES
+  ${SWIG_REPORT_GNOME_C}
+  dialog-report-column-view.c
+  dialog-custom-report.c
+  dialog-report-style-sheet.c
+  gnc-plugin-page-report.c
+  gncmod-report-gnome.c
+  window-report.c
+)
+
+ADD_LIBRARY (gncmod-report-gnome
+  ${report_gnome_SOURCES}
+  ${report_gnome_HEADERS}
+)
+TARGET_LINK_LIBRARIES(gncmod-report-gnome gncmod-report-system gncmod-html gncmod-gnome-utils
+      gnc-qof ${GUILE_LDFLAGS} ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS (gncmod-report-gnome PRIVATE -DG_LOG_DOMAIN=\"gnc.report.gui\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-report-gnome PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+INSTALL(TARGETS gncmod-report-gnome
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${report_gnome_HEADERS} DESTINATION include/gnucash)
+
+# Scheme
+
+SET(report_gnome_SCHEME
+    report-gnome.scm
+)
+
+SET(GUILE_OUTPUT_DIR   gnucash/report)
+SET(GUILE_MODULES      src/app-utils src/scm src/engine src/gnc-module src/gnome-utils src/reports/report-system src/report/utility-reports)
+SET(GUILE_LOAD_DIRS    src/app-utils src/gnc-module src/engine src/scm src/core-utils src/gnome-utils)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils src/report-gnome)
+SET(GUILE_DEPENDS      gncmod-report-gnome gncmod-engine scm-app-utils scm-gnome-utils scm-core-utils scm-gnc-module scm-scm)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-gnome
+    "${report_gnome_SCHEME}"
+    ${GUILE_OUTPUT_DIR}
+    "${GUILE_MODULES}"
+    "${GUILE_LOAD_DIRS}"
+    "${GUILE_LIBRARY_DIRS}"
+    "${GUILE_DEPENDS}"
+    FALSE
+)
+
+SET(report_gnome_GLADE dialog-custom-report.glade dialog-report.glade)
+
+INSTALL(FILES ${report_gnome_GLADE} DESTINATION share/gnucash/gtkbuilder)
+
+SET(report_gnome_UI gnc-plugin-page-report-ui.xml)
+
+INSTALL(FILES ${report_gnome_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${report_gnome_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+  FILE(COPY ${report_gnome_GLADE}
+    DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
+ENDIF()
\ No newline at end of file
diff --git a/src/report/report-system/CMakeLists.txt b/src/report/report-system/CMakeLists.txt
new file mode 100644
index 0000000..33db0fd
--- /dev/null
+++ b/src/report/report-system/CMakeLists.txt
@@ -0,0 +1,107 @@
+
+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})
+
+SET (report_system_SOURCES
+  ${SWIG_REPORT_SYSTEM_C}
+  gncmod-report-system.c
+  gnc-report.c
+)  
+
+ADD_LIBRARY (gncmod-report-system
+  ${report_system_SOURCES}
+  ${report_system_HEADERS}
+)
+
+TARGET_COMPILE_DEFINITIONS(gncmod-report-system PRIVATE -DG_LOG_DOMAIN=\"gnc.report.core\")
+
+TARGET_LINK_LIBRARIES(gncmod-report-system gnc-module gncmod-app-utils gnc-qof ${GTK2_LDFLAGS} ${GUILE_LDFLAGS})
+
+TARGET_INCLUDE_DIRECTORIES (gncmod-report-system
+    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} PRIVATE ${GTK2_INCLUDE_DIRS}
+)
+
+
+INSTALL(TARGETS gncmod-report-system
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+INSTALL(FILES ${report_system_HEADERS} DESTINATION include/gnucash)
+
+# Scheme
+
+SET (report_system_SCHEME
+    report-system.scm
+    eguile-gnc.scm
+    eguile-utilities.scm
+    eguile-html-utilities.scm
+)
+
+SET (report_system_SCHEME_2
+    collectors.scm
+    list-extras.scm
+    report-collectors.scm
+)
+
+SET (report_system_SCHEME_3
+    commodity-utilities.scm
+    html-acct-table.scm
+    html-barchart.scm
+    html-document.scm
+    html-fonts.scm
+    html-piechart.scm
+    html-scatter.scm
+    html-linechart.scm
+    html-style-info.scm
+    html-style-sheet.scm
+    html-table.scm
+    html-text.scm
+    html-utilities.scm
+    html-jqplot.scm
+    options-utilities.scm
+    report-utilities.scm
+    report.scm
+)
+
+
+SET(GUILE_MODULES      src/app-utils src/engine src/html src/gnome-utils)
+SET(GUILE_LOAD_DIRS    src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils src/report/report-system src/scm)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils)
+SET(GUILE_DEPENDS      gncmod-html gncmod-gnome-utils gncmod-report-system scm-app-utils scm-gnome-utils)
+
+
+GNC_ADD_SCHEME_TARGETS(scm-report-system
+  "${report_system_SCHEME}"
+  "gnucash/report"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-system-2
+  "${report_system_SCHEME_2}"
+  "gnucash/report/report-system"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  scm-report-system
+  FALSE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-system-3
+  "${report_system_SCHEME_3}"
+  ""
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  scm-report-system-2
+  FALSE
+)
+
diff --git a/src/report/standard-reports/CMakeLists.txt b/src/report/standard-reports/CMakeLists.txt
new file mode 100644
index 0000000..53bb1cd
--- /dev/null
+++ b/src/report/standard-reports/CMakeLists.txt
@@ -0,0 +1,84 @@
+
+SET(standard_reports_SOURCES gncmod-standard-reports.c)
+
+ADD_LIBRARY (gncmod-standard-reports ${standard_reports_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-standard-reports gnc-module ${GTK2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-standard-reports PRIVATE -DG_LOG_DOMAIN=\"gnc.report.standard\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-standard-reports PRIVATE ${GUILE_INCLUDE_DIRS})
+
+INSTALL(TARGETS gncmod-standard-reports
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+
+# No headers to install
+
+
+# Scheme
+
+SET (standard_reports_SCHEME standard-reports.scm)
+
+SET (standard_reports_SCHEME_2
+    account-piecharts.scm
+    account-summary.scm
+    advanced-portfolio.scm
+    average-balance.scm
+    balance-sheet.scm
+    budget-balance-sheet.scm
+    budget-barchart.scm
+    budget-flow.scm
+    budget-income-statement.scm
+    budget.scm
+    cash-flow.scm
+    category-barchart.scm
+    daily-reports.scm
+    equity-statement.scm
+    general-journal.scm
+    general-ledger.scm
+    income-statement.scm
+    net-barchart.scm
+    net-linechart.scm
+    portfolio.scm
+    price-scatter.scm
+    register.scm
+    sx-summary.scm
+    transaction.scm
+    trial-balance.scm
+    )
+
+SET(GUILE_MODULES      src/app-utils src/engine src/gnome-utils src/html src/report/report-system)
+SET(GUILE_LOAD_DIRS    src/app-utils src/engine src/core-utils src/gnc-module src/gnome-utils src/report/report-system src/scm)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/engine src/core-utils src/gnc-module src/gnome-utils src/report/report-system)
+SET(GUILE_DEPENDS      gncmod-html scm-app-utils scm-gnome-utils scm-report-system scm-report-system-3)
+
+GNC_ADD_SCHEME_TARGETS(scm-standard-reports
+  "${standard_reports_SCHEME}"
+  "gnucash/report"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-standard-reports-2;${GUILE_DEPENDS}"
+  TRUE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-standard-reports-2
+  "${standard_reports_SCHEME_2}"
+  "gnucash/report/standard-reports"
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-standard-reports-2-links;${GUILE_DEPENDS}"
+  TRUE
+)
+
+# FIXME: This is a hack since core-utils assumes an autotools build environment.
+
+SET(STD_RPT_DIR ${CMAKE_CURRENT_BINARY_DIR}/gnucash/report)
+FILE(MAKE_DIRECTORY ${STD_RPT_DIR})
+FILE(COPY standard-reports.scm DESTINATION ${STD_RPT_DIR})
+
+FILE(MAKE_DIRECTORY ${STD_RPT_DIR}/standard-reports)
+FILE(COPY ${standard_reports_SCHEME_2} DESTINATION ${STD_RPT_DIR}/standard-reports)
\ No newline at end of file
diff --git a/src/report/stylesheets/CMakeLists.txt b/src/report/stylesheets/CMakeLists.txt
new file mode 100644
index 0000000..8649c37
--- /dev/null
+++ b/src/report/stylesheets/CMakeLists.txt
@@ -0,0 +1,80 @@
+
+SET(stylesheets_SOURCES
+  gnc-plugin-stylesheets.c
+  gncmod-stylesheets.c
+)
+
+SET(stylesheet_noinst_HEADERS
+  gnc-plugin-stylesheets.h
+)
+
+ADD_LIBRARY(gncmod-stylesheets MODULE ${stylesheets_SOURCES} ${stylesheets_noinst_HEADERS})
+
+TARGET_LINK_LIBRARIES(gncmod-stylesheets gncmod-report-gnome gncmod-report-system gncmod-gnome-utils gnc-module
+    gnc-qof ${GUILE_LDFLAGS} ${GTK2_LDFLAGS} ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-stylesheets PRIVATE -DG_LOG_DOMAIN=\"gnc.report.core\")
+
+SET(LIB_DIR lib/gnucash)
+IF (WIN32)
+  SET(LIB_DIR bin)
+ENDIF(WIN32)
+
+
+INSTALL(TARGETS gncmod-stylesheets
+  LIBRARY DESTINATION ${LIB_DIR}
+  ARCHIVE DESTINATION ${LIB_DIR}
+  RUNTIME DESTINATION bin)
+
+# No headers to install
+
+# Scheme
+
+SET(stylesheets_SCHEME_1
+  stylesheet-plain.scm
+  stylesheet-fancy.scm
+  stylesheet-footer.scm
+  stylesheet-easy.scm
+  stylesheet-head-or-tail.scm
+)
+
+SET(stylesheets_SCHEME_2
+  stylesheets.scm
+)
+
+SET(GUILE_OUTPUT_DIR gnucash/report)
+SET(GUILE_MODULES src/app-utils src/engine src/html src/gnome-utils src/report/report-system)
+SET(GUILE_LOAD_DIRS src/app-utils src/core-utils src/engine src/gnc-module src/gnome-utils src/report/report-system src/scm)
+SET(GUILE_LIBRARY_DIRS src/engine src/app-utils src/core-utils src/gnc-module src/gnome-utils src/html src/report/report-system)
+SET(GUILE_DEPENDS gncmod-html scm-app-utils scm-report-system-3)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-stylesheets-1
+  "${stylesheets_SCHEME_1}"
+  ${GUILE_OUTPUT_DIR}
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  TRUE
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-report-stylesheets-2
+  "${stylesheets_SCHEME_2}"
+  ${GUILE_OUTPUT_DIR}
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-report-stylesheets-1;${GUILE_DEPENDS}"
+  TRUE
+)
+
+ADD_CUSTOM_TARGET(scm-report-stylesheets ALL DEPENDS scm-report-stylesheets-1 scm-report-stylesheets-2)
+
+SET(stylesheets_UI gnc-plugin-stylesheets-ui.xml)
+
+INSTALL(FILES ${stylesheets_UI} DESTINATION share/gnucash/ui)
+
+IF (GNC_BUILD_AS_INSTALL)
+  FILE(COPY ${stylesheets_UI}
+    DESTINATION ${DATADIR_BUILD}/gnucash/ui)
+ENDIF()
\ No newline at end of file
diff --git a/src/report/utility-reports/CMakeLists.txt b/src/report/utility-reports/CMakeLists.txt
new file mode 100644
index 0000000..c0110c4
--- /dev/null
+++ b/src/report/utility-reports/CMakeLists.txt
@@ -0,0 +1,55 @@
+
+
+SET(utility_reports_SOURCES
+  gncmod-utility-reports.c
+)
+
+ADD_LIBRARY(gncmod-utility-reports MODULE ${utility_reports_SOURCES})
+
+TARGET_LINK_LIBRARIES(gncmod-utility-reports gnc-module ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
+
+TARGET_COMPILE_DEFINITIONS(gncmod-utility-reports PRIVATE -DG_LOG_DOMAIN=\"gnc.report.util\")
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-utility-reports
+    PRIVATE ${GUILE_INCLUDE_DIRS}
+)
+
+SET(LIB_DIR lib/gnucash)
+IF (WIN32)
+  SET(LIB_DIR bin)
+ENDIF(WIN32)
+
+
+INSTALL(TARGETS gncmod-utility-reports
+  LIBRARY DESTINATION ${LIB_DIR}
+  ARCHIVE DESTINATION ${LIB_DIR}
+  RUNTIME DESTINATION bin)
+
+# Scheme
+
+SET(utility_reports_SCHEME
+  hello-world.scm
+  utility-reports.scm
+  view-column.scm
+  welcome-to-gnucash.scm
+)
+
+SET(GUILE_OUTPUT_DIR     gnucash/report)
+SET(GUILE_MODULES        src/app-utils src/engine src/gnome-utils src/html src/report/report-system)
+SET(GUILE_LOAD_DIRS      src/app-utils src/core-utils src/engine src/gnc-module
+                            src/gnome-utils src/report/report-system src/scm)
+SET(GUILE_LIBRARY_DIRS   src/engine src/app-utils src/core-utils src/gnc-module src/gnome-utils src/html
+                              src/report/report-system)
+SET(GUILE_DEPENDS        scm-utility-reports-links scm-app-utils scm-report-system-3)
+
+GNC_ADD_SCHEME_TARGETS(scm-utility-reports
+  "${utility_reports_SCHEME}"
+  ${GUILE_OUTPUT_DIR}
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  TRUE
+)
+
+
diff --git a/src/scm/CMakeLists.txt b/src/scm/CMakeLists.txt
new file mode 100644
index 0000000..5cd7fe0
--- /dev/null
+++ b/src/scm/CMakeLists.txt
@@ -0,0 +1,66 @@
+ADD_SUBDIRECTORY(gnumeric)
+
+SET (BUILD_CONFIG_SCM ${CMAKE_CURRENT_BINARY_DIR}/build-config.scm)
+
+SET (scm_SCHEME_4
+    substring-search.scm
+    xml-generator.scm
+)
+
+# We need to replace a couple of variables in build-config.scm. Normally, I 
+# would use CONFIGURE_FILE to do this. But this scheme files is using a different
+# replacement marking scheme ("@-", "-@") than the usual one with just "@" 
+# that CONFIGURE_FILE expects.
+
+# FIXME: ${BUILD_CONFIG_SCM} needs a rule to cause it to be generated, I think.
+
+IF (HAVE_GUILE1)
+  GNC_CONFIGURE(build-config.scm.in build-config.scm)
+ELSE()
+  GNC_CONFIGURE2(build-config.scm.in build-config.scm)
+ENDIF()
+
+# CONFIGURE_FILE(build-config.scm.in ${BUILD_CONFIG_SCM})
+
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    src/core-utils src/gnc-module)
+SET(GUILE_LIBRARY_DIRS src/core-utils src/gnc-module)
+SET(GUILE_DEPENDS      scm-core-utils scm-gnc-module)
+
+SET(scm_SCHEME_0
+  fin.scm
+  string.scm
+  ${BUILD_CONFIG_SCM}
+  substring-search.scm
+  xml-generator.scm
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-scm-0 "${scm_SCHEME_0}" "" "" "" "" "" FALSE)
+
+GNC_ADD_SCHEME_TARGETS(scm-scm-1 "printf.scm" gnucash "" "" "" "" FALSE)
+
+GNC_ADD_SCHEME_TARGETS(scm-scm-2
+  main.scm
+  gnucash
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-scm-1;${GUILE_DEPENDS}"  # requires printf.scm from scm-scm-1 and modules from GUILE_DEPENDS
+  FALSE
+)
+
+# depends on main.scm
+GNC_ADD_SCHEME_TARGETS(scm-scm-3
+  price-quotes.scm
+  gnucash
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "scm-scm-2;scm-scm-0"  # depends on build_config.scm
+  FALSE)
+
+ADD_CUSTOM_TARGET(scm-scm ALL DEPENDS scm-scm-3 scm-scm-2 scm-scm-1 scm-scm-0 scm-gnumeric)
+
+INSTALL(FILES config DESTINATION etc/gnucash)
+
+
diff --git a/src/scm/gnumeric/CMakeLists.txt b/src/scm/gnumeric/CMakeLists.txt
new file mode 100644
index 0000000..7c38667
--- /dev/null
+++ b/src/scm/gnumeric/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+
+SET(gnumeric_SCHEME gnumeric-utilities.scm table-utils.scm)
+
+
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    "")
+SET(GUILE_LIBRARY_DIRS "")
+SET(GUILE_DEPENDS      "")
+
+GNC_ADD_SCHEME_TARGETS(scm-gnumeric
+  "${gnumeric_SCHEME}"
+  gnumeric
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
diff --git a/src/tax/us/CMakeLists.txt b/src/tax/us/CMakeLists.txt
new file mode 100644
index 0000000..0424b78
--- /dev/null
+++ b/src/tax/us/CMakeLists.txt
@@ -0,0 +1,48 @@
+SET(tax_us_SOURCES gncmod-tax-us.c)
+
+# Add dependency on config.h
+SET_SOURCE_FILES_PROPERTIES (${tax_us_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+
+ADD_LIBRARY(gncmod-tax-us ${tax_us_SOURCES})
+TARGET_LINK_LIBRARIES(gncmod-tax-us gnc-module ${GLIB2_LDFLAGS} ${GUILE_LDFLAGS})
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-tax-us
+    PRIVATE ${CMAKE_BINARY_DIR}/src ${GUILE_INCLUDE_DIRS})
+
+INSTALL(TARGETS gncmod-tax-us
+  LIBRARY DESTINATION lib/gnucash
+  ARCHIVE DESTINATION lib/gnucash
+  RUNTIME DESTINATION bin)
+# No headers to install
+
+# Scheme
+
+SET(gncmod_tax_us_SCHEME_1 txf.scm txf-help.scm txf-de_DE.scm txf-help-de_DE.scm)
+SET(gncmod_tax_us_SCHEME_2 de_DE.scm us.scm)
+
+SET(GUILE_MODULES      src/app-utils src/engine)
+SET(GUILE_LOAD_DIRS    src/app-utils src/core-utils src/engine src/gnc-module src/scm)
+SET(GUILE_LIBRARY_DIRS src/app-utils src/engine src/gnc-module)
+SET(GUILE_DEPENDS      scm-app-utils)
+
+GNC_ADD_SCHEME_TARGETS(scm-tax-us-1
+  "${gncmod_tax_us_SCHEME_1}"
+  ""
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+  )
+GNC_ADD_SCHEME_TARGETS(scm-tax-us-2
+  "${gncmod_tax_us_SCHEME_2}"
+  gnucash/tax
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+  )
+
+
+
diff --git a/src/test-core/CMakeLists.txt b/src/test-core/CMakeLists.txt
new file mode 100644
index 0000000..63177b6
--- /dev/null
+++ b/src/test-core/CMakeLists.txt
@@ -0,0 +1,54 @@
+
+SET(test_core_SOURCES
+  test-stuff.c
+  unittest-support.c
+)
+
+SET(test_core_noinst_HEADERS
+  test-stuff.h
+  unittest-support.h
+)
+
+INCLUDE_DIRECTORIES(
+  ${CMAKE_BINARY_DIR}/src
+  ${CMAKE_SOURCE_DIR}/src
+  ${CMAKE_SOURCE_DIR}/src/libqof/qof
+  ${CMAKE_SOURCE_DIR}/src/test-core
+
+  ${GLIB2_INCLUDE_DIRS}
+  ${GUILE_INCLUDE_DIRS}
+)
+
+ADD_LIBRARY(test-core ${test_core_SOURCES} ${test_core_noinst_HEADERS})
+TARGET_LINK_LIBRARIES(test-core gnc-qof ${GLIB2_LDFLAGS})
+
+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(test_core_guile_SOURCES ${SWIG_UNITTEST_SUPPORT_GUILE_C})
+
+ADD_LIBRARY(test-core-guile ${test_core_guile_SOURCES})
+TARGET_LINK_LIBRARIES(test-core-guile test-core ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
+
+SET(test_core_SCHEME unittest-support.scm)
+
+SET(GUILE_OUTPUT_DIR   gnucash)
+SET(GUILE_MODULES      "")
+SET(GUILE_LOAD_DIRS    "")
+SET(GUILE_LIBRARY_DIRS src/test-core src/libqof)
+SET(GUILE_DEPENDS      test-core-guile)
+
+
+GNC_ADD_SCHEME_TARGETS(scm_test_core
+  ${test_core_SCHEME}
+  ${GUILE_OUTPUT_DIR}
+  "${GUILE_MODULES}"
+  "${GUILE_LOAD_DIRS}"
+  "${GUILE_LIBRARY_DIRS}"
+  "${GUILE_DEPENDS}"
+  FALSE
+)
+
+INSTALL(FILES unittest-support.h DESTINATION libexec/gnucash/src/libqof/qof/test)
\ No newline at end of file



Summary of changes:
 CMakeLists.txt                                     | 482 ++++++++++++++++++---
 accounts/CMakeLists.txt                            |  67 +++
 checks/CMakeLists.txt                              |  15 +
 cmake/CMakeLists.txt                               |  26 ++
 cmake/README_CMAKE.txt                             | 218 ++++++++++
 doc/CMakeLists.txt                                 |  72 +++
 doc/examples/CMakeLists.txt                        |  24 +
 po/CMakeLists.txt                                  |  48 ++
 src/CMakeLists.txt                                 |  97 ++++-
 src/app-utils/CMakeLists.txt                       | 162 +++++--
 src/backend/dbi/CMakeLists.txt                     |  61 ++-
 src/backend/sql/CMakeLists.txt                     |  38 +-
 src/backend/xml/CMakeLists.txt                     | 118 ++++-
 src/bin/CMakeLists.txt                             | 187 ++++++++
 src/bin/overrides/CMakeLists.txt                   |  33 ++
 src/business/business-gnome/CMakeLists.txt         |  82 ++++
 .../business-gnome/gschemas/CMakeLists.txt         |   4 +
 .../business-gnome/gtkbuilder/CMakeLists.txt       |  12 +
 src/business/business-gnome/ui/CMakeLists.txt      |  12 +
 src/business/business-ledger/CMakeLists.txt        |  35 ++
 src/cmake_modules/GncAddGSchemaTargets.cmake       |  49 +++
 src/cmake_modules/GncAddSchemeTargets.cmake        | 142 ++++++
 src/cmake_modules/GncConfigure.cmake               |  42 ++
 src/cmake_modules/GncFindPkgConfig.cmake           | 248 +++++++++++
 src/config.h.cmake.in                              | 332 +++++++++++++-
 src/core-utils/CMakeLists.txt                      | 139 ++++--
 src/engine/CMakeLists.txt                          | 126 ++++--
 src/gnc-module/CMakeLists.txt                      |  58 ++-
 src/gnome-search/CMakeLists.txt                    |  60 +++
 src/gnome-utils/CMakeLists.txt                     | 264 +++++++++++
 src/gnome-utils/gschemas/CMakeLists.txt            |   4 +
 src/gnome-utils/gtkbuilder/CMakeLists.txt          |  11 +
 src/gnome-utils/ui/CMakeLists.txt                  |  12 +
 src/gnome/CMakeLists.txt                           | 149 +++++++
 src/gnome/gschemas/CMakeLists.txt                  |  19 +
 src/gnome/gtkbuilder/CMakeLists.txt                |  12 +
 src/gnome/ui/CMakeLists.txt                        |  12 +
 src/html/CMakeLists.txt                            |  43 ++
 src/import-export/CMakeLists.txt                   |  90 ++--
 src/import-export/aqb/CMakeLists.txt               |  95 ++--
 src/import-export/aqb/gschemas/CMakeLists.txt      |   4 +
 src/import-export/csv-exp/CMakeLists.txt           |  47 ++
 src/import-export/csv-exp/gschemas/CMakeLists.txt  |   5 +
 src/import-export/csv-imp/CMakeLists.txt           |  68 +++
 src/import-export/csv-imp/gschemas/CMakeLists.txt  |   3 +
 src/import-export/gschemas/CMakeLists.txt          |   4 +
 src/import-export/log-replay/CMakeLists.txt        |  36 ++
 src/import-export/ofx/CMakeLists.txt               |  41 ++
 src/import-export/ofx/gschemas/CMakeLists.txt      |   4 +
 src/import-export/qif-imp/CMakeLists.txt           |  90 ++++
 src/import-export/qif-imp/gschemas/CMakeLists.txt  |   4 +
 src/import-export/qif/CMakeLists.txt               |  33 ++
 src/libqof/CMakeLists.txt                          | 125 ++++--
 src/pixmaps/CMakeLists.txt                         | 119 +++++
 src/plugins/bi_import/CMakeLists.txt               |  43 ++
 src/plugins/bi_import/gtkbuilder/CMakeLists.txt    |  11 +
 src/plugins/bi_import/ui/CMakeLists.txt            |  12 +
 src/plugins/customer_import/CMakeLists.txt         |  32 ++
 .../customer_import/gtkbuilder/CMakeLists.txt      |  12 +
 src/plugins/customer_import/ui/CMakeLists.txt      |  12 +
 src/quotes/CMakeLists.txt                          |  46 ++
 src/register/ledger-core/CMakeLists.txt            |  43 ++
 src/register/register-core/CMakeLists.txt          |  59 +++
 src/register/register-gnome/CMakeLists.txt         |  58 +++
 src/report/CMakeLists.txt                          |  10 +
 src/report/business-reports/CMakeLists.txt         |  46 ++
 src/report/jqplot/CMakeLists.txt                   |  33 ++
 src/report/locale-specific/us/CMakeLists.txt       |  54 +++
 src/report/report-gnome/CMakeLists.txt             |  77 ++++
 src/report/report-system/CMakeLists.txt            | 107 +++++
 src/report/standard-reports/CMakeLists.txt         |  84 ++++
 src/report/stylesheets/CMakeLists.txt              |  80 ++++
 src/report/utility-reports/CMakeLists.txt          |  55 +++
 src/scm/CMakeLists.txt                             |  66 +++
 src/scm/gnumeric/CMakeLists.txt                    |  19 +
 src/tax/us/CMakeLists.txt                          |  48 ++
 src/test-core/CMakeLists.txt                       |  54 +++
 77 files changed, 4976 insertions(+), 368 deletions(-)
 create mode 100644 accounts/CMakeLists.txt
 create mode 100644 checks/CMakeLists.txt
 create mode 100644 cmake/CMakeLists.txt
 create mode 100644 cmake/README_CMAKE.txt
 create mode 100644 doc/CMakeLists.txt
 create mode 100644 doc/examples/CMakeLists.txt
 create mode 100644 po/CMakeLists.txt
 create mode 100644 src/bin/CMakeLists.txt
 create mode 100644 src/bin/overrides/CMakeLists.txt
 create mode 100644 src/business/business-gnome/CMakeLists.txt
 create mode 100644 src/business/business-gnome/gschemas/CMakeLists.txt
 create mode 100644 src/business/business-gnome/gtkbuilder/CMakeLists.txt
 create mode 100644 src/business/business-gnome/ui/CMakeLists.txt
 create mode 100644 src/business/business-ledger/CMakeLists.txt
 create mode 100644 src/cmake_modules/GncAddGSchemaTargets.cmake
 create mode 100644 src/cmake_modules/GncAddSchemeTargets.cmake
 create mode 100644 src/cmake_modules/GncConfigure.cmake
 create mode 100644 src/cmake_modules/GncFindPkgConfig.cmake
 create mode 100644 src/gnome-search/CMakeLists.txt
 create mode 100644 src/gnome-utils/CMakeLists.txt
 create mode 100644 src/gnome-utils/gschemas/CMakeLists.txt
 create mode 100644 src/gnome-utils/gtkbuilder/CMakeLists.txt
 create mode 100644 src/gnome-utils/ui/CMakeLists.txt
 create mode 100644 src/gnome/CMakeLists.txt
 create mode 100644 src/gnome/gschemas/CMakeLists.txt
 create mode 100644 src/gnome/gtkbuilder/CMakeLists.txt
 create mode 100644 src/gnome/ui/CMakeLists.txt
 create mode 100644 src/html/CMakeLists.txt
 create mode 100644 src/import-export/aqb/gschemas/CMakeLists.txt
 create mode 100644 src/import-export/csv-exp/CMakeLists.txt
 create mode 100644 src/import-export/csv-exp/gschemas/CMakeLists.txt
 create mode 100644 src/import-export/csv-imp/CMakeLists.txt
 create mode 100644 src/import-export/csv-imp/gschemas/CMakeLists.txt
 create mode 100644 src/import-export/gschemas/CMakeLists.txt
 create mode 100644 src/import-export/log-replay/CMakeLists.txt
 create mode 100644 src/import-export/ofx/CMakeLists.txt
 create mode 100644 src/import-export/ofx/gschemas/CMakeLists.txt
 create mode 100644 src/import-export/qif-imp/CMakeLists.txt
 create mode 100644 src/import-export/qif-imp/gschemas/CMakeLists.txt
 create mode 100644 src/import-export/qif/CMakeLists.txt
 create mode 100644 src/pixmaps/CMakeLists.txt
 create mode 100644 src/plugins/bi_import/CMakeLists.txt
 create mode 100644 src/plugins/bi_import/gtkbuilder/CMakeLists.txt
 create mode 100644 src/plugins/bi_import/ui/CMakeLists.txt
 create mode 100644 src/plugins/customer_import/CMakeLists.txt
 create mode 100644 src/plugins/customer_import/gtkbuilder/CMakeLists.txt
 create mode 100644 src/plugins/customer_import/ui/CMakeLists.txt
 create mode 100644 src/quotes/CMakeLists.txt
 create mode 100644 src/register/ledger-core/CMakeLists.txt
 create mode 100644 src/register/register-core/CMakeLists.txt
 create mode 100644 src/register/register-gnome/CMakeLists.txt
 create mode 100644 src/report/CMakeLists.txt
 create mode 100644 src/report/business-reports/CMakeLists.txt
 create mode 100644 src/report/jqplot/CMakeLists.txt
 create mode 100644 src/report/locale-specific/us/CMakeLists.txt
 create mode 100644 src/report/report-gnome/CMakeLists.txt
 create mode 100644 src/report/report-system/CMakeLists.txt
 create mode 100644 src/report/standard-reports/CMakeLists.txt
 create mode 100644 src/report/stylesheets/CMakeLists.txt
 create mode 100644 src/report/utility-reports/CMakeLists.txt
 create mode 100644 src/scm/CMakeLists.txt
 create mode 100644 src/scm/gnumeric/CMakeLists.txt
 create mode 100644 src/tax/us/CMakeLists.txt
 create mode 100644 src/test-core/CMakeLists.txt



More information about the gnucash-changes mailing list