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