Difference between revisions of "User:Gaaned92"

From RawPedia
Jump to: navigation, search
 
(21 intermediate revisions by the same user not shown)
Line 4: Line 4:
  
 
The last version of RawTherapee to support GTK2 and compatible with Windows XP is 5.0-r1-gtk2 released on 2017-02-02.  
 
The last version of RawTherapee to support GTK2 and compatible with Windows XP is 5.0-r1-gtk2 released on 2017-02-02.  
 +
  
 
== MSYS2 Installation==
 
== MSYS2 Installation==
 +
 +
=== Install MSYS2 base system ===
 
   
 
   
 
Begin by installing and updating MSYS2 carefully following the instructions from the [https://msys2.github.io/ MSYS2 website].
 
Begin by installing and updating MSYS2 carefully following the instructions from the [https://msys2.github.io/ MSYS2 website].
 +
Update the base MSYS2 system until no further updates are available using:
 +
<pre style="white-space: pre-wrap">
 +
$ pacman -Syu
 +
</pre>
  
 
At the end of this installation, you get three shells:
 
At the end of this installation, you get three shells:
Line 14: Line 21:
 
* MINGW32 shell: it provides environment to build  32B applications.
 
* MINGW32 shell: it provides environment to build  32B applications.
  
 +
note: in following text, <code><MSYS2></code> is the MSYS2 installation folder.
  
== Install tools and libraries ==
+
=== Install tools and libraries ===
In the MSYS shell
+
 
 +
The MSYS2 package manager is "''pacman''" (see [https://wiki.archlinux.org/index.php/ https://wiki.archlinux.org/index.php/pacman])
 +
 +
In the MSYS shell:
  
 
First, install a few miscellaneous tools:
 
First, install a few miscellaneous tools:
Line 33: Line 44:
 
<pre style="white-space: pre-wrap">
 
<pre style="white-space: pre-wrap">
 
# win32
 
# win32
$ pacman -S  mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw mingw-w64-i686-lensfun
+
$ pacman -S  mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw mingw-w64-i686-lensfun  
 
# win64
 
# win64
 
$ pacman -S  mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun
 
$ pacman -S  mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun
 
</pre>
 
</pre>
  
== Get applicable versions of packages
+
=== Get applicable versions of packages ===
As MSYS2 provides rolling releases of packages, it ca happen that new versions are incompatible with present rawtherapee.
+
As MSYS2 provides rolling releases of packages, it can happen that new versions of some packages are incompatible with present rawtherapee.
 +
 
 +
 
 +
This is a list of all packages which have to be downgraded to:
 +
 
 +
<pre style="white-space: pre-wrap">
 +
mingw-w64-x86_64-gtk3-3.22.30-1-any.pkg.tar.xz
 +
mingw-w64-x86_64-gtkmm3-3.22.3-1-any.pkg.tar.xz
 +
mingw-w64-x86_64-lensfun-0.3.2-4-any.pkg.tar.xz
 +
mingw-w64-x86_64-libjpeg-turbo-1.5.3-1-any.pkg.tar.xz
 +
</pre>
 +
 
 +
If not present in <MSYS2>\var\cache\pacman\pkg, these files can be downloaded from: http://repo.msys2.org/mingw/x86_64/
 +
 
 +
Then in the MSYS shell, for each file:
 +
<pre style="white-space: pre-wrap">
 +
Pacman -U <path-to-files>/mingw-w64-x86_64-...
 +
</pre>
 +
 
 +
 
 +
Add following to the file <MSYS2>\etc\pacman.conf to prevent pacman from updating the packages.
 +
 
 +
<pre style="white-space: pre-wrap">
 +
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 +
IgnorePkg = mingw-w64-x86_64-libjpeg-turbo
 +
IgnorePkg = mingw-w64-x86_64-lensfun
 +
IgnorePkg = mingw-w64-x86_64-gtk3
 +
IgnorePkg = mingw-w64-x86_64-gtkmm3
 +
</pre>
 +
 
 +
If you want to build 32B applications, do the above, replacing '''x86_64''' by '''i386'''.
 +
 
 +
=== Updating MSYS2 base system and application packages ===
 +
 
 +
in MSYS shell:
 +
<pre style="white-space: pre-wrap">
 +
$ pacman -Syuu
 +
</pre>
 +
 
 +
=== Updating Lensfun data base ===
 +
Copy the <code>lensfun</code> folder and <code>lensfun-0.3.2-py3.6.egg-info</code> file from <code><mingw32|mingw64>\lib\python3.6\site-packages</code> to <code><mingw32|mingw64>\lib\python3.<version>\site-packages</code>
  
 +
Where <vesion> is the version of installed Python3.
  
 +
Then in Mingw32 or Mingw64 shell:
 +
<pre style="white-space: pre-wrap">
 +
$ lensfun-update-data
 +
</pre>
  
 
== Download and build libiptcdata ==
 
== Download and build libiptcdata ==
Line 62: Line 118:
 
$ nano -m Makefile
 
$ nano -m Makefile
  
# search (command ctrl/G)
+
# search (command ctrl/W)
 
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
 
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
 
# and replace with
 
# and replace with
Line 113: Line 169:
 
Note that if you switch branches then you must delete and recreate the <code>build</code> folder so that compilation starts from scratch in an empty folder, otherwise compilation is likely to fail. However if you are just updating without changing branches then you do not have to start with an empty build folder - you can just go into the existing one, and compilation will be faster because not everything will need to be recompiled.
 
Note that if you switch branches then you must delete and recreate the <code>build</code> folder so that compilation starts from scratch in an empty folder, otherwise compilation is likely to fail. However if you are just updating without changing branches then you do not have to start with an empty build folder - you can just go into the existing one, and compilation will be faster because not everything will need to be recompiled.
  
Run CMake and Make:
+
=== Run CMake and Make ===
 
<pre style="white-space: pre-wrap">
 
<pre style="white-space: pre-wrap">
 
$ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
 
$ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
Line 126: Line 182:
 
</pre>
 
</pre>
  
== Copy RawTherapee and required DLLs ==
+
RawTherapee can now be started from the MINGW64 command line:
 
 
RawTherapee can now be started from the MSYS2 command line:
 
 
<pre style="white-space: pre-wrap">
 
<pre style="white-space: pre-wrap">
 
# for debug builds
 
# for debug builds
Line 139: Line 193:
 
</pre>
 
</pre>
  
The file manager can be used to copy the contents of <code>c:\code\repo-rt\build\<debug|release|relwithdebinfo></code> together with the necessary DLLs from <code><prefix>\bin</code> into <code>.</code>, where:
+
 
 +
== Copy RawTherapee and required DLLs ==
 +
 
 +
You can copy either with the Windows file manager or with <code>robocopy</code> inside a MSYS2 shell script.
 +
 
 +
Definition of folders:
 
*<code><prefix></code> is <code><MSYS2>\<mingw32|mingw64></code>,
 
*<code><prefix></code> is <code><MSYS2>\<mingw32|mingw64></code>,
 
*<code><MSYS2></code> is the MSYS2 installation folder,
 
*<code><MSYS2></code> is the MSYS2 installation folder,
 
*and <code>.</code> is the RawTherapee installation folder.
 
*and <code>.</code> is the RawTherapee installation folder.
  
The current list of required DLLs is:
+
Copy the content of <code>c:\code\repo-rt\build\<debug|release|relwithdebinfo></code> into <code>.</code>.
 +
 
 +
Copy the necessary DLLs and exe from <code><prefix>\bin</code> into <code>.</code>.
 +
The current list of required DLLs and EXE is:
 
<pre style="white-space: pre-wrap">
 
<pre style="white-space: pre-wrap">
 +
gspawn-<win32|win64>-helper.exe
 +
gspawn-<win32|win64>-helper-console.exe
 
libatk-1.0-0.dll
 
libatk-1.0-0.dll
 
libatkmm-1.6-1.dll
 
libatkmm-1.6-1.dll
Line 153: Line 217:
 
libcairomm-1.0-1.dll
 
libcairomm-1.0-1.dll
 
libcroco-0.6-3.dll
 
libcroco-0.6-3.dll
 +
libdatrie-1.dll
 
libepoxy-0.dll
 
libepoxy-0.dll
 
libexpat-1.dll
 
libexpat-1.dll
Line 159: Line 224:
 
libfontconfig-1.dll
 
libfontconfig-1.dll
 
libfreetype-6.dll
 
libfreetype-6.dll
libgcc_s_seh-1.dll
+
libfribidi-0.dll
 +
libgcc_s_dw2-1.dll (or libgcc_s_seh-1.dll for W32)
 
libgdk_pixbuf-2.0-0.dll
 
libgdk_pixbuf-2.0-0.dll
 
libgdk-3-0.dll
 
libgdk-3-0.dll
Line 192: Line 258:
 
libstdc++-6.dll
 
libstdc++-6.dll
 
libsystre-0.dll
 
libsystre-0.dll
 +
libthai-0.dll
 
libtiff-5.dll
 
libtiff-5.dll
 
libtre-5.dll
 
libtre-5.dll
Line 199: Line 266:
 
</pre>
 
</pre>
  
The following list of Adwaita theme files should be copied from <code><prefix>\share\icons\Adwaita\</code> to <code>.\share\icons\Adwaita\</code>:
+
Copy the following list of Adwaita theme files and directories  from <code><prefix>\share\icons\Adwaita\</code> to <code>.\share\icons\Adwaita\</code>:
 
<pre style="white-space: pre-wrap">
 
<pre style="white-space: pre-wrap">
16x16\actions\*
+
scalable\actions
16x16\devices\*
+
scalable\devices
16x16\mimetypes\*
+
scalable\mimetypes
16x16\places\*
+
scalable\places
16x16\status\*
+
scalable\status
48x48\devices\*
 
24x24\status\image-missing.png
 
 
 
icon-theme.cache
 
 
index.theme
 
index.theme
 
 
cursors\plus.cur
 
cursors\plus.cur
 
cursors\sb_h_double_arrow.cur
 
cursors\sb_h_double_arrow.cur
Line 219: Line 281:
 
</pre>
 
</pre>
  
The following files also need to be copied:
+
Copy following files :
 
<pre style="white-space: pre-wrap">
 
<pre style="white-space: pre-wrap">
<prefix>\bin\gspawn-<win32|win64>-helper.exe -> .
 
<prefix>\bin\gspawn-<win32|win64>-helper-console.exe -> .
 
 
 
<prefix>\lib\gdk-pixbuf-2.0 -> .\lib\gdk-pixbuf-2.0
 
<prefix>\lib\gdk-pixbuf-2.0 -> .\lib\gdk-pixbuf-2.0
 
 
<prefix>\share\glib-2.0\schemas\gschemas.compiled -> .\share\glib-2.0\schemas
 
<prefix>\share\glib-2.0\schemas\gschemas.compiled -> .\share\glib-2.0\schemas
 
<prefix>\share\lensfun\version_1\* -> .\share\lensfun
 
<prefix>\share\lensfun\version_1\* -> .\share\lensfun
 +
</pre>
 +
 +
Create in .\share\GTK3 a file settings.ini containing :
 +
<pre style="white-space: pre-wrap">
 +
[Settings] gtk-button-images=1
 
</pre>
 
</pre>
  
Line 236: Line 299:
 
During compilation, a script named <code>WindowsInnoSetup.iss</code> is created in the RawTherapee installation folder. This script is used by Inno Setup [http://www.jrsoftware.org/isinfo.php], a program which is used to generate installers for Windows programs. It is advised to download the Unicode version [http://www.jrsoftware.org/download.php/is-unicode.exe] to avoid problems with some languages.
 
During compilation, a script named <code>WindowsInnoSetup.iss</code> is created in the RawTherapee installation folder. This script is used by Inno Setup [http://www.jrsoftware.org/isinfo.php], a program which is used to generate installers for Windows programs. It is advised to download the Unicode version [http://www.jrsoftware.org/download.php/is-unicode.exe] to avoid problems with some languages.
  
The current <code>WindowsInnoSetup.iss</code> script is designed for the <code>gtk2</code> branch. If you want to create a package for a GTK3 build (<code>dev</code> or <code>releases</code> branches) you will need to edit the script and replace the line:
 
 
<pre style="white-space: pre-wrap">
 
Source: "{#MyBuildBasePath}\lib\*"; DestDir: "{app}\lib\"; Flags: ignoreversion recursesubdirs createallsubdirs
 
</pre>
 
 
with
 
  
<pre style="white-space: pre-wrap">
 
Source: "{#MyBuildBasePath}\share\*"; DestDir: "{app}\share\"; Flags: ignoreversion recursesubdirs createallsubdirs
 
</pre>
 
  
so that icons and schemas will be copied into the package.
+
To help users [[How_to_write_useful_bug_reports|write useful bug reports]], package maintainers are encouraged to produce builds which include both a "release" and a "debug" executable, and to bundle them together with the GDB debugger executable.
  
To help users [[How_to_write_useful_bug_reports|write useful bug reports]], package maintainers are encouraged to produce builds which include both a "release" and a "debug" executable, and to bundle them together with the GDB debugger executable. In other words, put the <code>rawtherapee.exe</code> (release) file together with the <code>rawtherapee-debug.exe</code> (debug) file and the <code>gdb.exe</code> file together into the same installer or the same archive. An alternative is to produce "relwithdebinfo" builds - these are much faster than "debug" but not as optimized as "release" builds, yet they provide just about as much useful information as "debug" builds. When making "relwithdebinfo" or "debug" builds you must provide the GDB debugger executable. Windows binaries of the debugger <code>gdb.exe</code> can be downloaded from [http://www.equation.com/servlet/equation.cmd?fa=gdb here] in 32- and 64-bit versions.
+
In other words, put the <code>rawtherapee.exe</code> (release) file together with the <code>rawtherapee-debug.exe</code> (debug) file and the <code>gdb.exe</code> file together into the same installer or the same archive. An alternative is to produce "relwithdebinfo" builds - these are much faster than "debug" but not as optimized as "release" builds, yet they provide just about as much useful information as "debug" builds.  
  
The <code>gdb.exe</code> binary, available from http://www.gnu.org/software/gdb/, should be copied into the RawTherapee installation folder and, if using Inno Setup to generate the package, the <code>WindowsInnoSetup.iss</code> script should be edited by uncommenting (removing the semicolon from the front of) the following around line 114 of the script:
+
When making "relwithdebinfo" or "debug" builds you must provide the GDB debugger executable. Windows binaries of the debugger <code>gdb.exe</code> can be downloaded from [http://www.equation.com/servlet/equation.cmd?fa=gdb here] in 32- and 64-bit versions and will be copied into Rawtherapee installation folder.
  
<pre style="white-space: pre-wrap">
 
;Source: "{#MyBuildBasePath}\gdb.exe"; DestDir: "{app}"; Flags: ignoreversion
 
</pre>
 
  
 
Now that everything is set up, to create the package right-click on the <code>WindowsInnoSetup.iss</code> script and choose ''Compile'' from the context menu. It will automatically generate the installer and place it in the parent folder.
 
Now that everything is set up, to create the package right-click on the <code>WindowsInnoSetup.iss</code> script and choose ''Compile'' from the context menu. It will automatically generate the installer and place it in the parent folder.
  
 
To make your new package compatible with the RawTherapee website's upload panel, create a zip archive in which you will place both the newly created installer and the corresponding ''AboutThisBuild.txt'' file which can be found at the same place. Name the resulting zip archive following this template:
 
To make your new package compatible with the RawTherapee website's upload panel, create a zip archive in which you will place both the newly created installer and the corresponding ''AboutThisBuild.txt'' file which can be found at the same place. Name the resulting zip archive following this template:
<code>RawTherapee_<WinXP|WinVista>_<32|64>_<version>_<buildtype>.zip</code>
+
<code>RawTherapee_<version>_WinVista_<32|64>_<buildtype>.zip</code>
  
* "WinXP" means that the build is only for Windows XP. "WinVista" means it can run on any version of Windows from Vista upwards, including 10.
+
If you are building and distributing nightly builds, follow this template:
* The "version" will either look like <code>5.2</code> if you checkout the <code>5.2</code> tag, or <code>5.2-dev-g1a2b3c4d</code> if you checkout the <code>dev</code> branch after 5.2 was tagged.
+
<code>RawTherapee_<branch>_<version>_WinVista_<32|64>_<buildtype>.zip</code>
* If you are shipping more than one build type in an installer, include the names of all build types, e.g. <code>release_debug</code>.
 
  
For example:
+
* "WinVista"  means it can run on any version of Windows from Vista upwards, including 10.
* <code>RawTherapee_WinVista_64_5.2_release.zip</code>
+
* The "version" will either look like <code>5.2</code> if you checkout the <code>5.2</code> tag, or <code>5.2-g1a2b3c4d</code> if you checkout the <code>dev</code> branch after 5.2 was tagged.
* <code>RawTherapee_WinVista_64_5.2_release_debug.zip</code>
+
* If you are shipping more than one build type in an installer, don't include <buildtype> in the name.
* <code>RawTherapee_WinVista_64_5.2-dev-g1a2b3c4d_release_debug.zip</code>
 

Latest revision as of 22:00, 9 November 2018

This guide documents how to build RawTherapee for 32-bit or 64-bit versions of Windows using the MSYS2 application.

RawTherapee is built using GTK+ version 3. GTK+ 3.22.24 or newer is required as this is the first version to support native windows , without which the RawTherapee window could exhibit strange behavior such as maximizing under the taskbar in Windows 10.

The last version of RawTherapee to support GTK2 and compatible with Windows XP is 5.0-r1-gtk2 released on 2017-02-02.


MSYS2 Installation

Install MSYS2 base system

Begin by installing and updating MSYS2 carefully following the instructions from the MSYS2 website. Update the base MSYS2 system until no further updates are available using:

$ pacman -Syu

At the end of this installation, you get three shells:

  • MSYS shell: used to developp the core system and manage the MSYS2 application( mainly updating MSYS2 packages)
  • MINGW64 shell: it provides environment to build 64B applications.
  • MINGW32 shell: it provides environment to build 32B applications.

note: in following text, <MSYS2> is the MSYS2 installation folder.

Install tools and libraries

The MSYS2 package manager is "pacman" (see https://wiki.archlinux.org/index.php/pacman)

In the MSYS shell:

First, install a few miscellaneous tools:

$ pacman -S tar gzip nano make diffutils intltool git

Then install the necessary development tools:

# win32
$ pacman -S mingw-w64-i686-gcc mingw-w64-i686-gdb mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-cmake
# win64
$ pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-pkg-config mingw-w64-x86_64-cmake

and the required libraries:

# win32
$ pacman -S  mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw mingw-w64-i686-lensfun 
# win64
$ pacman -S  mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun

Get applicable versions of packages

As MSYS2 provides rolling releases of packages, it can happen that new versions of some packages are incompatible with present rawtherapee.


This is a list of all packages which have to be downgraded to:

mingw-w64-x86_64-gtk3-3.22.30-1-any.pkg.tar.xz
mingw-w64-x86_64-gtkmm3-3.22.3-1-any.pkg.tar.xz
mingw-w64-x86_64-lensfun-0.3.2-4-any.pkg.tar.xz
mingw-w64-x86_64-libjpeg-turbo-1.5.3-1-any.pkg.tar.xz

If not present in <MSYS2>\var\cache\pacman\pkg, these files can be downloaded from: http://repo.msys2.org/mingw/x86_64/

Then in the MSYS shell, for each file:

Pacman -U <path-to-files>/mingw-w64-x86_64-...


Add following to the file <MSYS2>\etc\pacman.conf to prevent pacman from updating the packages.

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
IgnorePkg = mingw-w64-x86_64-libjpeg-turbo
IgnorePkg = mingw-w64-x86_64-lensfun
IgnorePkg = mingw-w64-x86_64-gtk3
IgnorePkg = mingw-w64-x86_64-gtkmm3

If you want to build 32B applications, do the above, replacing x86_64 by i386.

Updating MSYS2 base system and application packages

in MSYS shell:

$ pacman -Syuu

Updating Lensfun data base

Copy the lensfun folder and lensfun-0.3.2-py3.6.egg-info file from <mingw32|mingw64>\lib\python3.6\site-packages to <mingw32|mingw64>\lib\python3.<version>\site-packages

Where <vesion> is the version of installed Python3.

Then in Mingw32 or Mingw64 shell:

$ lensfun-update-data

Download and build libiptcdata

Use either "MinGW32 Shell" if you want to build a 32-bit version, or "MinGW64 Shell" if you want to build a 64-bit version.

The libiptcdata library is not provided by MSYS2, therefore it should be downloaded and configured using:

$ curl -LO http://downloads.sourceforge.net/project/libiptcdata/libiptcdata/1.0.4/libiptcdata-1.0.4.tar.gz
$ tar xzf libiptcdata-1.0.4.tar.gz
$ cd libiptcdata-1.0.4

# win32
$ ./configure --prefix=/mingw32
# win64
$ ./configure --prefix=/mingw64

Afterwards the Makefile needs to be opened using a text editor to remove iptc and docs from the lists named SUBDIRS and DIST_SUBDIRS, as building or installing will fail otherwise:

$ nano -m Makefile

# search (command ctrl/W)
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
# and replace with
DIST_SUBDIRS = m4 libiptcdata po win python

# search
SUBDIRS = m4 libiptcdata po iptc docs win $(MAYBE_PYTHONLIB)
# and replace with
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)

# save
ctrl/O

# quit
ctrl/X

Finally build and install the library:

$ make
$ make install
$ cd


Clone and build RawTherapee

Use either "MinGW32 Shell" if you want to build a 32-bit version, or "MinGW64 Shell" if you want to build a 64-bit version.


Clone RawTherapee's Git repository.

The build process will fail if there is a space character anywhere in your build folder path. For example if your Windows username is "Zank Frappa" then your home path will be C:\Users\Zank Frappa\ and if you clone RawTherapee inside there then the build will fail during compilation. Simply clone to a folder where neither it nor its parent folders have a space in their name, for example C:\code\repo-rt
$ git clone http://github.com/Beep6581/RawTherapee.git /c/code/repo-rt
$ cd /c/code/repo-rt

When you clone the repository you will automatically find yourself in the dev branch. To switch to the dev branch manually, do the following:

$ git checkout dev

Create a separate directory for the build

$ mkdir build
$ cd build

Note that if you switch branches then you must delete and recreate the build folder so that compilation starts from scratch in an empty folder, otherwise compilation is likely to fail. However if you are just updating without changing branches then you do not have to start with an empty build folder - you can just go into the existing one, and compilation will be faster because not everything will need to be recompiled.

Run CMake and Make

$ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
$ make install

You can find an explanation of the various CMake options in the Linux article, including an explanation of the various "BUILD_TYPE" options.

If you are building for 32-bit Windows and are using the release or relwithdebinfo "BUILD_TYPE", you will need to add the -mstackrealign compiler flag before the last two dots .. of the CMake command above:

-DCMAKE_C_FLAGS="-mstackrealign" -DCMAKE_CXX_FLAGS="-mstackrealign"

RawTherapee can now be started from the MINGW64 command line:

# for debug builds
$ cd debug
# for release builds
$ cd release
# for relwithdebinfo builds
$ cd relwithdebinfo
$ ./rawtherapee.exe


Copy RawTherapee and required DLLs

You can copy either with the Windows file manager or with robocopy inside a MSYS2 shell script.

Definition of folders:

  • <prefix> is <MSYS2>\<mingw32|mingw64>,
  • <MSYS2> is the MSYS2 installation folder,
  • and . is the RawTherapee installation folder.

Copy the content of c:\code\repo-rt\build\<debug|release|relwithdebinfo> into ..

Copy the necessary DLLs and exe from <prefix>\bin into .. The current list of required DLLs and EXE is:

gspawn-<win32|win64>-helper.exe
gspawn-<win32|win64>-helper-console.exe
libatk-1.0-0.dll
libatkmm-1.6-1.dll
libbz2-1.dll
libcairo-2.dll
libcairo-gobject-2.dll
libcairomm-1.0-1.dll
libcroco-0.6-3.dll
libdatrie-1.dll
libepoxy-0.dll
libexpat-1.dll
libffi-6.dll
libfftw3f-3.dll
libfontconfig-1.dll
libfreetype-6.dll
libfribidi-0.dll
libgcc_s_dw2-1.dll (or libgcc_s_seh-1.dll for W32)
libgdk_pixbuf-2.0-0.dll
libgdk-3-0.dll
libgdkmm-3.0-1.dll
libgio-2.0-0.dll
libgiomm-2.4-1.dll
libglib-2.0-0.dll
libglibmm-2.4-1.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgomp-1.dll
libgraphite2.dll
libgtk-3-0.dll
libgtkmm-3.0-1.dll
libharfbuzz-0.dll
libiconv-2.dll
libintl-8.dll
libjpeg-8.dll
liblcms2-2.dll
liblensfun.dll
liblzma-5.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangomm-1.4-1.dll
libpangowin32-1.0-0.dll
libpcre-1.dll
libpixman-1-0.dll
libpng16-16.dll
librsvg-2-2.dll
libsigc-2.0-0.dll
libstdc++-6.dll
libsystre-0.dll
libthai-0.dll
libtiff-5.dll
libtre-5.dll
libwinpthread-1.dll
libxml2-2.dll
zlib1.dll

Copy the following list of Adwaita theme files and directories from <prefix>\share\icons\Adwaita\ to .\share\icons\Adwaita\:

scalable\actions
scalable\devices
scalable\mimetypes
scalable\places
scalable\status
index.theme
cursors\plus.cur
cursors\sb_h_double_arrow.cur
cursors\sb_left_arrow.cur
cursors\sb_right_arrow.cur
cursors\sb_v_double_arrow.cur

Copy following files :

<prefix>\lib\gdk-pixbuf-2.0 -> .\lib\gdk-pixbuf-2.0
<prefix>\share\glib-2.0\schemas\gschemas.compiled -> .\share\glib-2.0\schemas
<prefix>\share\lensfun\version_1\* -> .\share\lensfun

Create in .\share\GTK3 a file settings.ini containing :

[Settings] gtk-button-images=1

Creating a distributable package

If you plan to distribute RawTherapee packages for the Windows platform, as a first step you need to make sure that RawTherapee will be built for the "generic" processor target. To do so, use -DPROC_TARGET_NUMBER="1" in the CMake command.

During compilation, a script named WindowsInnoSetup.iss is created in the RawTherapee installation folder. This script is used by Inno Setup [1], a program which is used to generate installers for Windows programs. It is advised to download the Unicode version [2] to avoid problems with some languages.


To help users write useful bug reports, package maintainers are encouraged to produce builds which include both a "release" and a "debug" executable, and to bundle them together with the GDB debugger executable.

In other words, put the rawtherapee.exe (release) file together with the rawtherapee-debug.exe (debug) file and the gdb.exe file together into the same installer or the same archive. An alternative is to produce "relwithdebinfo" builds - these are much faster than "debug" but not as optimized as "release" builds, yet they provide just about as much useful information as "debug" builds. 

When making "relwithdebinfo" or "debug" builds you must provide the GDB debugger executable. Windows binaries of the debugger gdb.exe can be downloaded from here in 32- and 64-bit versions and will be copied into Rawtherapee installation folder.


Now that everything is set up, to create the package right-click on the WindowsInnoSetup.iss script and choose Compile from the context menu. It will automatically generate the installer and place it in the parent folder.

To make your new package compatible with the RawTherapee website's upload panel, create a zip archive in which you will place both the newly created installer and the corresponding AboutThisBuild.txt file which can be found at the same place. Name the resulting zip archive following this template: RawTherapee_<version>_WinVista_<32|64>_<buildtype>.zip

If you are building and distributing nightly builds, follow this template: RawTherapee_<branch>_<version>_WinVista_<32|64>_<buildtype>.zip

  • "WinVista" means it can run on any version of Windows from Vista upwards, including 10.
  • The "version" will either look like 5.2 if you checkout the 5.2 tag, or 5.2-g1a2b3c4d if you checkout the dev branch after 5.2 was tagged.
  • If you are shipping more than one build type in an installer, don't include <buildtype> in the name.