Windows: Difference between revisions
No edit summary |
(Recommended using GTK+ >=3.22.24) |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
This guide documents how to build RawTherapee for 32-bit or 64-bit versions of Windows using the MinGW-w64 runtime. Begin by installing and updating MSYS2 using the instructions from the [https://msys2.github.io/ MSYS2 website]. Then run the following commands using either "''MinGW-w64 Win32 Shell''" if you want to build a 32-bit version, or "''MinGW-w64 Win64 Shell''" if you want to build a 64-bit version. | This guide documents how to build RawTherapee for 32-bit or 64-bit versions of Windows using the MinGW-w64 runtime. Begin by installing and updating MSYS2 using the instructions from the [https://msys2.github.io/ MSYS2 website]. Then run the following commands using either "''MinGW-w64 Win32 Shell''" if you want to build a 32-bit version, or "''MinGW-w64 Win64 Shell''" if you want to build a 64-bit version. | ||
RawTherapee can be built using GTK+ versions 2 or 3. To build using GTK2 use the <code> | RawTherapee can be built using GTK+ versions 2 or 3. To build using GTK2 use the <code>gtk2</code> branch; to build using GTK3 use the <code>dev</code> branch. The last version of RawTherapee to support GTK2 is 5.0-r1-gtk2 released on 2017-02-02. Use the <code>dev</code> branch for the latest code - it requires GTK+ >=3.16. We recommend using GTK+ 3.22.24 or newer as this is the first version to support native windows, without which the RawTherapee window could exhibit [https://github.com/Beep6581/RawTherapee/issues/4125 strange behavior] such as maximizing under the taskbar in Windows 10. | ||
== Install tools and libraries == | == Install tools and libraries == | ||
Line 22: | Line 22: | ||
$ pacman -S mingw-w64-i686-gtkmm mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw | $ pacman -S mingw-w64-i686-gtkmm mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw | ||
# win64 | # win64 | ||
$ pacman -S mingw-w64-x86_64-gtkmm mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw | $ pacman -S mingw-w64-x86_64-gtkmm mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun | ||
</pre> | </pre> | ||
Line 63: | Line 63: | ||
== Download and build Clearlooks == | == Download and build Clearlooks == | ||
If you are building RawTherapee using GTK2 | If you are building RawTherapee using GTK2 then you need the Clearlooks theme engine. You do not need it if you are building using GTK3. | ||
Download and build it: | Download and build it: | ||
Line 89: | Line 89: | ||
</pre> | </pre> | ||
RawTherapee can be built using GTK+ versions 2 or 3. To build using GTK2 use the <code> | RawTherapee can be built using GTK+ versions 2 or 3. To build using GTK2 use the <code>gtk2</code> branch; to build using GTK3 use the <code>dev</code> branch. The last version of RawTherapee to support GTK2 is 5.0-r1-gtk2 released on 2017-02-02. Use the <code>dev</code> branch for the latest code - it requires GTK+ >=3.16. When you clone the repository you will automatically find yourself in the <code>dev</code> branch. To switch to the <code>dev</code> branch manually, do the following: | ||
<pre style="white-space: pre-wrap"> | <pre style="white-space: pre-wrap"> | ||
$ git checkout | $ git checkout dev | ||
</pre> | </pre> | ||
Create a separate directory for the build: | |||
<pre style="white-space: pre-wrap"> | <pre style="white-space: pre-wrap"> | ||
$ mkdir build | $ mkdir build | ||
Line 104: | Line 104: | ||
Run CMake and Make: | Run CMake and Make: | ||
<pre style="white-space: pre-wrap"> | <pre style="white-space: pre-wrap"> | ||
$ cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=" | $ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" .. | ||
$ make install | $ make install | ||
</pre> | </pre> | ||
Line 134: | Line 134: | ||
libatk-1.0-0.dll | libatk-1.0-0.dll | ||
libatkmm-1.6-1.dll | libatkmm-1.6-1.dll | ||
libsz-1.dll | |||
libcairo-2.dll | libcairo-2.dll | ||
libcairo-gobject-2.dll | libcairo-gobject-2.dll | ||
libcairomm-1.0-1.dll | libcairomm-1.0-1.dll | ||
libcroco-0.6-3.dll | |||
libepoxy-0.dll | libepoxy-0.dll | ||
libexpat-1.dll | libexpat-1.dll | ||
libffi-6.dll | |||
libfftw3f-3.dll | libfftw3f-3.dll | ||
libfontconfig-1.dll | |||
libfreetype-6.dll | libfreetype-6.dll | ||
libgcc_s_seh-1.dll | |||
libgdk_pixbuf-2.0-0.dll | |||
libgdk-3-0.dll | libgdk-3-0.dll | ||
libgdkmm-3.0-1.dll | libgdkmm-3.0-1.dll | ||
libgio-2.0-0.dll | libgio-2.0-0.dll | ||
libgiomm-2.4-1.dll | libgiomm-2.4-1.dll | ||
Line 157: | Line 156: | ||
libgobject-2.0-0.dll | libgobject-2.0-0.dll | ||
libgomp-1.dll | libgomp-1.dll | ||
libgraphite2.dll | |||
libgtk-3-0.dll | libgtk-3-0.dll | ||
libgtkmm-3.0-1.dll | libgtkmm-3.0-1.dll | ||
libharfbuzz-0.dll | libharfbuzz-0.dll | ||
Line 166: | Line 164: | ||
libjpeg-8.dll | libjpeg-8.dll | ||
liblcms2-2.dll | liblcms2-2.dll | ||
liblensfun.dll | |||
liblzma-5.dll | liblzma-5.dll | ||
libpango-1.0-0.dll | libpango-1.0-0.dll | ||
Line 172: | Line 171: | ||
libpangomm-1.4-1.dll | libpangomm-1.4-1.dll | ||
libpangowin32-1.0-0.dll | libpangowin32-1.0-0.dll | ||
libpcre-1.dll | |||
libpixman-1-0.dll | libpixman-1-0.dll | ||
libpng16-16.dll | libpng16-16.dll | ||
librsvg-2-2.dll | |||
libsigc-2.0-0.dll | libsigc-2.0-0.dll | ||
libstdc++-6.dll | libstdc++-6.dll | ||
libsystre-0.dll | |||
libtiff-5.dll | libtiff-5.dll | ||
libtre-5.dll | |||
libwinpthread-1.dll | libwinpthread-1.dll | ||
libxml2-2.dll | |||
zlib1.dll | zlib1.dll | ||
</pre> | </pre> | ||
Line 189: | Line 193: | ||
<prefix>\lib\gtk-2.0\modules -> . | <prefix>\lib\gtk-2.0\modules -> . | ||
<prefix>\lib\gtk-2.0\2.10.0\engines -> . | <prefix>\lib\gtk-2.0\2.10.0\engines -> . | ||
<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 | |||
</pre> | </pre> | ||
where <code><prefix></code> is <code><MSYS2>\<mingw32|mingw64></code> from above and <code>.</code> is the installation folder. | where <code><prefix></code> is <code><MSYS2>\<mingw32|mingw64></code> from above and <code>.</code> is the installation folder. | ||
Line 199: | Line 206: | ||
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 | |||
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"> | <pre style="white-space: pre-wrap"> | ||
Line 213: | Line 221: | ||
so that icons and schemas will be copied into the package. | 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 " | 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. | ||
The <code>gdb.exe</code> binary should be copied | 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: | ||
<pre style="white-space: pre-wrap"> | <pre style="white-space: pre-wrap"> | ||
Source: "{#MyBuildBasePath}\gdb.exe"; DestDir: "{app}"; Flags: ignoreversion | ;Source: "{#MyBuildBasePath}\gdb.exe"; DestDir: "{app}"; Flags: ignoreversion | ||
</pre> | </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. | |||
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> | <code>RawTherapee_<WinXP|WinVista>_<32|64>_<version>_<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. | * "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. | ||
* 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. | |||
* 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: <code> | For example: | ||
* <code>RawTherapee_WinVista_64_5.2_release.zip</code> | |||
* <code>RawTherapee_WinVista_64_5.2_release_debug.zip</code> | |||
* <code>RawTherapee_WinVista_64_5.2-dev-g1a2b3c4d_release_debug.zip</code> |
Revision as of 17:43, 15 October 2017
This guide documents how to build RawTherapee for 32-bit or 64-bit versions of Windows using the MinGW-w64 runtime. Begin by installing and updating MSYS2 using the instructions from the MSYS2 website. Then run the following commands using either "MinGW-w64 Win32 Shell" if you want to build a 32-bit version, or "MinGW-w64 Win64 Shell" if you want to build a 64-bit version.
RawTherapee can be built using GTK+ versions 2 or 3. To build using GTK2 use the gtk2
branch; to build using GTK3 use the dev
branch. The last version of RawTherapee to support GTK2 is 5.0-r1-gtk2 released on 2017-02-02. Use the dev
branch for the latest code - it requires GTK+ >=3.16. We recommend using GTK+ 3.22.24 or newer 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.
Install tools and libraries
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-gtkmm mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw # win64 $ pacman -S mingw-w64-x86_64-gtkmm mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun
Download and build libiptcdata
The libiptcdata library is not yet 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 Makefile # Replace DIST_SUBDIRS = m4 libiptcdata po iptc docs win python # with DIST_SUBDIRS = m4 libiptcdata po win python # And replace SUBDIRS = m4 libiptcdata po iptc docs win $(MAYBE_PYTHONLIB) # with SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)
Finally build and install the library:
$ make $ make install $ cd
Download and build Clearlooks
If you are building RawTherapee using GTK2 then you need the Clearlooks theme engine. You do not need it if you are building using GTK3.
Download and build it:
$ curl -LO http://sources.archlinux.org/other/gtk-engines/gtk-engines-2.21.0.tar.gz $ tar xzf gtk-engines-2.21.0.tar.gz $ cd gtk-engines-2.21.0 # win32 $ ./configure --prefix=/mingw32 --disable-all --enable-clearlooks # win64 $ ./configure --prefix=/mingw64 --disable-all --enable-clearlooks $ make $ make install $ cd
Clone and build RawTherapee
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
RawTherapee can be built using GTK+ versions 2 or 3. To build using GTK2 use the gtk2
branch; to build using GTK3 use the dev
branch. The last version of RawTherapee to support GTK2 is 5.0-r1-gtk2 released on 2017-02-02. Use the dev
branch for the latest code - it requires GTK+ >=3.16. 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
Please refer to the Linux article for an explanation of the various options passed to CMake and Make, including which "BUILD_TYPE" to use.
If you are building for 32-bit Windows XP 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"
Copy RawTherapee and required DLLs
RawTherapee can now be started from the MSYS2 command line:
# for debug builds $ cd debug # for release builds $ cd release # for relwithdebinfo builds $ cd relwithdebinfo $ ./rawtherapee.exe
The file manager can be used to copy the contents of c:\code\repo-rt\build\<debug|release|relwithdebinfo>
together with the necessary DLLs from <MSYS2>\<mingw32|mingw64>\bin
into a RawTherapee installation folder, where <MSYS2>
is the MSYS2 installation folder.
A (possibly incomplete) list of required DLLs is:
libatk-1.0-0.dll libatkmm-1.6-1.dll libsz-1.dll libcairo-2.dll libcairo-gobject-2.dll libcairomm-1.0-1.dll libcroco-0.6-3.dll libepoxy-0.dll libexpat-1.dll libffi-6.dll libfftw3f-3.dll libfontconfig-1.dll libfreetype-6.dll libgcc_s_seh-1.dll 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 libtiff-5.dll libtre-5.dll libwinpthread-1.dll libxml2-2.dll zlib1.dll
The following files also need to be copied:
<prefix>\bin\gspawn-<win32|win64>-helper.exe -> . <prefix>\bin\gspawn-<win32|win64>-helper-console.exe -> . <prefix>\lib\gtk-2.0\include -> . <prefix>\lib\gtk-2.0\modules -> . <prefix>\lib\gtk-2.0\2.10.0\engines -> . <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
where <prefix>
is <MSYS2>\<mingw32|mingw64>
from above and .
is the installation folder.
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.
The current WindowsInnoSetup.iss
script is designed for the gtk2
branch. If you want to create a package for a GTK3 build (dev
or releases
branches) you will need to edit the script and replace the line:
Source: "{#MyBuildBasePath}\lib\*"; DestDir: "{app}\lib\"; Flags: ignoreversion recursesubdirs createallsubdirs
with
Source: "{#MyBuildBasePath}\share\*"; DestDir: "{app}\share\"; Flags: ignoreversion recursesubdirs createallsubdirs
so that icons and schemas will be copied into the package.
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.
The gdb.exe
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 WindowsInnoSetup.iss
script should be edited by uncommenting (removing the semicolon from the front of) the following around line 114 of the script:
;Source: "{#MyBuildBasePath}\gdb.exe"; DestDir: "{app}"; Flags: ignoreversion
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_<WinXP|WinVista>_<32|64>_<version>_<buildtype>.zip
- "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.
- The "version" will either look like
5.2
if you checkout the5.2
tag, or5.2-dev-g1a2b3c4d
if you checkout thedev
branch after 5.2 was tagged. - If you are shipping more than one build type in an installer, include the names of all build types, e.g.
release_debug
.
For example:
RawTherapee_WinVista_64_5.2_release.zip
RawTherapee_WinVista_64_5.2_release_debug.zip
RawTherapee_WinVista_64_5.2-dev-g1a2b3c4d_release_debug.zip