The FHS standard rules for a /opt based prefix sets a sysconfig dir to
/etc/opt/... which is outside of /opt. This was however not detected
properly. It now is.
This starts by setting the gnucash version number in the 'project' call.
This will result in a number of variables set by cmake. The remainder
of this commit is to reuse the auto-generated
PROJECT_NAME, PROJECT_VERSION, PROJECT_VERSION_MAJOR
PROJECT_VERSION_MINOR, PROJECT_VERSION_PATCH and PROJECT_VERSION_TWEAK
instead of all the various instances of PACKAGE, GNUCASH_MAJOR_VERSION
and so on.
One parameter is worth mentioning - GETTEXT_PACKAGE
GnuCash is not using this directly (any more) but it has to be set before
including gi18n-lib.h.
This is now an ordinary shared library
* Remove test to load the gnc-module in scheme
* Rewrite test to load the module in C to actually test something.
app-utils now is an ordinery shared library
A few bits worth mentioning:
1. it's not guile-free just yet, so instead of a gnc_module_load
your code may have to call scm_c_use_module("gnucash app-utils");
to expose the scm side of the app-utils api. This call has been
added to gnucash-bin.c for example
2. while lots of noise in this commit is to rename from gncmodule-app-utils
to gnc-app-utils, I'll point out the library has also been moved from
<libdir>/gnucash to <libdir>. This required changes in app-util's
CMakeLists.txt file for the install side and in the top level
CMakeLists.txt file for the build directory structure.
3. The C side link module test has been removed as linking an ordinary
shared library should be considered well tested by the compiler devs.
The scheme side module load test has been slightly tweaked to no longer
try to use gnc:module-load, but instead now checks whether the app-utils
api is properly exposed to scheme after loading it via use-modules.
4. Dropped a completely obsolete README file.
This reverts commit b5afd2e319.
Our baseline distro, Ubuntu 18.04, provides boost 1.65 and boost 1.67
is required for building with C++17 because the boost::locale developer
hung on to auto_ptr 6 years longer than he should have.
(Cherry picked from master)
It's a bit of a hack based on the assumption DESTDIR is never set on Windows.
A install time guard is added to assert this.
It needed a few changes to make this working:
- Have cmake expand DESTDIR instead of delaying this to bash
If not, bash would see "$DESTDIRC:/gcdev64/..." and we'd loose
the drive letter in bash' expansion of $DESTDIRC.
So work with $ENV{DESTDIR} instead
- To prevent cmake from already expanding this in the
build system generation step add the appropriate escapes to
that variable.
- Add guard code in the install command that asserts
DESTDIR is not set on Windows. Use similar escapes as
necessary to ensure the evaluation happens at install time
rather than in the generation step.
It's a bit of a hack based on the assumption DESTDIR is never set on Windows.
A install time guard is added to assert this.
It needed a few changes to make this working:
- Have cmake expand DESTDIR instead of delaying this to bash
If not, bash would see "$DESTDIRC:/gcdev64/..." and we'd loose
the drive letter in bash' expansion of $DESTDIRC.
So work with $ENV{DESTDIR} instead
- To prevent cmake from already expanding this in the
build system generation step add the appropriate escapes to
that variable.
- Add guard code in the install command that asserts
DESTDIR is not set on Windows. Use similar escapes as
necessary to ensure the evaluation happens at install time
rather than in the generation step.
This reverts commit 1a9fcfefad because
on MinGW cmake complains about the paths in pkgconfig files. This can
be addressed by using the MSYS2 cmake instead of the MINGW32 one, but
that requires some other changes... and there's also a path separator
bug in that version of FindPkgConfig.cmake.
Until now it was only done when building from git, but there's no
real reason not to do it as a normal build step in all cases.
It may have been unreliable in the past. There's no evidence
it still is.
This reverts commit adae341d, "Use cmake_symbol_check to test for
AB_Banking_RuntimeConfig_SetCharValue". We received multiple reports
that the cmake check fails and the behaviour unexpectedly does not use
the new function. As this is completely counter-intuitive as long as the
new-enough aqbanking version are there, we better just stick
to the aqbanking version numbers, especially because this function is used
only in exactly one place here.
This causes CMake to include their headers with -isystem instead of -I,
so the compiler doesn't generate warnings on them. ArchLinux was failing
to build because of such warnings.
Includes a function from cmake 3.6 to allow this to work on systems like
Ubuntu 14.04 that still provide only cmake 3.5.
This simplifies function gnc_gtest_configure(), since GoogleTest and
GoogleMock are combined in one source directory.
Additionally variable GMOCK_ROOT is not necessary anymore and is
removed.
It will now first check for an environment variable GNC_SHELL and use
that if it exists. Then hardcode a shell if cmake detects the old
mingw environment (not mingw64), and finally fall back to cmake's
built-in method of finding bash.
This requires a fix in gnucash-on-osx for the build on that platform
to continue to work: on that platform, we should set GNC_SHELL
before starting the build. A patch has been submitted to do that
automatically for the user.
This version is available for all supported platforms and distros
(CentOS can have a version via EPEL, which is required anyway)
Advantages:
- one cmake version for all platforms
- we can drop all conditions based on cmake version
This reverts commit aa53c23239, reversing
changes made to 3c946a8449, because
aa53c23 was based on master and so undid other changes made to maint
since the last merge-to-master.
Requires Gwenhywfar >= 4.9.99 and AQBanking >= 5.3.4, the versions
just before the ones provided by Ubuntu 14.04LTS
Removes all definitions and ifdeffed code for earlier versions.
Removes the never-completed SEPA character checking that was if-zeroed.
Remove old (non-SEPA) online transaction code, because now in 2019
the banks will only offer SEPA transactions and no others. This
in turn means we don't need the old ktoblzcheck checking functions
at all, hence I remove this dependency completely.
We're about to announce our own set of deprecated functions in libgnucash.
That would be pretty pointless if we also would silence all deprecation warnings
at the same time...
- add -Wno-deprecated-declarations to CXX_FLAGS as well. This was
reported by vorlonofportland in PR#401 to become necessary for glib 2.58
as that has deprecated g_type_class_add_private which appears in our
c++ code.
- change -Wno-deprecated-register into -Wregister. The former appeared to
be a clang dialect and alias for the latter (see
https://github.com/Barro/compiler-warnings for an overview of clang
and gcc warnings). It was moved to global CXX_FLAGS as it can only be
added for g++.
We only used strfmon in one source file to generate three fixed format
strings. Instead of updating to a newer strfmon in borrowed I have
chosen to reimplement the string formatters for these strings in C++.
Note this is *not* a full c++ conversion of the full functionality
of assistant-loan. Only the string parsing has been redone.
gnucash has historically supported storing passwords for database
backends with libsecret when HAVE_LIBSECRET is defined. The code is
still present, but support for detecting libsecret's availablity was not
ported over when the build system was converted to cmake. This change
restores the missing detection.
This reverts commit eb67baba5b, reversing
changes made to 0064dafbad.
Keve Mueller's xea-fixes branch was made from master, so merging it into
maint effectively merged master onto maint, not something we want to do.
The swig 3.0 generated python wrappers trigger a warning converted into an error issued
by gcc 8.0 for using strncpy as follows:
strncpy(buff, "swig_ptr: ", 10);
The reason is this call will truncate the trailing null byte from the string.
This appears to have been fixed in swig master already but that's not released yet
so let disable the warning when compiling the swig wrappers until it is.
This is a bit brittle because it depends on Martin Preuss applying our
patch (already applied to borrowed/gwen-gtk3) before releasing 4.20.1,
but creating a proper test for the changes proved to be too difficult.
This switches swig to use python 3 specific features when generating the
bindings, switches the build over to python 3 and makes the neccesary
python 2 to 3 conversions in the bindings and tests.