intltool has long been dead upstream. Let's not poke the dead corpse, please. This commit is quite large, but that's mostly since trying to support a hybrid of both gettext and intltool with both Meson and Autotools was really hard, so I stopped trying. Due to gettext relying on quite some things being at the exactly right place in the autotools build (like `ABOUT-NLS` and `config.rpath`) we really needed to cleanup the `autogen.sh` to only call `aclocal` and `autoreconf`. No more strange magic; I tried to do it without changing too much in the file, and things just broke. If people want to do something more custom, they can just change the script directly. This change also uncovered some problems in our `configure.ac`, like using deprecated macros. The following major changes happened: * meson: Changed `custom_target()` to `i18n.merge_file()` for all supported file types * Added `.its` and `.loc` files for the GIMP-specific XML formats, so that gettext understands them * For the `.isl` (Window installer stuff) file, there's no easy way to do this in gettext, so instead we start from an XML file (again with its own ITS rules etc), translate that with gettext, and then use `xsltproc` with a bit of magic to output the .isl file for each language * the `po*/Makefile.in.in` files are migrated to `Makevars` files, which gettext natively understands. Fixes: https://gitlab.gnome.org/GNOME/gimp/-/issues/8028
2.5 KiB
Doing a Simple Build
To begin with, you need to install jhbuild, mingw-w64, and a few other build-related dependencies.
If you're using debian, install these packages:
sudo apt-get install build-essential mingw-w64 git jhbuild automake autoconf libtool libgtk2.0-dev ragel bison flex gperf gtk-doc-tools nasm ruby cmake libxml-simple-perl
From there, in theory, you can simply clone this repo, cd into it, and run:
./build
That will build the development version of the gimp.
If you'd rather build the stable version of the gimp, run this instead:
MODULE=gimp-stable ./build
If you'd like to build with debigging information, run:
BUILD_FLAVOUR=dbg ./build
What if it doesn't work out of the box?
I've actually never had that work out of the box, so chances are you'll need to adjust things a bit.
If you get an error along the lines of no: command not found while building GTK+, then that means gdk-pixbuf-csource can't be found.
You can fix this by installing your distro's GTK+ 2 development package.
(libgtk2.0-dev on debian)
If you get an error that looks like this while building cairo:
In file included from getline.c:31:0:
cairo-missing.h:45:17: error: conflicting types for 'ssize_t'
In file included from /usr/lib/gcc/i486-mingw32/4.7.0/../../../../i486-mingw32/include/stdio.h:534:0,
from cairo-missing.h:36,
from getline.c:31:
/usr/lib/gcc/i486-mingw32/4.7.0/../../../../i486-mingw32/include/sys/types.h:118:18: note: previous declaration of 'ssize_t' was here
In file included from strndup.c:31:0:
cairo-missing.h:45:17: error: conflicting types for 'ssize_t'
In file included from /usr/lib/gcc/i486-mingw32/4.7.0/../../../../i486-mingw32/include/stdio.h:534:0,
from cairo-missing.h:36,
from strndup.c:31:
/usr/lib/gcc/i486-mingw32/4.7.0/../../../../i486-mingw32/include/sys/types.h:118:18: note: previous declaration of 'ssize_t' was here
Then you need to add -D_SSIZE_T_DEFINED to your MINGW_CFLAGS, like this:
export MINGW_CFLAGS="-D_SSIZE_T_DEFINED"
Other Scripts
There are a few other scripts included in this repo:
- ./clean will remove all build artifacts (but leave the downloaded tarballs), leaving you with a clean setup.
- ./mkarchive will create self extracting archives of the gimp.
- ./split-build will do a special build where it builds both gimp-dev and gimp-stable but the two builds share the same dependencies. The directories then needs to be merged using ./mkarchive.