r18815 - gnucash/trunk - Finish cmake build system for the C++ experiment.
Christian Stimming
cstim at code.gnucash.org
Thu Mar 4 12:48:37 EST 2010
Author: cstim
Date: 2010-03-04 12:48:36 -0500 (Thu, 04 Mar 2010)
New Revision: 18815
Trac: http://svn.gnucash.org/trac/changeset/18815
Added:
gnucash/trunk/CMakeLists.txt
Modified:
gnucash/trunk/src/CMakeLists.txt
gnucash/trunk/src/backend/xml/CMakeLists.txt
gnucash/trunk/src/cmake_modules/GncAddSwigCommand.cmake
gnucash/trunk/src/core-utils/CMakeLists.txt
gnucash/trunk/src/engine/CMakeLists.txt
gnucash/trunk/src/gnc-module/CMakeLists.txt
gnucash/trunk/src/gnc/CMakeLists.txt
gnucash/trunk/src/gnc/ScopedPointer.hpp
gnucash/trunk/src/gnc/Session.cpp
gnucash/trunk/src/gnc/Session.hpp
gnucash/trunk/src/gnc/WeakPointer.hpp
gnucash/trunk/src/gnc/mainwindow.cpp
gnucash/trunk/src/libqof/CMakeLists.txt
gnucash/trunk/src/test-core/CMakeLists.txt
Log:
Finish cmake build system for the C++ experiment.
To build this:
mkdir build-cpp
cd build-cpp
cmake ..
make
./src/gnc/cutecash
Added: gnucash/trunk/CMakeLists.txt
===================================================================
--- gnucash/trunk/CMakeLists.txt (rev 0)
+++ gnucash/trunk/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -0,0 +1,81 @@
+# CMakeLists.txt for the cutecash sub-project of gnucash
+
+# This is very EXPERIMENTAL! We will see how far this project will
+# get.
+
+CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
+PROJECT (cutecash)
+
+# Extra cmake macros
+SET (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/src/cmake_modules;${CMAKE_MODULE_PATH}")
+INCLUDE (MacroAppendForeach)
+INCLUDE (MacroAddSourceFileCompileFlags)
+INCLUDE (GncAddSwigCommand)
+
+# ############################################################
+
+# Find pkg-config
+FIND_PACKAGE (PkgConfig REQUIRED)
+
+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.0)
+PKG_CHECK_MODULES (GCONF2 gconf-2.0>=2.0)
+PKG_CHECK_MODULES (GOBJECT gobject-2.0>=2.20.0)
+PKG_CHECK_MODULES (GMODULE gmodule-2.0>=2.20.0)
+PKG_CHECK_MODULES (GTHREAD gthread-2.0>=2.20.0)
+
+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")
+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 (REGEX_INCLUDE_PATH NAMES regex.h
+ PATHS /usr/include /opt/gnome/include)
+FIND_LIBRARY (REGEX_LIBRARY NAMES regex)
+
+# ############################################################
+
+# SWIG
+FIND_PACKAGE (SWIG REQUIRED)
+INCLUDE (${SWIG_USE_FILE})
+
+# guile
+FIND_PATH (LIBGUILE_INCLUDE_PATH NAMES libguile.h
+ PATHS /usr/include)
+FIND_LIBRARY (LIBGUILE_LIBRARIES NAMES guile)
+FIND_PROGRAM (GUILE_EXECUTABLE guile)
+
+# ############################################################
+
+# Qt
+SET (QT_MIN_VERSION "4.5.0")
+FIND_PACKAGE (Qt4 REQUIRED) # find and setup Qt4 for this project
+
+# ############################################################
+
+# Compiler flags
+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")
+ENDIF (UNIX)
+IF (MINGW)
+ SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wdeclaration-after-statement -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wno-unused")
+ENDIF (MINGW)
+
+# ############################################################
+
+# The subdirectories
+ADD_SUBDIRECTORY (src)
Modified: gnucash/trunk/src/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -1,100 +1,11 @@
# CMakeLists.txt for src/
-# EXPERIMENTAL! This is just a trial of how far we can get for a cmake
-# build system.
-
-CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
-PROJECT (gnucash)
-
-# Extra cmake macros
-SET (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules;${CMAKE_MODULE_PATH}")
-INCLUDE (MacroAppendForeach)
-INCLUDE (MacroAddSourceFileCompileFlags)
-INCLUDE (GncAddSwigCommand)
-
# ############################################################
-# Find pkg-config
-FIND_PACKAGE (PkgConfig REQUIRED)
-
-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.0)
-PKG_CHECK_MODULES (GCONF2 gconf-2.0>=2.0)
-PKG_CHECK_MODULES (GOBJECT gobject-2.0>=2.20.0)
-PKG_CHECK_MODULES (GMODULE gmodule-2.0>=2.20.0)
-PKG_CHECK_MODULES (GTHREAD gthread-2.0>=2.20.0)
-
-IF (MSVC)
- MESSAGE (STATUS "To create the import libraries for the gnome DLLs (e.g. gconf-2.lib), use the dlltool as follows: dlltool -D libgconf-2-4.dll -l ../lib/gconf-2.lib")
-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 (REGEX_INCLUDE_PATH NAMES regex.h
- PATHS /usr/include /opt/gnome/include)
-FIND_LIBRARY (REGEX_LIBRARY NAMES regex)
-
-# ############################################################
-
-# SWIG
-FIND_PACKAGE (SWIG REQUIRED)
-INCLUDE (${SWIG_USE_FILE})
-
-# guile
-FIND_PATH (LIBGUILE_INCLUDE_PATH NAMES libguile.h
- PATHS /usr/include)
-FIND_LIBRARY (LIBGUILE_LIBRARIES NAMES guile)
-FIND_PROGRAM (GUILE_EXECUTABLE guile)
-
-# ############################################################
-
-# Qt
-SET (QT_MIN_VERSION "4.5.0")
-FIND_PACKAGE (Qt4 REQUIRED) # find and setup Qt4 for this project
-
-# ############################################################
-
-# Check for boost
-FIND_PACKAGE (Boost QUIET)
-INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})
-
-# MSVC should not link against boost-regex and boost-date_time.
-IF (MSVC)
- ADD_DEFINITIONS( -DBOOST_ALL_NO_LIB )
-ENDIF (MSVC)
-IF (WIN32)
- ADD_DEFINITIONS (-DWIN32_LEAN_AND_MEAN)
-ENDIF (WIN32)
-
-# ############################################################
-
-# Compiler flags
-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")
-ENDIF (UNIX)
-IF (MINGW)
- SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wdeclaration-after-statement -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wno-unused")
-ENDIF (MINGW)
-
-# ############################################################
-
# Create config.h
ADD_DEFINITIONS (-DHAVE_CONFIG_H)
-SET (CONFIG_H ${CMAKE_CURRENT_BINARY_DIR}/config.h.tmp)
+SET (CONFIG_H ${CMAKE_CURRENT_BINARY_DIR}/config.h)
FILE (WRITE ${CONFIG_H} "#define PACKAGE \"gnucash\"\n")
FILE (APPEND ${CONFIG_H} "
@@ -216,7 +127,7 @@
ENDIF (UNIX)
# Let cmake copy the created file only on changes.
-CONFIGURE_FILE (${CONFIG_H} ${CMAKE_CURRENT_BINARY_DIR}/config.h COPYONLY)
+#CONFIGURE_FILE (${CONFIG_H} ${CMAKE_CURRENT_BINARY_DIR}/config.h COPYONLY)
# ############################################################
@@ -226,7 +137,7 @@
ADD_SUBDIRECTORY (gnc-module)
ADD_SUBDIRECTORY (engine)
ADD_SUBDIRECTORY (backend/xml)
+ADD_SUBDIRECTORY (test-core)
ADD_SUBDIRECTORY (gnc)
-ADD_SUBDIRECTORY (test-core)
Modified: gnucash/trunk/src/backend/xml/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/backend/xml/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/backend/xml/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -8,13 +8,13 @@
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${LIBXML2_INCLUDE_DIR})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/../lib/libc) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/libqof/qof)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/core-utils)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/gnc-module)
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/engine)
+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.c
# Command to generate the swig-engine.c wrapper file
Modified: gnucash/trunk/src/cmake_modules/GncAddSwigCommand.cmake
===================================================================
--- gnucash/trunk/src/cmake_modules/GncAddSwigCommand.cmake 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/cmake_modules/GncAddSwigCommand.cmake 2010-03-04 17:48:36 UTC (rev 18815)
@@ -8,8 +8,8 @@
ADD_CUSTOM_COMMAND (
OUTPUT ${_target}
- DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/base-typemaps.i ${ARGN}
- COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/libqof/qof -I${CMAKE_SOURCE_DIR} -o ${_target} ${_input}
+ DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
+ COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src -o ${_target} ${_input}
)
ENDMACRO (GNC_ADD_SWIG_COMMAND)
Modified: gnucash/trunk/src/core-utils/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/core-utils/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/core-utils/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -7,8 +7,8 @@
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${LIBGUILE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}) # for gnc-ui.h
+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}) # when building swig-core-utils.c
# Command to generate the swig-engine.c wrapper file
Modified: gnucash/trunk/src/engine/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/engine/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/engine/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -6,11 +6,11 @@
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${LIBGUILE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/gnc-module) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/core-utils) # for gnc-glib-utils.h
+INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.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_CURRENT_SOURCE_DIR}) # for <Account.h>
INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}) # for gncla-dir.h
@@ -129,7 +129,7 @@
)
# Add dependency on config.h
-SET_SOURCE_FILES_PROPERTIES (${libgncmod_engine_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+#SET_SOURCE_FILES_PROPERTIES (${libgncmod_engine_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
ADD_LIBRARY (engine
${libgncmod_engine_SOURCES}
Modified: gnucash/trunk/src/gnc/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/gnc/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -23,7 +23,6 @@
SET (gnc_HEADERS ${gnc_QOBJECT_HEADERS}
Account.hpp
Book.hpp
- ScopedPointer.hpp
Session.hpp
WeakPointer.hpp
)
@@ -48,19 +47,19 @@
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${LIBGUILE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/gnc-module) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/core-utils) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/engine) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/backend/xml)
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/engine) # for swig-runtime.h
+INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.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/engine) # for gnc-glib-utils.h
+INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/backend/xml)
+INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src/engine) # for swig-runtime.h
INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}) # for ui_mainwindow.h
INCLUDE_DIRECTORIES (${QT_INCLUDES})
-ADD_EXECUTABLE (cpp-main
+ADD_EXECUTABLE (cutecash
${gnc_FORMS_HEADERS}
${gnc_HEADERS}
${gnc_MOC_SOURCES}
@@ -68,14 +67,14 @@
${gnc_SOURCES}
)
-TARGET_LINK_LIBRARIES (cpp-main gnc-backend-xml engine gnc-module core-utils qof)
-TARGET_LINK_LIBRARIES (cpp-main ${GCONF2_LIBRARIES})
-TARGET_LINK_LIBRARIES (cpp-main ${GTHREAD_LIBRARIES} ${GOBJECT_LIBRARIES} ${GMODULE_LIBRARIES} ${GLIB2_LIBRARIES})
-TARGET_LINK_LIBRARIES (cpp-main ${LIBGUILE_LIBRARIES})
-TARGET_LINK_LIBRARIES (cpp-main ${LIBXML2_LIBRARIES})
-TARGET_LINK_LIBRARIES (cpp-main ${ZLIB_LIBRARIES})
+TARGET_LINK_LIBRARIES (cutecash gnc-backend-xml engine gnc-module core-utils qof)
+TARGET_LINK_LIBRARIES (cutecash ${GCONF2_LIBRARIES})
+TARGET_LINK_LIBRARIES (cutecash ${GTHREAD_LIBRARIES} ${GOBJECT_LIBRARIES} ${GMODULE_LIBRARIES} ${GLIB2_LIBRARIES})
+TARGET_LINK_LIBRARIES (cutecash ${LIBGUILE_LIBRARIES})
+TARGET_LINK_LIBRARIES (cutecash ${LIBXML2_LIBRARIES})
+TARGET_LINK_LIBRARIES (cutecash ${ZLIB_LIBRARIES})
IF (WIN32)
- TARGET_LINK_LIBRARIES (cpp-main ${LIBINTL_LIBRARY} ${REGEX_LIBRARY})
+ TARGET_LINK_LIBRARIES (cutecash ${LIBINTL_LIBRARY} ${REGEX_LIBRARY})
ENDIF (WIN32)
-TARGET_LINK_LIBRARIES (cpp-main ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
+TARGET_LINK_LIBRARIES (cutecash ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
Modified: gnucash/trunk/src/gnc/ScopedPointer.hpp
===================================================================
--- gnucash/trunk/src/gnc/ScopedPointer.hpp 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc/ScopedPointer.hpp 2010-03-04 17:48:36 UTC (rev 18815)
@@ -1,6 +1,7 @@
#ifndef GNC_SCOPEDPOINTER_HPP
#define GNC_SCOPEDPOINTER_HPP
+#error "This file requires the Boost library because the boost::shared_ptr is nice and has non-trivial features. However, in the current build this file isn't used anyway, so it should not be used within this project so far."
#include <boost/shared_ptr.hpp>
namespace gnc
Modified: gnucash/trunk/src/gnc/Session.cpp
===================================================================
--- gnucash/trunk/src/gnc/Session.cpp 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc/Session.cpp 2010-03-04 17:48:36 UTC (rev 18815)
@@ -3,7 +3,6 @@
#include "gnc/Book.hpp"
// Explicit instantiation to check for compiler errors in the template
-template class gnc::ScopedPointer< QofSession >;
template class gnc::WeakPointer< QofSession >;
Modified: gnucash/trunk/src/gnc/Session.hpp
===================================================================
--- gnucash/trunk/src/gnc/Session.hpp 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc/Session.hpp 2010-03-04 17:48:36 UTC (rev 18815)
@@ -10,8 +10,7 @@
#include "engine/gnc-hooks.h"
}
-#include "gnc/ScopedPointer.hpp"
-#include <boost/noncopyable.hpp>
+#include "gnc/WeakPointer.hpp"
#include <QString>
namespace gnc
@@ -22,33 +21,20 @@
/** ScopedPointer object around a QofSession object, which also owns the
* QofSession object.
*/
-class Session : public ScopedPointer< ::QofSession >
- , boost::noncopyable
+class Session : public WeakPointer< ::QofSession >
{
public:
- typedef ScopedPointer< ::QofSession > base_class;
+ typedef WeakPointer< ::QofSession > base_class;
- Session()
- : base_class()
+ Session(element_type *ptr = 0)
+ : base_class(ptr)
{}
- Session(element_type *ptr)
- : base_class(ptr, qof_session_destroy)
- {}
- void reset(element_type *ptr)
- {
- base_class::reset(ptr, qof_session_destroy);
- }
- using base_class::reset;
- static element_type* newInstance()
- {
- return qof_session_new();
- }
// Now the actual functions on the object
- void begin(const std::string& book_id, bool ignore_lock, bool create_if_nonexistent)
+ void begin(const QString& book_id, bool ignore_lock, bool create_if_nonexistent)
{
- qof_session_begin(get(), book_id.c_str(), ignore_lock, create_if_nonexistent);
+ qof_session_begin(get(), book_id.toUtf8(), ignore_lock, create_if_nonexistent);
}
void load (QofPercentageFunc percentage_func)
{
Modified: gnucash/trunk/src/gnc/WeakPointer.hpp
===================================================================
--- gnucash/trunk/src/gnc/WeakPointer.hpp 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc/WeakPointer.hpp 2010-03-04 17:48:36 UTC (rev 18815)
@@ -2,6 +2,7 @@
#define GNC_WEAKPOINTER_HPP
#include <string>
+#include <cassert>
namespace gnc
{
Modified: gnucash/trunk/src/gnc/mainwindow.cpp
===================================================================
--- gnucash/trunk/src/gnc/mainwindow.cpp 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc/mainwindow.cpp 2010-03-04 17:48:36 UTC (rev 18815)
@@ -61,6 +61,11 @@
MainWindow::~MainWindow()
{
+ if (m_session.get())
+ {
+ qof_session_destroy(m_session.get());
+ m_session.reset();
+ }
}
void MainWindow::open()
@@ -223,6 +228,7 @@
qof_session_call_close_hooks(m_session.get());
gnc_hook_run(HOOK_BOOK_CLOSED, m_session.get());
+ qof_session_destroy(m_session.get());
m_session.reset();
qof_event_resume ();
@@ -244,7 +250,7 @@
if (maybeSave())
{
- if (m_session.get())
+ if (m_session)
{
/* close any ongoing file sessions, and free the accounts.
* disable events so we don't get spammed by redraws. */
@@ -253,12 +259,13 @@
m_session.call_close_hooks();
gnc_hook_run(HOOK_BOOK_CLOSED, m_session.get());
+ qof_session_destroy(m_session.get());
m_session.reset();
qof_event_resume ();
}
/* start a new book */
- m_session.reset(Session::newInstance());
+ m_session.reset(qof_session_new());
gnc_hook_run(HOOK_NEW_BOOK, NULL);
@@ -290,6 +297,7 @@
/* -- this code is almost identical in FileOpen and FileSaveAs -- */
m_session.call_close_hooks();
gnc_hook_run(HOOK_BOOK_CLOSED, m_session.get());
+ qof_session_destroy(m_session.get());
m_session.reset();
/* load the accounts from the users datafile */
@@ -394,6 +402,11 @@
/* if we got to here, then we've successfully gotten a new session */
/* close up the old file session (if any) */
+ if (m_session.get())
+ {
+ qof_session_destroy(m_session.get());
+ m_session.reset();
+ }
m_session.reset(new_session);
qof_event_resume ();
@@ -503,6 +516,7 @@
/* if we got to here, then we've successfully gotten a new session */
/* close up the old file session (if any) */
qof_session_swap_data (session, new_session);
+ qof_session_destroy(m_session.get());
m_session.reset();
session = NULL;
Modified: gnucash/trunk/src/gnc-module/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/gnc-module/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/gnc-module/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -6,8 +6,8 @@
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${LIBGUILE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}) # for gnc-ui.h
+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
Modified: gnucash/trunk/src/libqof/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/libqof/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/libqof/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -5,8 +5,8 @@
INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS})
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/../lib/libc) # for strptime.h
+INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}/.. ) # for config.h
+INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/lib/libc) # for strptime.h
# Workaround to create a very simple gncla-dir.h file
Modified: gnucash/trunk/src/test-core/CMakeLists.txt
===================================================================
--- gnucash/trunk/src/test-core/CMakeLists.txt 2010-03-04 17:48:12 UTC (rev 18814)
+++ gnucash/trunk/src/test-core/CMakeLists.txt 2010-03-04 17:48:36 UTC (rev 18815)
@@ -16,14 +16,14 @@
INCLUDE_DIRECTORIES (${LIBINTL_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${REGEX_INCLUDE_PATH})
INCLUDE_DIRECTORIES (${LIBGUILE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} ) # for config.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}) # for gnc-ui.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/libqof/qof) # for qof.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/gnc-module) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/core-utils) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/engine) # for gnc-glib-utils.h
-INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/backend/xml)
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/engine) # for swig-runtime.h
+INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src ) # for config.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/engine) # for gnc-glib-utils.h
+INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/src/backend/xml)
+INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/src/engine) # for swig-runtime.h
TARGET_LINK_LIBRARIES (test-main gnc-backend-xml engine gnc-module core-utils qof)
TARGET_LINK_LIBRARIES (test-main ${GCONF2_LIBRARIES})
More information about the gnucash-changes
mailing list