Revision of COMPILE.txt. Issue 1431
This commit is contained in:
728
COMPILE.txt
728
COMPILE.txt
@@ -1,317 +1,411 @@
|
||||
If you have problems with the compilation, please ask on the appropriated RawTherapee forum :
|
||||
http://www.rawtherapee.com/forum/viewforum.php?f=10
|
||||
|
||||
Preamble
|
||||
--------
|
||||
|
||||
Cmake is actually used to create the Makefiles (scripts that handle the build process) or specific Integrated Developement Environement (IDE) projects.
|
||||
It is designed to find all necessary compilation flags for your specific machine, but everything can be overriden.
|
||||
|
||||
RT's build mechanism will generate a build information file, named "AboutThisBuild.txt", and require some parameters that can't be set by Cmake, so it's
|
||||
done in our build script, and may be overridden at your own will. The build process also enable some sort of cross compiling, since you can only choose
|
||||
a specific processor variation of the same type (e.g. core2, athlon64, which are both an x86 architecture). Real cross compiling (e.g. building the windows
|
||||
version on a linux platform) has not been tested.
|
||||
|
||||
By default, no processor is specified, so Cmake/GCC will build RT for your processor (or maybe a generic processor). Developers that are providing build to
|
||||
download then have to set the processor label manually (set to 'undefined' by default) with the PROC_LABEL cmake's parameter (we assume that you know
|
||||
how to specify a cmake parameter).
|
||||
|
||||
Note for developers that handle an automated build system:
|
||||
Mercurial is required in order to produce the build information file, but you
|
||||
build system will certainly only use the source code without any access to a
|
||||
Mercurial repository. To generate the neede information (they are stored in
|
||||
ReleaseInfo.cmake) just run the sript tools/generateReleaseInfo. It will generate
|
||||
all information needed. After that you can delete .hg/ (and .hg*) and continue
|
||||
with the normal compile instructions without the need of mercurial installed.
|
||||
In short:
|
||||
1. check out the desired hg tag
|
||||
2. run tools/generateReleaseInfo (to generate ReleaseInfo.cmake)
|
||||
3. delete the mercurial stuff (.hg*)
|
||||
4. use it for your build system
|
||||
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
The toolchain:
|
||||
|
||||
There is 2 method to compile RawTherapee, and they each rely on different and common packages. They are
|
||||
now referred to METHOD 1 and METHOD 2.
|
||||
Of course, you'll have to install the package for the build method explained later in this document.
|
||||
|
||||
The rest of this document assumes that you've installed MinGW, MSYS and Gtkmm respectively to "C:\mingw",
|
||||
"C:\msys" and "C:\gtkmm".
|
||||
This tutorial assume that you've installed the packages in paths THAT DOES NOT CONTAIN SPACES.
|
||||
|
||||
METHOD 1:
|
||||
- MinGW64-TDM (Bundle or On-Demand installer from http://tdm-gcc.tdragon.net/download)
|
||||
Make sure you use the current 4.5.2 or better, and install MinGW64 (not MinGW32)
|
||||
MinGW64 is more comprehensive, plus it runs AND compiles both 32bit and 64bit Windows.
|
||||
Old Mingw32 version miss some required header files, so some Windows functions will be disabled though it will compile.
|
||||
However MinGW64 does not fully support XP, only Vista and up.
|
||||
- MSYS (http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe)
|
||||
If you have some trouble installing MSYS, see here : http://www.mingw.org/wiki/MSYS
|
||||
- CMake (http://www.cmake.org/cmake/resources/software.html)
|
||||
Version 2.8.4 or above is required for this platform
|
||||
- Gtkmm2.22 (for 32bit: http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/
|
||||
for 64bit: http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/)
|
||||
|
||||
METHOD 2:
|
||||
- MinGW-TDM (Bundle or On-Demand insteller from http://tdm-gcc.tdragon.net/download)
|
||||
- CMake (http://www.cmake.org/cmake/resources/software.html)
|
||||
- Gtkmm2.22 (for 32bit: http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/
|
||||
for 64bit: http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/)
|
||||
|
||||
Additionnal steps:
|
||||
When all the packages of your preferred method are installed:
|
||||
- set the GTKMM_BASEPATH user or system environment variable to the installation directory of Gtkmm
|
||||
(the Gtkmm's installer can do it for you)
|
||||
- set the MINGW_BASEPATH user or system environment variable to the installation directory of MinGW32
|
||||
- set the PKG_CONFIG_PATH user or system environment variable to the location of the pkgconfig directories:
|
||||
c:\mingw\lib\pkgconfig;c:\gtkmm\lib\pkgconfig
|
||||
You have to restart the console to take this new variables into account
|
||||
- On Windows, set Cmake option BUILD_BUNDLE ON
|
||||
- If you run MinGW64 and want to compile for 32bit, change the following vars in CMAKE (use CMAKE-GUI to makes this easier):
|
||||
CMAKE_CXX_FLAGS,CMAKE_C_FLAGS,CMAKE_SHARED_LINKER_FLAGS: -m32
|
||||
CMAKE_EXE_LINKER_FLAGS: -m32 --large-address-aware
|
||||
CMAKE_RC_FLAGS: -F pe-i386
|
||||
|
||||
- Copy the "Win32CMakeOptions-sample.txt" file located in the root directory of RT's source tree, to "cmo.txt" (e.g.)
|
||||
You can edit that copy to change the compilation flags to your needs, but the default values should be fine.
|
||||
However, if you wants to upload a build, you should set some additionnal information about your processor. There are two possibilities:
|
||||
1. You pickup a target processor from "ProcessorTargets.cmake": all you have to do is set the PROC_TARGET_NUMBER parameter in cmo.txt
|
||||
to the right target number.
|
||||
If you choose the 'native' solution, you have to set the processor label manually in cmo.txt, by uncommenting and set the PROC_LABEL
|
||||
parameter. Please provide a short name, like "core i5" or "athlon64" (without double quote)... processor frequency if of no use.
|
||||
2. You don't need specific processor flags, so you'll let PROC_TARGET_NUMBER set to 0, but you have to set the PROC_LABEL parameter
|
||||
in cmo.txt (don't forget to uncomment the line). Please provide a short name, like "core i5" or "athlon64" (without double quote)...
|
||||
specifying the processor frequency in it is useless.
|
||||
|
||||
|
||||
Dependancies:
|
||||
|
||||
RawTherapee rely on libraries that may not be part of the Gtkmm or MinGW package. There is two ways of installing
|
||||
thoses libraries.
|
||||
|
||||
The simple way:
|
||||
|
||||
For your convenience, those libraries has been precompiled and are downloadable at :
|
||||
|
||||
http://www.rawtherapee.com/releases_head/windows/dependencies_for_creating_builds/
|
||||
|
||||
If you don't find a suitable package for your toolchain, take the DIY way or ask a developer
|
||||
to build them for you.
|
||||
|
||||
Just unpack the content of this archive to the base installation dir of MinGW, and everything
|
||||
should work fine.
|
||||
|
||||
The "Do It Yourself" way:
|
||||
|
||||
The MSYS package is required to build the libraries. See above for the download link.
|
||||
|
||||
Before building them, look if they are already installed in your Gtkmm and MinGW directories. There shouldn't be
|
||||
two versions of the same library in different place.
|
||||
|
||||
Open an MSYS console, that will create a Linux environment, and compile the dependancies in that order:
|
||||
|
||||
zlib:
|
||||
If you have Gtkmm2.22 installed, you should skip this section
|
||||
- download: http://zlib.net/
|
||||
- how to build:
|
||||
cd to the unarchiving directory of zlib-1.2.5
|
||||
make -f win32/Makefile.gcc
|
||||
|
||||
Then, manually copy the files as follows (tip: you can individually copy the lines below and paste them in MSys's prompt with the middle mouse button):
|
||||
|
||||
cp -iv zlib1.dll /mingw/bin
|
||||
cp -iv zconf.h zlib.h /mingw/include
|
||||
cp -iv libz.a /mingw/lib
|
||||
cp -iv libzdll.a /mingw/lib/libz.dll.a
|
||||
|
||||
libpng:
|
||||
If you have Gtkmm2.22 installed, you should skip this section
|
||||
- download: http://sourceforge.net/projects/libpng/files/
|
||||
(please note that libpng 1.5 has not been tested yet)
|
||||
- how to build:
|
||||
cd to the unarchiving directory of lpng144
|
||||
|
||||
There are two options to build libpng:
|
||||
1. gtkmm doesn't provide zlib so i've compiled it myself
|
||||
cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/mingw -DCMAKE_BUILD_TYPE:STRING=Release
|
||||
2. gtkmm provide zlib and i want to reuse it (so we're assuming that you didn't compiled zlib like explained here above)
|
||||
cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/mingw -DCMAKE_PREFIX_PATH:PATH=C:/gtkmm -DCMAKE_BUILD_TYPE:STRING=Release
|
||||
|
||||
Then build and install:
|
||||
make
|
||||
make install
|
||||
|
||||
libjpeg:
|
||||
- download: http://www.ijg.org/
|
||||
- how to build:
|
||||
cd to the unarchiving directory of jpeg-8b
|
||||
./configure --prefix=/mingw
|
||||
copy the content of jconfig.txt to jconfig.h (overwrite the existing file)
|
||||
make
|
||||
make install
|
||||
|
||||
libtiff:
|
||||
- download: ftp://ftp.remotesensing.org/pub/libtiff/
|
||||
- how to build:
|
||||
|
||||
In the configure process below, set the zlib include and lib path to the right folder. We're assuming that you're using
|
||||
the one provided in the gtkmm bundle
|
||||
|
||||
./configure --prefix=/mingw --with-zlib-include-dir=/c/gtkmm/include --with-zlib-lib-dir=/c/gtkmm/lib
|
||||
make
|
||||
cd libtiff
|
||||
make install
|
||||
|
||||
libiptcdata:
|
||||
- download: http://libiptcdata.sourceforge.net/
|
||||
- how to build:
|
||||
./configure --prefix=/mingw
|
||||
|
||||
Edit the "Makefile" file from the root dir of libiptcdata, and search for "DIST_SUBDIRS ="
|
||||
and "SUBDIRS =". You should only find one line for each search. From those lines, remove "iptc", then
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
lcms:
|
||||
- download lcm v1.x for RT3.0, v2.x for RT3.1 and upper: http://sourceforge.net/projects/lcms/files/
|
||||
- how to build (suitable for both version):
|
||||
./configure --prefix=/mingw
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
IMPORTANT:
|
||||
Make sure that the lcms.pc and libiptcdata.pc files located in the pkgconfig dir has the first
|
||||
line like this : prefix=/mingw
|
||||
|
||||
If everything is well installed, you should see the following lines when running the cmake command (see "Building RT" below) :
|
||||
-- checking for module 'libiptcdata'
|
||||
-- found libiptcdata, version 1.0.4
|
||||
-- checking for module 'lcms<=1.99'
|
||||
-- found lcms, version 1.19
|
||||
-- Found JPEG: C:/mingw/lib/libjpeg.dll.a
|
||||
-- Found ZLIB: C:/gtkmm/lib/libz.dll.a
|
||||
-- Found PNG: C:/gtkmm/lib/libpng.lib
|
||||
-- Found TIFF: C:/mingw/lib/libtiff.dll.a
|
||||
|
||||
Building RT:
|
||||
|
||||
METHOD 1:
|
||||
Requirements:
|
||||
- MinGW + MSYS
|
||||
- CMake
|
||||
- GTK and GTKMM development environments
|
||||
|
||||
Compile:
|
||||
- Start an MSYS command line interface
|
||||
- Enter the root directory of the RawTherapee source tree (type: cd "/C/Absolute/Path/To/RawTherapee_sourceTree")
|
||||
- Type: cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -Ccmo.txt .
|
||||
- Type: make install
|
||||
- You'll find the compiled program in the subdirectory named like the value of CMAKE_BUILD_TYPE ("Release" in this example)
|
||||
|
||||
METHOD 2:
|
||||
Requirements:
|
||||
- MinGW-TDM (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.1.exe/download)
|
||||
- CMake (http://www.cmake.org/cmake/resources/software.html)
|
||||
- Mercurial (http://mercurial.selenic.com/wiki/WindowsInstall)
|
||||
- Gtkmm (http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/)
|
||||
|
||||
Compile:
|
||||
- Start a standard DOS command line interface (WIN + "R" -> "cmd")
|
||||
- Enter the root directory of the RawTherapee source tree (type: cd C:\Absolute\Path\To\RawTherapee_sourceTree)
|
||||
If you wants to upload a build, you should set some additionnal information about your processor. There are two possibilities:
|
||||
1. You pickup a target processor from "ProcessorTargets.cmake": all you have to do is adding "-D PROC_TARGET_NUMBER:STRING=number"
|
||||
to cmake's command line
|
||||
If you choose the 'native' solution's number, you have to set the processor label manually by setting "-D PROC_LABEL:STRING=procLabel"
|
||||
in cmake's command line
|
||||
Please provide a short name, like "core i5" or "athlon64" (without double quote)... processor frequency if of no use.
|
||||
2. You don't need specific processor flags, you still have to set the PROC_LABEL parameter (see point 1 righ above)
|
||||
- Type: mingw32-make.exe install
|
||||
- You'll find the compiled program in the subdirectory named like the value of CMAKE_BUILD_TYPE ("Release" in this example)
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
Requirements:
|
||||
- CMake
|
||||
- GTK and GTKMM development packages
|
||||
- libtiff, libpng, libjpeg, lcms, libiptcdata development packages
|
||||
- ...did I forget something?
|
||||
|
||||
On Ubuntu/Debian the requirements can be installed by running:
|
||||
sudo apt-get install build-essential cmake libgtk2.0-dev libgtkmm-2.4-dev libtiff-dev libpng-dev libjpeg-dev liblcms-dev libiptcdata-dev mercurial
|
||||
|
||||
Compile:
|
||||
- Enter the root directory of the RawTherapee source tree
|
||||
- Type: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
|
||||
developers that wants to provide a build has to set the PROC_LABEL to their processor name, e.g.:
|
||||
cmake -DPROC_LABEL:STRING=athlon64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
|
||||
- Type: make install
|
||||
- You find the compiled program in the release directory (you can copy it anywhere you want)
|
||||
|
||||
(By changing the cmake flags, you can change where the release is. By removing all flags it should go to the standard system install location).
|
||||
|
||||
|
||||
Using Eclipse under Linux:
|
||||
|
||||
Eclipse mercurial plugin:
|
||||
click Help -> Install new Software.
|
||||
The Eclipse Update Site for MercurialEclipse is available at this URL:
|
||||
http://cbes.javaforge.com/update
|
||||
|
||||
Import the rawtherapee mercurial repository:
|
||||
File->new->'other'->mercurial->Clone existing repository
|
||||
fill in URL: https://rawtherapee.googlecode.com/hg
|
||||
|
||||
Enter root directory of RawTherapee source tree from a terminal window.
|
||||
configure the source for Eclipse with:
|
||||
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=. -DCMAKE_BUILD_TYPE=Release
|
||||
If you wants to upload a build, you should set some additionnal information about your processor. There are two possibilities:
|
||||
1. You pickup a target processor from "ProcessorTargets.cmake": all you have to do is adding "-D PROC_TARGET_NUMBER:STRING=number"
|
||||
to cmake's command line
|
||||
If you choose the 'native' solution's number, you have to set the processor label manually by setting "-D PROC_LABEL:STRING=procLabel"
|
||||
in cmake's command line
|
||||
Please provide a short name, like "core i5" or "athlon64" (without double quote)... processor frequency if of no use.
|
||||
2. You don't need specific processor flags, you still have to set the PROC_LABEL parameter (see point 1 righ above)
|
||||
|
||||
Eclipse does not do 'make install' but only 'make all' so to get the release there are 2 ways.
|
||||
1. type 'make install' in the console or,
|
||||
2. in 'Project'->'properties'->'C/C++ Make Project'->'Build (incremental build)' change 'all' to 'install'
|
||||
|
||||
OSX
|
||||
---
|
||||
|
||||
Requirements:
|
||||
- XCode Development Tools (you only need a subset of these, but it is probably easier to just install all of them)
|
||||
- MacPorts
|
||||
- Set /opt/local/etc/macports/variants.conf to include "+no_x11 +quartz"
|
||||
- If you want to build for multiple architectures, add +universal to variants.conf. Note that this will increase the size of the final application substantially.
|
||||
- Set /opt/local/etc/macports/macports.conf key 'universal_archs' to the architectures you wish to build for. Possible values
|
||||
include "i386 x86_64 ppc ppc64"
|
||||
- Edit beginning of CMakeLists.txt to enable the same architectures as you added to variants.conf
|
||||
- Run "sudo port install cairomm pango-devel gtk2 cmake glibmm gtkmm lcms libiptcdata" to install all needed libraries and tools
|
||||
- If you don't already have Mercurial installed, run "sudo port install mercurial"
|
||||
- If you want to try OpenMP builds, run "sudo port install gcc45"
|
||||
|
||||
Compile:
|
||||
- Enter root directory of RawTherapee source tree
|
||||
- Type: cmake -D CMAKE_C_COMPILER=gcc-mp-4.5 -D CMAKE_CXX_COMPILER=g++-mp-4.5 . (to enable OpenMP, assuming you have installed gcc45) OR:
|
||||
cmake -D OPTION_OMP=false . (to disable OpenMP and use the default compiler)
|
||||
If you wants to upload a build, you should set some additionnal information about your processor. There are two possibilities:
|
||||
1. You pickup a target processor from "ProcessorTargets.cmake": all you have to do is adding "-D PROC_TARGET_NUMBER:STRING=number"
|
||||
to cmake's command line
|
||||
If you choose the 'native' solution's number, you have to set the processor label manually by setting "-D PROC_LABEL:STRING=procLabel"
|
||||
in cmake's command line
|
||||
Please provide a short name, like "core i5" or "athlon64" (without double quote)... processor frequency if of no use.
|
||||
2. You don't need specific processor flags, you still have to set the PROC_LABEL parameter (see point 1 righ above)
|
||||
- Type: make install
|
||||
- Type: ./tools/osx/make-app-bundle
|
||||
- You will find a RawTherapee.dmg file in release/ folder; this is the distribution release and can be run on any machine which meets the
|
||||
architecture requirements you specified in variants.conf earlier.
|
||||
|
||||
For any bugs or patches to the OSX build, please contact Wyatt <wyatt@digitalcave.ca>
|
||||
If you have problems with the compilation, please ask on the appropriate
|
||||
RawTherapee forum : http://www.rawtherapee.com/forum/viewforum.php?f=10
|
||||
|
||||
Preamble
|
||||
--------
|
||||
|
||||
CMake is actually used to create the makefiles (scripts that handle the build
|
||||
process) or specific Integrated Developement Environement (IDE) projects. It
|
||||
is designed to find all necessary compilation flags for your specific machine,
|
||||
but everything can be overriden.
|
||||
|
||||
RawTherapee's build mechanism will generate a build information file, named
|
||||
"AboutThisBuild.txt", and require some parameters that can't be set by CMake,
|
||||
so it's done in our build script, and may be overridden at your own will. The
|
||||
build process also enables some sort of cross-compiling, since you can only
|
||||
choose a specific processor variation of the same type (e.g. core2, athlon64,
|
||||
which are both an x86 architecture). Real cross-compiling (e.g. building the
|
||||
Windows version on a Linux platform) has not been tested.
|
||||
|
||||
By default, no processor is specified, so CMake/GCC will build RT for your
|
||||
machine's processor. You can specify that the build is to be made for a
|
||||
generic processor by using the -DPROC_TARGET_NUMBER="1" CMake option.
|
||||
Developers who are providing builds for download from the RawTherapee website
|
||||
have to set the processor label (a human-readable description of the
|
||||
processor, set to "undefined" by default) manually with the -DPROC_LABEL="foo"
|
||||
CMake parameter.
|
||||
|
||||
Note for developers that handle an automated build system: Mercurial is
|
||||
required in order to produce the build information file, but your build system
|
||||
will certainly only use the source code without any access to a Mercurial
|
||||
repository. To generate the needed information, run the sript
|
||||
./tools/generateReleaseInfo. After that you can delete .hg* and continue with
|
||||
the normal compile instructions without the need for mercurial.
|
||||
|
||||
In short, once you cd into your clone of the RawTherapee source code
|
||||
repository:
|
||||
1. Check out the desired hg tag: hg update "4.0.10"
|
||||
2. Run tools/generateReleaseInfo to generate ReleaseInfo.cmake:
|
||||
./tools/generateReleaseInfo
|
||||
3. Delete the mercurial stuff: rm -rvf .hg*
|
||||
4. The repository is now ready to be made into a public tarball: hg archive
|
||||
"rawtherapee-4.0.10.tar" -X ".hg*" && xz -z -9e -T 8 "rawtherapee-4.0.10.tar"
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
The toolchain:
|
||||
|
||||
There are two methods of compiling RawTherapee in Windows, and they each
|
||||
rely on different and common packages. They will be referred to as METHOD 1
|
||||
and METHOD 2. You will have to install the dependencies for the build
|
||||
methods explained later in this document.
|
||||
|
||||
The rest of this document assumes that you've installed MinGW, MSYS and
|
||||
gtkmm respectively to "C:\mingw", "C:\msys" and "C:\gtkmm". This tutorial
|
||||
assume that you've installed the packages in paths that DO NOT CONTAIN
|
||||
SPACES.
|
||||
|
||||
METHOD 1
|
||||
- MinGW64-TDM (Bundle or On-Demand installer from
|
||||
http://tdm-gcc.tdragon.net/download) Make sure you use the current 4.6.1
|
||||
or newer stable version, and install MinGW64 (not MinGW32), as MinGW64
|
||||
is more comprehensive plus it runs AND compiles for both 32bit and 64bit
|
||||
Windows machines. Old Mingw32 versions miss some required header files,
|
||||
so some Windows functions will be disabled though it will compile.
|
||||
However MinGW64 does not fully support Windows XP, only Vista and up.
|
||||
- MSYS - http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe If you
|
||||
have some trouble installing MSYS, see here:
|
||||
http://www.mingw.org/wiki/MSYS
|
||||
- CMake - http://www.cmake.org/cmake/resources/software.html Version 2.8.8
|
||||
or above is required for this platform
|
||||
- Gtkmm2.22
|
||||
- for 32bit:
|
||||
http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/
|
||||
- for 64bit:
|
||||
http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/
|
||||
|
||||
METHOD 2
|
||||
- MinGW-TDM - Bundle or On-Demand installer
|
||||
http://tdm-gcc.tdragon.net/download
|
||||
- CMake - http://www.cmake.org/cmake/resources/software.html
|
||||
- gtkmm-2.22
|
||||
- for 32bit:
|
||||
http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/
|
||||
- for 64bit:
|
||||
http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/
|
||||
|
||||
Additional steps:
|
||||
When all the packages of your preferred method are installed:
|
||||
- set the GTKMM_BASEPATH user or system environment variable to the
|
||||
installation directory of gtkmm (the gtkmm installer can do it for you).
|
||||
- set the MINGW_BASEPATH user or system environment variable to the
|
||||
installation directory of MinGW32.
|
||||
- set the PKG_CONFIG_PATH user or system environment variable to the
|
||||
location of the pkgconfig directories:
|
||||
c:\mingw\lib\pkgconfig;c:\gtkmm\lib\pkgconfig You have to restart the
|
||||
console to take these new variables into effect.
|
||||
- set the CMake option BUILD_BUNDLE ON
|
||||
- If you run MinGW64 and want to compile for 32bit, change the following
|
||||
vars in CMake (use CMAKE-GUI to makes this easier):
|
||||
CMAKE_CXX_FLAGS,CMAKE_C_FLAGS,CMAKE_SHARED_LINKER_FLAGS: -m32
|
||||
CMAKE_EXE_LINKER_FLAGS: -m32 --large-address-aware
|
||||
CMAKE_RC_FLAGS: -F pe-i386
|
||||
|
||||
- Copy the "Win32CMakeOptions-sample.txt" file located in the root
|
||||
directory of RT's source tree, to "cmo.txt" (for example). You can edit
|
||||
that copy to change the compilation flags to your needs, but the default
|
||||
values should be fine. However, if you want to upload a build, you
|
||||
should set some additional information about your processor. There are
|
||||
two possibilities:
|
||||
1. You pick up a target processor from "ProcessorTargets.cmake". All you
|
||||
have to do is set the PROC_TARGET_NUMBER parameter in cmo.txt to the
|
||||
desired target number. If you choose the 'native' solution, you have
|
||||
to set the processor label manually in cmo.txt by uncommenting and
|
||||
setting the PROC_LABEL parameter. Please provide a short name, like
|
||||
"core i5" or "athlon64" (without double quotes). Processor frequency
|
||||
is of no use.
|
||||
2. You don't need specific processor flags, so you'll let
|
||||
PROC_TARGET_NUMBER default to 0, but you have to set the PROC_LABEL
|
||||
parameter in cmo.txt (don't forget to uncomment the line). Please
|
||||
provide a short name, like "core i5" or "athlon64" (without double
|
||||
quotes). Specifying the processor frequency isof no use.
|
||||
|
||||
|
||||
|
||||
Dependancies:
|
||||
|
||||
RawTherapee relies on libraries that may not be part of the gtkmm or MinGW
|
||||
packages. There are two ways of installing these libraries.
|
||||
|
||||
The simple way:
|
||||
For your convenience, these libraries has been precompiled and are
|
||||
downloadable at:
|
||||
http://www.rawtherapee.com/releases_head/windows/dependencies_for_creating_builds/
|
||||
If you don't find a suitable package for your toolchain, take the DIY way
|
||||
or ask a developer to build them for you. Unpack the contents of this
|
||||
archive to the base installation dir of MinGW, and everything should work
|
||||
fine.
|
||||
|
||||
The "Do It Yourself" way:
|
||||
The MSYS package is required to build the libraries. See above for the
|
||||
download link. Before building them, check if they are already installed
|
||||
in your gtkmm and MinGW directories. There shouldn't be two versions of
|
||||
the same library in different places.
|
||||
|
||||
Open an MSYS console, that will create a Linux environment, and compile
|
||||
the dependancies in the following order:
|
||||
zlib:
|
||||
If you have Gtkmm-2.22 installed, you should skip this zlib section.
|
||||
- Download: http://zlib.net/
|
||||
- How to build:
|
||||
cd to the directory you unpacked zlib-1.2.5 to,
|
||||
make -f win32/Makefile.gcc
|
||||
|
||||
Then, manually copy the files as follows (tip: you can individually
|
||||
copy the lines below and paste them in MSYS' prompt with the middle
|
||||
mouse button):
|
||||
cp -iv zlib1.dll /mingw/bin
|
||||
cp -iv zconf.h zlib.h /mingw/include
|
||||
cp -iv libz.a /mingw/lib
|
||||
cp -iv libzdll.a /mingw/lib/libz.dll.a
|
||||
|
||||
libpng:
|
||||
If you have gtkmm-2.22 installed, you should skip this libpng section.
|
||||
- Download: http://sourceforge.net/projects/libpng/files/
|
||||
- How to build:
|
||||
cd to the directory you unpacked lpng144 to.
|
||||
There are two methods of building libpng:
|
||||
1. gtkmm doesn't provide zlib so compile it yourself:
|
||||
cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/mingw -DCMAKE_BUILD_TYPE:STRING=Release
|
||||
2. gtkmm provides zlib so you can reuse it (assuming that you
|
||||
hadn't compiled zlib as explained above):
|
||||
cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/mingw -DCMAKE_PREFIX_PATH:PATH=C:/gtkmm -DCMAKE_BUILD_TYPE:STRING=Release
|
||||
|
||||
Then build and install:
|
||||
make
|
||||
make install
|
||||
|
||||
libjpeg:
|
||||
- Download: http://www.ijg.org/
|
||||
- How to build:
|
||||
cd to the directory you unpacked jpeg-8b to.
|
||||
./configure --prefix=/mingw
|
||||
Copy jconfig.txt to jconfig.h (overwrite the existing file).
|
||||
make
|
||||
make install
|
||||
|
||||
libtiff:
|
||||
- Download: ftp://ftp.remotesensing.org/pub/libtiff/
|
||||
- How to build:
|
||||
In the configure process below, set the zlib include and lib path
|
||||
to the right folder. We're assuming that you're using the one
|
||||
provided in the gtkmm bundle.
|
||||
./configure --prefix=/mingw --with-zlib-include-dir=/c/gtkmm/include --with-zlib-lib-dir=/c/gtkmm/lib
|
||||
make
|
||||
cd libtiff
|
||||
make install
|
||||
|
||||
libiptcdata:
|
||||
- Download: http://libiptcdata.sourceforge.net/
|
||||
- How to build:
|
||||
./configure --prefix=/mingw
|
||||
|
||||
Edit the "Makefile" file from the root dir of libiptcdata and
|
||||
search for "DIST_SUBDIRS =" and "SUBDIRS =". You should only find
|
||||
one line for each search. From these lines, remove "iptc", then:
|
||||
make
|
||||
make install
|
||||
|
||||
lcms:
|
||||
- Download lcms1 for RawTherapee-3.0 or lcms2 for RawTherapee-3.1 and
|
||||
newer http://sourceforge.net/projects/lcms/files/
|
||||
- How to build (suitable for both version):
|
||||
./configure --prefix=/mingw
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
IMPORTANT:
|
||||
Make sure that the lcms.pc and libiptcdata.pc files located in the
|
||||
pkgconfig dir have the first line like this:
|
||||
prefix=/mingw
|
||||
|
||||
If everything has been installed correctly, you should see the following
|
||||
lines when running the cmake command (see "Building RT" below):
|
||||
-- checking for module 'libiptcdata'
|
||||
-- found libiptcdata, version 1.0.4
|
||||
-- checking for module 'lcms2'
|
||||
-- found lcms2, version 2.3
|
||||
-- Found JPEG: C:/mingw/lib/libjpeg.dll.a
|
||||
-- Found ZLIB: C:/gtkmm/lib/libz.dll.a
|
||||
-- Found PNG: C:/gtkmm/lib/libpng.lib
|
||||
-- Found TIFF: C:/mingw/lib/libtiff.dll.a
|
||||
|
||||
Building RT:
|
||||
|
||||
METHOD 1:
|
||||
Requirements:
|
||||
- MinGW + MSYS
|
||||
- CMake
|
||||
- GTK and gtkmm development environments
|
||||
|
||||
Compile:
|
||||
- Start an MSYS command line interface,
|
||||
- Enter the root directory of the RawTherapee source tree:
|
||||
cd /C/Absolute/Path/To/RawTherapee_sourceTree
|
||||
- Type:
|
||||
cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -Ccmo.txt .
|
||||
- Type:
|
||||
make install
|
||||
- You'll find the compiled program in the subdirectory named like the
|
||||
value of CMAKE_BUILD_TYPE ("Release" in this example).
|
||||
|
||||
METHOD 2: Requirements:
|
||||
- MinGW-TDM:
|
||||
https://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/
|
||||
- CMake: http://www.cmake.org/cmake/resources/software.html
|
||||
- Mercurial: http://mercurial.selenic.com/wiki/WindowsInstall
|
||||
- gtkmm: http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/
|
||||
|
||||
Compile:
|
||||
- Start a standard DOS command prompt (WIN+R > cmd),
|
||||
- Enter the root directory of the RawTherapee source tree:
|
||||
cd C:\Absolute\Path\To\RawTherapee_sourceTree
|
||||
|
||||
If you want to upload a build, you should set some additional
|
||||
information about your processor. There are two possibilities:
|
||||
1. You pick up a target processor from "ProcessorTargets.cmake". All
|
||||
you have to do is set "-D PROC_TARGET_NUMBER:STRING=number" in
|
||||
cmake's command line to the desired target number. If you choose
|
||||
the 'native' solution, you have to set the processor label manually
|
||||
by setting "-D PROC_LABEL:STRING=procLabel" in cmake's command
|
||||
line. Please provide a short name, like "core i5" or "athlon64"
|
||||
(without double quotes). Processor frequency is of no use.
|
||||
2. You don't need specific processor flags, so you'll let
|
||||
PROC_TARGET_NUMBER default to 0, but you still have to set the
|
||||
PROC_LABEL parameter (see point 1 righ above).
|
||||
|
||||
- Type:
|
||||
mingw32-make.exe install
|
||||
- You'll find the compiled program in the subdirectory named like the
|
||||
value of CMAKE_BUILD_TYPE ("Release" in this example).
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
Requirements:
|
||||
|
||||
PACKAGE GENTOO DEBIAN/UBUNTU URL
|
||||
GTK+ gtk+-2.0>=2.12 x11-libs/gtk+ libgtk2.0-dev http://www.gtk.org/
|
||||
GLIB2 glib-2.0>=2.16 dev-libs/glib libglib2.0-dev http://www.gtk.org/
|
||||
GLIBMM glibmm-2.4>=2.16 dev-cpp/glibmm libglibmm-2.4-dev http://www.gtkmm.org
|
||||
GTKMM gtkmm-2.4>=2.12 dev-cpp/gtkmm libgtkmm-2.4-dev http://www.gtkmm.org
|
||||
SIGC sigc++-2.0 dev-libs/libsigc++ libsigc++-2.0-dev http://libsigc.sourceforge.net/
|
||||
LIBIPTCDATA libiptcdata>=1.0.2 media-libs/libiptcdata libiptcdata-dev http://libiptcdata.sourceforge.net
|
||||
LCMS2 lcms>=2.0a media-libs/lcms liblcms2-dev http://www.littlecms.com/
|
||||
JPEG libjpeg>=6b media-libs/jpeg libjpeg-dev http://jpegclub.org/ http://www.ijg.org/
|
||||
TIFF libtiff>=3.9.4 media-libs/tiff libtiff-dev http://www.remotesensing.org/libtiff/
|
||||
PNG libpng>=1.2.44 media-libs/libpng libpng-dev http://www.libpng.org/
|
||||
BZIP2 bzip2>-1.0.4 app-arch/bzip2 libbz2-dev http://www.bzip.org/
|
||||
ZLIB zlib>=1.2.3-r1 sys-libs/zlib zlib1g-dev http://www.zlib.net/
|
||||
EXIV2 exiv2>=0.19 media-gfx/exiv2 libexiv2-dev http://www.exiv2.org/
|
||||
EXPAT expat>=2.1.0 dev-libs/expat libexpat-dev http://expat.sourceforge.net/
|
||||
|
||||
On Ubuntu/Debian the requirements can be installed by running:
|
||||
sudo apt-get install build-essential cmake libbz2-dev libexiv2-dev libexpat1-dev libglib2.0-dev libglibmm-2.4-dev libgtk2.0-dev libgtkmm-2.4-dev libiptcdata-dev libjpeg8-dev liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev mercurial zlib1g-dev
|
||||
|
||||
Compile:
|
||||
- Enter the root directory of the RawTherapee source tree
|
||||
- Type:
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
|
||||
Developers who want to provide a public build have to set the PROC_LABEL
|
||||
to their processor name, e.g.:
|
||||
cmake -DPROC_LABEL:STRING=athlon64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
|
||||
- Type:
|
||||
make install
|
||||
- You'll find the compiled program in the subdirectory named like the value
|
||||
of CMAKE_BUILD_TYPE ("Release" in this example). You can copy it anywhere
|
||||
you want.
|
||||
|
||||
By changing the cmake flags, you can change where the release will compile
|
||||
to. By removing all flags it should go to the standard system install
|
||||
location.
|
||||
|
||||
Using Eclipse under Linux:
|
||||
|
||||
Eclipse mercurial plugin: Click "Help > Install new Software".
|
||||
The Eclipse Update Site for MercurialEclipse is available at this URL:
|
||||
http://cbes.javaforge.com/update
|
||||
|
||||
Import the rawtherapee mercurial repository:
|
||||
"File > new > other > mercurial > Clone existing repository"
|
||||
Enter this URL:
|
||||
https://rawtherapee.googlecode.com/hg
|
||||
|
||||
Enter the root directory of the RawTherapee source tree from a terminal
|
||||
window. Configure the source for Eclipse with:
|
||||
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=. -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
If you want to upload a build, you should set some additional information
|
||||
about your processor. There are two possibilities:
|
||||
1. You pick up a target processor from "ProcessorTargets.cmake". All you
|
||||
have to do is set "-D PROC_TARGET_NUMBER:STRING=number" in cmake's
|
||||
command line to the desired target number. If you choose the 'native'
|
||||
solution, you have to set the processor label manually by setting "-D
|
||||
PROC_LABEL:STRING=procLabel" in cmake's command line. Please provide a
|
||||
short name, like "core i5" or "athlon64" (without double quotes).
|
||||
Processor frequency is of no use.
|
||||
2. You don't need specific processor flags, so you'll let
|
||||
PROC_TARGET_NUMBER default to 0, but you still have to set the
|
||||
PROC_LABEL parameter (see point 1 righ above).
|
||||
|
||||
Eclipse does not do 'make install', but only 'make all'.
|
||||
There are two ways to compile:
|
||||
1. type 'make install' in the console or,
|
||||
2. in "Project > properties > C/C++ Make Project > Build (incremental
|
||||
build)" change 'all' to 'install'.
|
||||
|
||||
OS X
|
||||
----
|
||||
|
||||
Requirements:
|
||||
- XCode Development Tools (you only need a subset of these, but it is
|
||||
probably easier to just install all of them)
|
||||
- MacPorts
|
||||
- Set /opt/local/etc/macports/variants.conf to include "+no_x11 +quartz"
|
||||
- If you want to build for multiple architectures, add +universal to
|
||||
variants.conf. Note that this will increase the size of the final
|
||||
application substantially.
|
||||
- Set /opt/local/etc/macports/macports.conf key 'universal_archs' to the
|
||||
architectures you wish to build for. Possible values include "i386
|
||||
x86_64 ppc ppc64"
|
||||
- Edit the beginning of CMakeLists.txt to enable the same architectures
|
||||
as you added to variants.conf
|
||||
- To install all the tools and dependencies, run:
|
||||
sudo port install cairomm pango-devel gtk2 cmake glibmm gtkmm lcms libiptcdata
|
||||
- If you don't already have Mercurial installed, run:
|
||||
sudo port install mercurial
|
||||
- If you want to try OpenMP builds, run:
|
||||
sudo port install gcc45
|
||||
|
||||
Compile:
|
||||
- Enter the root directory of the RawTherapee source tree
|
||||
- To enable OpenMP, assuming you have installed gcc45), type:
|
||||
cmake -D CMAKE_C_COMPILER=gcc-mp-4.5 -D CMAKE_CXX_COMPILER=g++-mp-4.5 .
|
||||
OR to disable OpenMP and use the default compiler, type:
|
||||
cmake -D OPTION_OMP=false .
|
||||
|
||||
If you want to upload a build, you should set some additional information
|
||||
about your processor. There are two possibilities:
|
||||
1. You pick up a target processor from "ProcessorTargets.cmake". All you
|
||||
have to do is set "-D PROC_TARGET_NUMBER:STRING=number" in cmake's
|
||||
command line to the desired target number. If you choose the 'native'
|
||||
solution, you have to set the processor label manually by setting "-D
|
||||
PROC_LABEL:STRING=procLabel" in cmake's command line. Please provide a
|
||||
short name, like "core i5" or "athlon64" (without double quotes).
|
||||
Processor frequency is of no use.
|
||||
2. You don't need specific processor flags, so you'll let
|
||||
PROC_TARGET_NUMBER default to 0, but you still have to set the
|
||||
PROC_LABEL parameter (see point 1 righ above).
|
||||
|
||||
- Type:
|
||||
make install
|
||||
- Type:
|
||||
./tools/osx/make-app-bundle
|
||||
- You will find a RawTherapee.dmg file in the release/ folder; this is the
|
||||
distribution release and can be run on any machine which meets the
|
||||
architecture requirements you specified in variants.conf earlier.
|
||||
|
||||
Contact: For any bugs or patches to the OS X build, please contact Wyatt
|
||||
<wyatt@digitalcave.ca>
|
||||
|
Reference in New Issue
Block a user