We must only generate a git-version.h if we have a .git dir or if we
have no git-version.h at all. Otherwise building from a tarball will
destroy the distributed git-version.h.
Also remove #define GIMP_GIT_LAST_COMMIT_YEAR, we don't use it.
Use `git describe` for verbose version, it provides more info than
just the commit ID, and it feels sane to use an existing command for
this. Note that the commit ID is prefixed with 'g'.
This step moves the %.rc.o pattern rule to a small include file in the
build/windows/ directory. Michael Natterer suggested this approach in
order to minimize the changes done to each executable's Makefile.am.
Eventually all executables will have the manifest and version resources
linked. In this initial step, the current resources are moved from the
app/ directory to a global build/windows directory.
Previously, git-version.h always recorded the latest commit on the
master branch. This change should record the current commit (which is
what gets built) regardless of the branch.
I've checked that it does "the right thing" regarding multi-parent
merges by checking out such a merge commit, generating git-version.h and
comparing it to the commit sha1 in the log.
In order to make a clear separation between the core modules and the
UI modules, move the necessary enums from display-enums.h and
widgets-enums.h to config-enums.h and the files
gimpdisplayoptions.[ch] from the display to the config module. This
removes the config -> display dependency.
This change has three main benefits
* It lets us remove includes of display files from the config module
* We don't have to link gimp-console and test-config with a subset of
object files from the display module
* It is reflected in devel-docs/gimp-module-dependencies.svg that the
application is made up of core modules and UI modules and that no
core module depends on any UI module
Add a VERSIONINFO resource to gimp.rc.in, use windres to create object files
for gimp and gimp-console with file-specific information.
Finally, add gimp.rc to .gitignore.
This resource file can potentially be used for all other exectuables and
shared objects, but some adjustments can become necessary.
Enable us to have regression testing by introducing a core testing
framework that uses the GLib JUnit-like test library.
Do this by adding a new subdir app/tests that will contain all our
tests (it contains one trivial test already). Also add app/tests.[ch]
with a new function gimp_init_for_testing() so that test cases can
easily setup the core object system.
Clean up subsystem linking dependencies by
* Rearranging LDADD entries to better match architectural layers
* Being clear about why we need to pass -u in LDFLAGS some times
* Adding FIXMEs when we have broken dependencies
* Introducing a helper variable so we can share LDADD between
gimp-console and gimp