We recognize the VALAC environment variable, or you can specify
VALAC=whatever on the ./configure command line.
Also, this cleans up some of the configure logic to be a little easier
to read and edit.
This patch solves the following memory/resource leak problems:
(a) Gee.TreeSet doesn't drop references when destroyed. Fixed by
using a subclass that clears the set when destroyed (exactly same
as patch made to Gee, however that won't be in distribution for
awhile.)
(b) Imap.ClientSession was holding refs to CommandResponses after
they'd been completed. They're now dropped.
(c) Imap.ClientSessionManager now has an open/close_async() (called
by Imap.Account.open/close_async()) that drops all ClientSessions.
(d) All classes in Engine (and some in the client) use Geary.BaseObject,
which uses a static map to track outstanding held references to
it. The table is dumped when Geary exits. Must be enabled with a
./configure flag.
Two outstanding memory leaks persist (one for Imap.ResponseCodes and
another when messages are selected/deselected), so this doesn't close
the ticket, but testing and use has shown these changes to make a huge
improvement on memory usage and reducing crashes.
libindicate is supported in this patch (with some framework in place
to support others, such as libmessagingmenu if/when it comes down
the pipe). libindicate support must be configured with a ./configure
switch (which is one-half of #5607) and is off by default.
Note that this patch does not fully implement our design spec for
how new messages are cleared due to user interaction. That is
covered by #5669.
This introduces a configure script that automates the basic task
of setting up a CMake build directory. It also uses a top-level
Makefile (which the configure script generates, to prevent running
it until configure has executed) which does the build and copies
the final executables into the root of the source tree.