489 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			489 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | --------------------------------------- | ||
|  | Installation instructions for PIKA @PIKA_APP_VERSION@ | ||
|  | --------------------------------------- | ||
|  | 
 | ||
|  | There are some basic steps to building and installing PIKA. | ||
|  | 
 | ||
|  | PIKA @PIKA_APP_VERSION@ replaces earlier PIKA 2.99.x versions. It is advised to | ||
|  | uninstall them before installing PIKA @PIKA_APP_VERSION@. Since libpika* libraries | ||
|  | and data are all versionned anyway, it is possible to keep your older | ||
|  | PIKA 2.x installation in parallel to PIKA @PIKA_APP_VERSION@ on a same prefix. | ||
|  | 
 | ||
|  | PIKA @PIKA_APP_VERSION@ is not backward compatible with PIKA 2.10 and earlier | ||
|  | versions. Plug-ins and scripts written for PIKA 2.10, 2.8, 2.6 or | ||
|  | earlier PIKA 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 PIKA 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.pika.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 (>= @PIKA_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 PIKA'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. | ||
|  |      PIKA 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. PIKA 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 PIKA. | ||
|  | 
 | ||
|  |      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 PIKA 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 PIKA running on an architecture with no Rust support | ||
|  |      could still: | ||
|  | 
 | ||
|  |      1) easily patch out the file-svg plug-in from build system; | ||
|  |      2) build PIKA 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". PIKA 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 PIKA (the `master` branch and v2 brushes | ||
|  |      are targeted to software using recent libmypaint which PIKA 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. PIKA 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 PIKA 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%\PIKA\@PIKA_APP_VERSION@\CrashLog\ | ||
|  |      The feature depends on Dr.MinGW's ExcHndl library: | ||
|  | 
 | ||
|  |         https://github.com/jrfonseca/drmingw | ||
|  | 
 | ||
|  |  17. Configure PIKA by running `meson _build`. You may want to pass some | ||
|  |      options to it, see below. | ||
|  | 
 | ||
|  |  18. Build PIKA by running `ninja -C _build'. | ||
|  | 
 | ||
|  |  19. Install PIKA by running `ninja -C _build install'. In order to | ||
|  |      avoid clashes with other versions of PIKA, we install a binary | ||
|  |      called pika-@PIKA_APP_VERSION@. By default there's also a link created so that | ||
|  |      you can type 'pika' to start pika-@PIKA_APP_VERSION@. | ||
|  | 
 | ||
|  |  20. 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 | ||
|  | 
 | ||
|  |  21. 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 | ||
|  | 
 | ||
|  |  22. 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 PIKA. The actual configuration, | ||
|  | compilation and installation output is not shown. | ||
|  | 
 | ||
|  |   % tar xvf pika-@PIKA_VERSION@.tar.xz   # unpack the sources | ||
|  |   % cd pika-@PIKA_VERSION@               # change to the toplevel directory | ||
|  |   % meson _build                  # `configure' step | ||
|  |   % ninja -C _build               # build PIKA | ||
|  |   % ninja -C _build install       # install PIKA | ||
|  | 
 | ||
|  | 
 | ||
|  | The `configure' step examines your system, and adapts PIKA 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 PIKA configure script recognizes. | ||
|  | These are: | ||
|  | 
 | ||
|  |   -Dvector-icons=false  This option installs raster icons instead of | ||
|  |      vector icons. | ||
|  | 
 | ||
|  |   -Drelocatable-bundle=yes  This option forces PIKA 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. | ||
|  | 
 | ||
|  |   -Dpikadir=DIR.  This option changes the default directory PIKA uses to | ||
|  |      search for its configuration files from ~/.config/PIKA/@PIKA_APP_VERSION@ (the | ||
|  |      directory .config/PIKA/@PIKA_APP_VERSION@ in the user's home directory) to | ||
|  |      ~/.config/DIR/@PIKA_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 libpika | ||
|  |      C API references will be created using gi-docgen. | ||
|  | 
 | ||
|  |   -Dg-ir-doc=true  This option controls whether the libpika 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 PIKA 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 | ||
|  |      pika-@PIKA_APP_VERSION@ the default PIKA installation. Otherwise a link called | ||
|  |      pika pointing to the pika-@PIKA_APP_VERSION@ executable will be installed. | ||
|  | 
 | ||
|  |   -Denable-console-bin=false  Use this option if you don't want the | ||
|  |      pika-console binary to be built in addition to the standard binary. | ||
|  |      pika-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 'libpika'. | ||
|  |  - The plug-in programs in the 'plug-ins' directory. | ||
|  |  - Some modules in the 'modules' subdirectory. | ||
|  |  - The main PIKA program 'pika-@PIKA_APP_VERSION@' in `app'. | ||
|  | 
 | ||
|  | The `ninja install' command installs the PIKA header files associated | ||
|  | with the libpika libraries, the plug-ins, some data files and the PIKA | ||
|  | executable. After running `ninja install' and assuming the build process | ||
|  | was successful you should be able to run `pika'. | ||
|  | 
 | ||
|  | 
 | ||
|  | 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 PIKA. | ||
|  |   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 PIKA 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. |