mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-24 09:50:54 -06:00
123 lines
4.5 KiB
Plaintext
123 lines
4.5 KiB
Plaintext
GnuCash Compiler Dependency
|
|
---------------------------
|
|
|
|
The GnuCash developers use gcc (http://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).
|
|
|
|
Declarations after Code
|
|
-----------------------
|
|
|
|
The use of declarations after code (`int i; i = 0; char *foo;') is
|
|
strongly discouraged and actively removed whenever it's caught.
|
|
|
|
|
|
Important notice
|
|
----------------
|
|
You can find the most recent version of the following part at
|
|
http://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.)
|
|
|
|
This document serves to keep track of the major distributions, the date of
|
|
their major release[s], and the relevant library versions as part of that
|
|
release (or an official package-upgrade path)
|
|
|
|
Libraries/Deps
|
|
--------------
|
|
required Version
|
|
-------- _______
|
|
glib2 2.40.0
|
|
gtk+3 3.14.0
|
|
guile 2.2.0 or 2.0.0
|
|
libxml2 2.5.10
|
|
gettext 0.19.6
|
|
libxslt, including xsltproc
|
|
ICU International Compnents for
|
|
Unicode
|
|
boost 1.50.0 locale and regex libs must be
|
|
built with ICU support.
|
|
swig 2.0.10 Only required to build from git.
|
|
webkit webkitgtk-3.0 (Windows, Mac)
|
|
webkit2gtk-3.0 (Everything Else)
|
|
googletest 1.7.0 Some distros call it gtest.
|
|
Some distros also separate out
|
|
googlemock or gmock; both are
|
|
required.
|
|
|
|
optional
|
|
--------
|
|
aqbanking 4.0.0 online banking; also requires
|
|
gwehywfar and ktoblzcheck
|
|
|
|
libdbi 0.8.3 SQL backend; also requires at
|
|
least one of libdbd-sqlite3,
|
|
libdbd-mysql, or libdbd-pgsql
|
|
|
|
libofx 0.9.0 OFX/QFX import
|
|
|
|
python 3.4.0 python bindings; headers
|
|
required, not just binaries.
|
|
|
|
makeinfo Not really needed, it
|
|
just builds the
|
|
mostly obsolete
|
|
design documentation
|
|
(superceded for the
|
|
most part in Doxygen
|
|
docs).
|
|
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
|
|
|