123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492 |
- ---------------------------------------
- Installation instructions for GIMP @GIMP_APP_VERSION@
- ---------------------------------------
- There are some basic steps to building and installing GIMP.
- GIMP @GIMP_APP_VERSION@ replaces earlier GIMP 2.99.x versions. It is advised to
- uninstall them before installing GIMP @GIMP_APP_VERSION@. Since libgimp* libraries
- and data are all versionned anyway, it is possible to keep your older
- GIMP 2.x installation in parallel to GIMP @GIMP_APP_VERSION@ on a same prefix.
- GIMP @GIMP_APP_VERSION@ is not backward compatible with GIMP 2.10 and earlier
- versions. Plug-ins and scripts written for GIMP 2.10, 2.8, 2.6 or
- earlier GIMP 2.x versions will not work because the API changed.
- The most important part is to make sure the requirements for a build
- are fulfilled. We depend on a number of tools and libraries which are
- listed below. For libraries this means you need to also have the
- header files installed.
- This file is generated (versions are filled by our build system) and
- focuses on keeping an up-to-date list of dependencies intended to
- packagers, contributors or whoever wants to compile GIMP from source.
- Building and running self-built software often requires more setup, in
- particular environment variables so that your system knows where to
- find the various pieces of the software. The following document can
- help in that regard:
- https://developer.gimp.org/core/setup/build/
- ******************************************************************
- * Unless you are experienced with building software from source, *
- * you should not attempt to build all these libraries yourself! *
- * We suggest that you check if your distributor has development *
- * packages of them and use these instead. *
- ******************************************************************
- 1. You need to have installed a recent version of pkg-config (>= @GIMP_PKGCONFIG_VERSION@) available
- from https://www.freedesktop.org/software/pkgconfig/.
- The compatible pkgconf utility would also work.
- 2. You need gettext version 0.19.8 or newer. Older versions did not have support yet
- for certain file formats.
- 3. You need to have GEGL version @GEGL_REQUIRED_VERSION@ or newer and babl version
- @BABL_REQUIRED_VERSION@ or newer. You can get them from https://gegl.org/ or clone
- them from the GNOME git repository:
- https://gitlab.gnome.org/GNOME/babl.git
- https://gitlab.gnome.org/GNOME/gegl.git
- GEGL must be built with Cairo support, i.e. -Dcairo=enabled option (required
- for some mandatory operations such as "gegl:npd").
- Introspection must be enabled for both babl and GEGL with -Denable-gir=true
- and -Dintrospection=true respectively. The only case where we don't build
- GIR data is when cross-compiling because of the difficulty to make cross-tools
- for GObject Introspection.
- Nevertheless if you have working GIR cross-tools, you can force the expected
- behavior with GIMP's meson option -Dcan-crosscompile-gir=true
- Optional:
- - build GEGL with libumfpack (SuiteSparse) (`-Dumfpack=enabled`)
- for alternative Matting engine "gegl:matting-levin" and OpenEXR
- library (`-Dopenexr=enabled`) for OpenEXR format support.
- - build GEGL with maxflow (https://github.com/gerddie/maxflow) and
- the option -Dworkshop=true in order to be able to select the
- experimental Paint Select tool in the Playground (operation
- "gegl:paint-select" is needed).
- - The "Show Image Graph" item in the "Debug" menu (hidden by
- default on stable release) requires the GEGL operation
- "gegl:introspect" which is always built but deactivated unless
- the `dot` tool from graphviz is available (runtime dependency).
- 4. You need to have installed GTK version @GTK_REQUIRED_VERSION@ or newer.
- GIMP also needs a recent version of GLib (>= @GLIB_REQUIRED_VERSION@), GDK-Pixbuf
- (>= @GDK_PIXBUF_REQUIRED_VERSION@), and Pango (>= @PANGO_REQUIRED_VERSION@). Sources for these can be grabbed
- from https://download.gnome.org/sources/.
- 5. We use cairo >= @CAIRO_REQUIRED_VERSION@, which is hosted at
- https://www.cairographics.org/.
- 6. We require PangoCairo, a Pango backend using Cairo. Make sure you
- have Cairo, FreeType2 and fontconfig installed before you compile
- Pango. GIMP depends on freetype2 being newer than version @FREETYPE2_REQUIRED_VERSION@
- and fontconfig @FONTCONFIG_REQUIRED_VERSION@ or newer. Older versions are known to have
- bugs that seriously affect the stability of GIMP.
- On Windows, we recommend fontconfig 2.13.95 (or over) where support
- of fonts in user directory (Windows 1809 feature) appeared.
- We also require HarfBuzz @HARFBUZZ_REQUIRED_VERSION@ or newer, an OpenType text shaping
- tool. As this is a dependency for Pango, you will likely have it
- installed, but you may have to install a development package for
- the headers.
- 7. The file-compressor plug-in requires zlib, libbzip2, and liblzma to
- be installed. All these libraries are required dependencies.
- 8. For metadata access GIMP requires the gexiv2 @GEXIV2_REQUIRED_VERSION@ or newer library.
- It is hosted at: https://wiki.gnome.org/Projects/gexiv2
- 9. libpng, libjpeg, libtiff, librsvg and lcms are hard dependencies
- that can not be disabled.
- There might be some issues with librsvg, based on the fact newer
- versions are in Rust which is not buildable on all platforms. Yet
- SVG support was deemed too important to be considered "optional"
- for a decent graphics activity. Nevertheless a packager really
- intent to have GIMP running on an architecture with no Rust support
- could still:
- 1) easily patch out the file-svg plug-in from build system;
- 2) build GIMP with -Dvector-icons=false. Ironically librsvg is
- needed at build time for this option, in order to create PNG
- variants of icons (making librsvg unneeded at runtime). So all it
- takes is to have a build machine with librsvg to create the PNG
- icons, package and deliver them for machines without librsvg.
- This is the compromise we came with, i.e. officially making SVG a
- first-class file format, yet explaining how you could ignore it if
- you really wanted or needed to.
- 10. For MyPaint brushes, brushlib (libmypaint) @LIBMYPAINT_REQUIRED_VERSION@ is used.
- The libmypaint repository is hosted at:
- https://github.com/mypaint/libmypaint
- If installing from repository, do not install the master branch!
- Checkout the last tag "v1.y.z" from `libmypaint-v1` branch instead
- (for instance "v1.6.1" tag at time of writing), or simply install
- from a tarball or from your favorite package manager.
- In particular, do NOT install tags or release tarballs versioned
- "v2.y.z". GIMP depends on the version 1 of libmypaint and is
- incompatible with the version 2 (which is still experimental anyway
- and has no stable release at time of writing).
- 11. We also need the mypaint-brushes data package:
- https://github.com/mypaint/mypaint-brushes
- If installing from repository, install from branch "v1.3.x" or the
- last tag "v1.y.z" (e.g. "v1.3.1" at time of writing).
- In particular do NOT install from `master` branch which installs
- brushes incompatible with GIMP (the `master` branch and v2 brushes
- are targeted to software using recent libmypaint which GIMP wasn't
- ported to yet).
- Also this is a data packages and therefore it will install the
- pkg-config file inside `$PREFIX/share/pkgconfig/`. If you install
- mypaint-brushes from repository in a non-standard prefix, you will
- have to make sure your $PKG_CONFIG_PATH environment variable also
- lists `$PREFIX/share/pkgconfig/`.
- 12. GIMP uses GLib's GIO library to handle file URIs and any I/O in
- general, transparently, regardless where the file is stored, i.e.
- locally, remotely, with which scheme, and so on. GIO in turn
- supports various backends through modules. We don't know all the
- modules available but since HTTP and HTTPS are so pervasive
- nowadays, we kind of consider a least GIO modules for these schemes
- mandatory (it allows to open from a pasted URL or just drag'n drop
- from e.g. a browser).
- For HTTP support (and many other schemes), on Linux at least, you
- should install `gvfs`:
- https://wiki.gnome.org/Projects/gvfs
- It is unclear whether `gvfs` can be built and installed on other
- platforms such as Windows and macOS.
- For HTTPS support, you should install `glib-networking`:
- https://gitlab.gnome.org/GNOME/glib-networking
- Of course there might be more modules providing support of more
- storage backends. Ideally GIMP would have support to load from any
- backend so packaging together with more GIO modules or recommending
- them in a package manager would be ideal. In any case, installing
- the ones for HTTP and HTTPS seems like the minimum nowadays.
- 13. You may want to install other third party libraries or programs
- that are needed for some of the available plug-ins. We recommend
- to check that the following libraries are installed: openjpeg,
- libmng, libwmf, libaa and libgs (Ghostscript).
- 14. HEIF support depends on the libheif library. If you don't have
- access to pre-built packages, the code is available at:
- https://github.com/strukturag/libheif
- Make sure you build libheif with libde265 and libx265 support (for
- respectively decoding and encoding of HEVC, i.e. HEIC files), and
- libaom decoder and encoder (for AV1, i.e. AVIF files), otherwise
- the plug-in is mostly useless.
- 15. GObject Introspection requires the following dependencies to be
- built and installed with introspection as well: babl, cairo,
- GdkPixbuf, GEGL, GIO, GLib, GObject and GTK.
- 16. Windows builds can now generate backtrace logs upon a crash.
- The logs will be available in: %APPDATA%\GIMP\@GIMP_APP_VERSION@\CrashLog\
- The feature depends on Dr.MinGW's ExcHndl library:
- https://github.com/jrfonseca/drmingw
- 17. Optional step if compiling GIMP from git (unneeded from tarball): you need
- to initialize submodules with command `git submodule update --init`.
- 18. Configure GIMP by running `meson _build`. You may want to pass some
- options to it, see below.
- 19. Build GIMP by running `ninja -C _build'.
- 20. Install GIMP by running `ninja -C _build install'. In order to
- avoid clashes with other versions of GIMP, we install a binary
- called gimp-@GIMP_APP_VERSION@. By default there's also a link created so that
- you can type 'gimp' to start gimp-@GIMP_APP_VERSION@.
- 21. Summary of required packages and what version you need:
- Package Name Version
- appstream-glib @APPSTREAM_GLIB_REQUIRED_VERSION@
- ATK @ATK_REQUIRED_VERSION@
- babl @BABL_REQUIRED_VERSION@
- cairo @CAIRO_REQUIRED_VERSION@
- Fontconfig @FONTCONFIG_REQUIRED_VERSION@
- freetype2 @FREETYPE2_REQUIRED_VERSION@
- GDK-PixBuf @GDK_PIXBUF_REQUIRED_VERSION@
- GEGL @GEGL_REQUIRED_VERSION@
- gexiv2 @GEXIV2_REQUIRED_VERSION@
- GIO
- GLib @GLIB_REQUIRED_VERSION@
- glib-networking
- GTK @GTK_REQUIRED_VERSION@
- gvfs (on Linux)
- HarfBuzz @HARFBUZZ_REQUIRED_VERSION@
- libbzip2
- libjpeg
- liblzma @LIBLZMA_REQUIRED_VERSION@
- libmypaint @LIBMYPAINT_REQUIRED_VERSION@
- libpng @LIBPNG_REQUIRED_VERSION@
- libpoppler-glib @POPPLER_REQUIRED_VERSION@
- librsvg @RSVG_REQUIRED_VERSION@
- libtiff @LIBTIFF_REQUIRED_VERSION@
- Little CMS @LCMS_REQUIRED_VERSION@
- mypaint-brushes-1.0
- pangocairo @PANGO_REQUIRED_VERSION@
- poppler-data @POPPLER_DATA_REQUIRED_VERSION@
- zlib
- 22. Summary of optional packages:
- Package Name Version Feature
- cairo-pdf @CAIRO_PDF_REQUIRED_VERSION@ PDF export
- cfitsio - FITS
- ExcHndl - Crash logs on Windows with Dr. MinGW
- gs - ghostscript
- libaa - ASCII art
- libheif @LIBHEIF_REQUIRED_VERSION@ HEIF
- libilbm - Amiga IFF/ILBM
- libmng - MNG
- libwebp @WEBP_REQUIRED_VERSION@ WebP (built with --enable-libwebpmux and --enable-libwebpdemux)
- libwmf @WMF_REQUIRED_VERSION@ WMF
- libXcursor - X11 Mouse Cursor
- libxpm - XPM
- openexr @OPENEXR_REQUIRED_VERSION@ OpenEXR
- OpenJPEG @OPENJPEG_REQUIRED_VERSION@ JPEG 2000
- qoi - QOI
- webkit @WEBKITGTK_REQUIRED_VERSION@ Help browser & webpage
- vala - Vala plug-ins
- 23. Summary of optional runtime dependencies:
- darktable >= 1.7, with lua support enabled for raw loading
- RawTherapee >= 5.2 for raw loading
- xdg-email for sending emails
- sendmail for sending emails if --with-sendmail enabled
- gdb or lldb for our new bug-reporting dialog
- "gegl:matting-levin" GEGL operation for alternative matting engine
- Python @PYTHON3_REQUIRED_VERSION@ and PyGObject for Python 3 plug-ins
- GJS for Javascript plug-ins
- LuaJIT and LGI for Lua plug-ins
- dot for "Show Image Graph" (unstable branches)
- xdg-desktop-portal implemented for your desktop for various D-Bus API (screenshot, color-picking…)
- Generic instructions for configuring and compiling auto-configured
- packages are included below. Here is an illustration of commands that
- might be used to build and install GIMP. The actual configuration,
- compilation and installation output is not shown.
- % tar xvf gimp-@GIMP_VERSION@.tar.xz # unpack the sources
- % cd gimp-@GIMP_VERSION@ # change to the toplevel directory
- % meson _build # `configure' step
- % ninja -C _build # build GIMP
- % ninja -C _build install # install GIMP
- The `configure' step examines your system, and adapts GIMP to run on
- it. The script has many options, some of which are described in the
- generic instructions included at the end of this file. All of the
- options can be listed using the command `meson configure' if you
- successfully configured already, or by reading the file `meson_options.txt`.
- There are several special options the GIMP configure script recognizes.
- These are:
- -Dvector-icons=false This option installs raster icons instead of
- vector icons.
- -Drelocatable-bundle=yes This option forces GIMP to search some
- resources (e.g. MyPaint brushes or libwmf fonts) relatively to the
- running prefix, rather than using build-time paths.
- -Dansi=true This option causes stricter ANSI C checking to be
- performed when compiling with GCC. The default is for strict
- checking to be disabled. NOTE: This option is intended primarily as
- a convenience for developers.
- -Dgimpdir=DIR. This option changes the default directory GIMP uses to
- search for its configuration files from ~/.config/GIMP/@GIMP_APP_VERSION@ (the
- directory .config/GIMP/@GIMP_APP_VERSION@ in the user's home directory) to
- ~/.config/DIR/@GIMP_APP_VERSION@.
- If DIR is an absolute path, the directory will be changed to DIR.
- -Dshmem-type=[none|sysv|posix|win32|auto]. This option allows you to
- specify how image data is transported between the core and plug-ins.
- Usually the best way to do this is detected automatically.
- -Daa=disabled The AA plug-in needs libaa and configure checks for
- its presence. Use -Daa=disabled if you run into problems.
- -Dxpm=disabled The XPM plug-in needs libxpm and configure checks
- for its presence. If for some reason you don't want to build the
- XPM plug-in even though the library is installed, use
- -Dxpm=disabled to disable it explicitly.
- -Dmng=disabled The MNG plug-in needs libmng and configure checks
- for its presence. If for some reason you don't want to build the
- MNG plug-in even though the library is installed, use
- -Dmng=disabled to disable it explicitly.
- -Dwmf=disabled The WMF plug-in needs libwmf2 and configure checks for
- its presence. Use -Dwmf=disabled if you run into problems.
- -Dwebkit-unmaintained=true We do not recommend to install the Help
- browser and Webpage plug-ins anymore. If for some reason you want
- these anyway, you can force the build with this explicit option.
- -Dprint=false If for some reason you don't want to build the Print
- plug-in based on the GtkPrint API, you can build with -Dprint=false.
- -Dalsa=disabled If you don't want to compile ALSA support into the
- MIDI input controller module, you can use the -Dalsa=disabled option.
- -Dlinux-input=disabled If you don't want to compile the Linux Input
- controller module, you can use the -Dlinux-input=disabled option.
- -Dgi-docgen=enabled|disabled This option controls whether the libgimp
- C API references will be created using gi-docgen.
- -Dg-ir-doc=true This option controls whether the libgimp API
- references for some binding languages will be created using
- g-ir-doc-tool and yelp-build.
- -Denable-multiproc=false This option allows you to disable support for
- multiple processors. It is enabled by default.
- -Dwith-sendmail[=PATH] This option is used to tell GIMP to send email
- through sendmail instead of xdg-email. You can optionally indicate
- where to find the sendmail command. Otherwise sendmail will simply
- be searched in your $PATH at runtime.
- -Denable-default-bin=false Use this option if you don't want to make
- gimp-@GIMP_APP_VERSION@ the default GIMP installation. Otherwise a link called
- gimp pointing to the gimp-@GIMP_APP_VERSION@ executable will be installed.
- -Denable-console-bin=false Use this option if you don't want the
- gimp-console binary to be built in addition to the standard binary.
- gimp-console is useful for command-line batch mode or as a server.
- -Dpython=false If for some reason you don't want to install the
- Python plug-ins, you can use -Dpython=false.
- -Djavascript=false If for some reason you don't want to install the
- JavaScript plug-ins, you can use -Djavascript=false.
- -Dlua=false If for some reason you don't want to install the
- Lua plug-ins, you can use -Dlua=false.
- -Dvala-plugins=disabled If for some reason you don't want to install the
- Vala plug-ins, you can use -Dvala-plugins=disabled.
- This list is manually maintained. To get an exhaustive listing of options,
- read `meson_options.txt'.
- Additionally meson supports a wide range of common built-in options. See
- documentation: https://mesonbuild.com/Builtin-options.html
- The `ninja' command builds several things:
- - A bunch of public libraries in the directories starting with 'libgimp'.
- - The plug-in programs in the 'plug-ins' directory.
- - Some modules in the 'modules' subdirectory.
- - The main GIMP program 'gimp-@GIMP_APP_VERSION@' in `app'.
- The `ninja install' command installs the GIMP header files associated
- with the libgimp libraries, the plug-ins, some data files and the GIMP
- executable. After running `ninja install' and assuming the build process
- was successful you should be able to run `gimp'.
- When configure fails
- ======================
- The configuration step uses pkg-config, a tool that replaces the old foo-config
- scripts. The most recent version is available from
- https://www.freedesktop.org/software/pkgconfig/
- 'configure' tries to compile and run a short GTK program. There are
- several reasons why this might fail:
- * pkg-config could not find the file 'gtk+-3.0.pc' that gets installed
- with GTK. (This file is used to get information about where GTK+ is
- installed.)
- Fix: Either make sure that this file is in the path where pkg-config
- looks for it (try 'pkg-config --debug' or add the location of
- gtk+-3.0.pc to the environment variable PKG_CONFIG_PATH before running
- configure.
- * Libraries you installed are not found when you attempt to start GIMP.
- The details of how to fix this problem will depend on the system:
- On Linux and other systems using ELF libraries, add the directory to
- holding the library to /etc/ld.so.conf or to the environment variable
- LD_LIBRARY_PATH, and run 'ldconfig'.
- On other systems, it may be necessary to encode this path
- into the executable, by setting the LDFLAGS environment variable
- before running configure. For example:
- LDFLAGS="-R/home/joe/lib" ./configure
- or
- LDFLAGS="-Wl,-rpath -Wl,/home/joe/lib" ./configure
- * An old version of the GTK libraries was found instead of
- your newly installed version. This commonly happens if a
- binary package of GTK was previously installed on your system,
- and you later compiled GTK from source.
- Fix: Remove the old libraries and include files. If you are afraid
- that removing the old libraries may break other packages supplied by
- your distributor, you can try installing GLib, GTK and other
- libraries in a different prefix after setting the environment
- variable PKG_CONFIG_LIBDIR to point to lib/pkgconfig/ in that new
- prefix so that it does not try to read the *.pc files from the
- default directory (/usr/lib/pkgconfig). However, removing the old
- packages is often the easier solution.
- A detailed log of the meson output is written to the file meson-logs/meson-log.txt.
- This may help diagnose problems.
- When meson configure fails on plug-ins
- ======================================
- There are some GIMP plug-ins that need additional third-party libraries
- installed on your system. For example to compile the plug-ins that load
- and save JPEG, PNG or TIFF files you need the related libraries and header
- files installed, otherwise you'll get a message that plug-in xyz will not
- be built.
- If you are sure that those libraries are correctly installed, but configure
- fails to detect them, the following might help:
- Set your LDFLAGS environment variable to look for the library in a certain
- place, e.g. if you are working in a bash shell you would say:
- export LDFLAGS="-L<path_to_library> -L<path_to_another_one>"
- before you run configure.
- Set your CPPFLAGS environment variable to look for the header file in a
- certain place, e.g. if you are working in a bash shell you would say:
- export CPPFLAGS="-I<path_to_header_file> -I<path_to_another_one>"
- before you run meson.
|