mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-21 16:38:06 -06:00
39aa5f9c09
It's extremely out of date and we no longer use it to keep track of our design decisions and suggestions. Only a section on KVP policy has been move into kvp_doc.txt as it may make sense there.
126 lines
5.4 KiB
Plaintext
126 lines
5.4 KiB
Plaintext
GnuCash Compiler Dependency
|
|
---------------------------
|
|
|
|
The GnuCash developers use gcc (https://gcc.gnu.org) for developing and
|
|
testing GnuCash. For convenience, we have relied on certain features
|
|
of gcc that are not part of any official standard and may not be
|
|
available with other standard-compliant compilers. Anyone desiring to
|
|
compile GnuCash with some other compiler may have to remove these
|
|
"gcc-isms", some of which are documented here.
|
|
|
|
Pointer-typed NULL sentinel values
|
|
----------------------------------
|
|
|
|
Gcc provides an implementation of `stddef.h' that defines NULL to
|
|
always expand to a pointer-typed null constant. This is precisely
|
|
what is needed in order to make sentinel value arguments to variadic
|
|
functions correct for both 32 and 64 bit platforms. However, another
|
|
implementation may define NULL to expand to `0'. In that case, all
|
|
sentinel value arguments must have an explicit `(void *)' cast.
|
|
|
|
C++ style comments
|
|
------------------
|
|
|
|
C++ style comments (`// comment to end of line') are discouraged but
|
|
not actively eradicated.
|
|
|
|
Variadic Macros
|
|
---------------
|
|
|
|
GnuCash uses variadic macros for debugging and logging support (via
|
|
qof).
|
|
|
|
|
|
|
|
Important notice
|
|
----------------
|
|
You can find the most recent version of the following part at
|
|
https://wiki.gnucash.org/wiki/Dependencies.
|
|
|
|
GnuCash Library Dependency Policy
|
|
---------------------------------
|
|
|
|
GnuCash desires to only depend on library versions and packages that are
|
|
practically available. Specifically, we choose to depend only on versions
|
|
that have been in the major distributions for 6 months. (This is motivated in
|
|
part by the 1.6 release, which required a large set of relatively-recent
|
|
dependencies. Specifically, as most user's (distributions) did not have the
|
|
required versions packaged, it was exceedingly painful for end users to
|
|
upgrade to the anticipated release, leading to a reputation that gnucash
|
|
still has.)
|
|
|
|
Libraries/Deps
|
|
--------------
|
|
required Version
|
|
-------- _______
|
|
gcc or clang 8.0 (gcc)/6.0(clang) C++17 C/C++ compiler
|
|
cmake 3.10 Build system manager
|
|
glib2 2.56.1
|
|
gtk+3 3.22.30
|
|
guile 3.0, 2.2 or 2.0.9 Must be built with regex
|
|
support enabled
|
|
libxml2 2.9.4
|
|
gettext 0.20 Required to build gnucash.pot,
|
|
0.19.6 or later permitted but
|
|
won't generate gnucash.pot.
|
|
libxslt, including xsltproc
|
|
ICU International Components for
|
|
Unicode
|
|
boost 1.67.0 All headers plus date_time,
|
|
filesystem, locale,
|
|
program_options, and
|
|
regex libraries.
|
|
locale and regex libs must be
|
|
built with ICU support.
|
|
Note that 1.67.0 is the first
|
|
*release* that supports C++17,
|
|
but that some distributions
|
|
have patched earlier versions
|
|
to work.
|
|
swig 3.0.12 Makes Guile and Python Bindings.
|
|
webkit 2.4.11 (Windows,
|
|
2.14.1 (Everything Else)
|
|
googletest 1.8.0 Some distros call it gtest.
|
|
Some distros also separate out
|
|
googlemock or gmock; both are
|
|
required.
|
|
|
|
libdbi 0.8.3 SQL backend; also requires at
|
|
least one of libdbd-sqlite3,
|
|
libdbd-mysql, or libdbd-pgsql
|
|
|
|
zlib
|
|
|
|
optional
|
|
--------
|
|
aqbanking 6.4.0 online banking and SWIFT
|
|
gwenhywfar 5.8.0 file imports.
|
|
|
|
python 3.8.0 python bindings; headers
|
|
required, not just binaries.
|
|
libofx 0.9.12 OFX/QFX import
|
|
|
|
libsecret 0.18
|
|
gtk-mac-integration MacOS only, for menus to go
|
|
to the main menu bar instead
|
|
of one on the window.
|
|
|
|
doxygen For building the Doxygen API
|
|
documentation.
|
|
|
|
at runtime, required
|
|
---------------------
|
|
a gsettings backend to store the gnucash global preferences in
|
|
This backend is platform dependent.
|
|
- linux: dconf
|
|
- windows: registry
|
|
- osx/quarz: plists
|
|
|
|
Note that the osx and windows backends are built-in in gio for their
|
|
respective platforms. On linux and similar systems, the dconf package
|
|
should be installed.
|
|
|
|
at runtime, suggested
|
|
---------------------
|
|
isocodes: translation of currency names
|