From 11f727169d12b680290d9051c1d825564aeae393 Mon Sep 17 00:00:00 2001 From: DrSlony Date: Mon, 2 Jul 2012 03:03:00 +0100 Subject: [PATCH] Revision of COMPILE.txt, issue 1431 --- COMPILE.txt | 247 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 154 insertions(+), 93 deletions(-) diff --git a/COMPILE.txt b/COMPILE.txt index 845a07427..026e651e2 100644 --- a/COMPILE.txt +++ b/COMPILE.txt @@ -1,9 +1,17 @@ If you have problems with the compilation, please ask on the appropriate -RawTherapee forum : http://www.rawtherapee.com/forum/viewforum.php?f=10 +RawTherapee forum: http://www.rawtherapee.com/forum/viewforum.php?f=10 -Preamble +PREAMBLE -------- + Some commands span multiple lines, each line of such a command except for the + last one will end in a backslash character, "\". + When copying code, be sure to copy all lines from the first one that ends in \ + till the last line that does not end in a \ character. + + Some parts of code contain . Replace these with whatever + value is needed, e.g. + 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, @@ -28,18 +36,20 @@ Preamble 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. + repository. To generate the needed information, run the script: + ./tools/generateReleaseInfo + After that, you can delete .hg* (the example below uses "-X *.hg*" to exclude + those files and folders instead of deleting them - the end result is the same) + 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: + repository, using version "4.0.10" as an example: 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" + ./tools/generateReleaseInfo + 3. The repository is now ready to be made into a public tarball: + ./tools/generateSourceTarball The build system especially encourages to perform out-of-source builds. This means that the CMake project is generated in a folder which is not in the @@ -55,11 +65,48 @@ Preamble configure_file. Please keep this in mind when altering the CMake files. +DEPENDENCIES +------------ -Windows + PACKAGE URL + BZIP2 bzip2>-1.0.4 http://www.bzip.org/ + EXIV2 exiv2>=0.19 http://www.exiv2.org/ + EXPAT expat>=2.1.0 http://expat.sourceforge.net/ + GLIB2 glib-2.0>=2.16 http://www.gtk.org/ + GLIBMM glibmm-2.4>=2.16 http://www.gtkmm.org + GTK+ gtk+-2.0>=2.12 http://www.gtk.org/ + GTKMM gtkmm-2.4>=2.12 http://www.gtkmm.org + JPEG libjpeg>=6b http://libjpeg-turbo.virtualgl.org/ + http://jpegclub.org/ + http://www.ijg.org/ + LCMS2 lcms>=2.0a http://www.littlecms.com/ + LIBIPTCDATA libiptcdata>=1.0.2 http://libiptcdata.sourceforge.net + PNG libpng>=1.2.44 http://www.libpng.org/ + SIGC sigc++-2.0 http://libsigc.sourceforge.net/ + TIFF libtiff>=3.9.4 http://www.remotesensing.org/libtiff/ + ZLIB zlib>=1.2.3-r1 http://www.zlib.net/ + + +WINDOWS ------- - The toolchain: + OPTIONAL: + - TortoiseHG + You can make your life a little easier by using a graphical client for + working with Mercurial. One such free and open-soure cross-platform + client is TortoiseHG, you can get it from: + http://tortoisehg.bitbucket.org/ + + - Weird compressed archive formats? + You might need to unpack archives in formats which Windows does not + handle by default. That's no problem, there are a few free programs out + there which handle many more formats than Windows does, and faster too. + We recommend: + http://www.7-zip.org/ + http://peazip.sourceforge.net/ + + + 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 @@ -67,9 +114,8 @@ Windows 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. + gtkmm respectively to "C:\mingw", "C:\msys" and "C:\gtkmm". These packages + must be installed in paths that DO NOT CONTAIN SPACES. METHOD 1 - MinGW64-TDM (Bundle or On-Demand installer from @@ -100,7 +146,7 @@ Windows - for 64bit: http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/ - Additional steps: + 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). @@ -137,29 +183,31 @@ Windows quotes). Specifying the processor frequency isof no use. - - Dependancies: + DEPENDENCIES: - RawTherapee relies on libraries that may not be part of the gtkmm or MinGW - packages. There are two ways of installing these libraries. + RawTherapee depends on libraries which are not 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 + THE SIMPLE WAY: + For your convenience, most of the required 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. + Unpack the contents of these archives to the base installation dir of + MinGW. + + NOTE: those archives contain most but not all of the required + libraries. See the dependencies list at the beginning of the document, + find the missing ones (such as LCMS2 and Expat) and see below for + instructions on where to download them from and how to install them. - The "Do It Yourself" way: + 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: + the dependencies in the following order: zlib: If you have Gtkmm-2.22 installed, you should skip this zlib section. - Download: http://zlib.net/ @@ -222,14 +270,18 @@ Windows make make install - lcms: - - Download lcms1 for RawTherapee-3.0 or lcms2 for RawTherapee-3.1 and - newer http://sourceforge.net/projects/lcms/files/ + LCMS: + - Download LCMS2 for RawTherapee-3.1 and newer (or LCMS1 for RawTherapee-3.0) + http://sourceforge.net/projects/lcms/files/ - How to build (suitable for both version): ./configure --prefix=/mingw make make install + Expat: + - Download: http://expat.sourceforge.net/ + - Install + IMPORTANT: Make sure that the lcms.pc and libiptcdata.pc files located in the @@ -247,8 +299,8 @@ Windows -- Found PNG: C:/gtkmm/lib/libpng.lib -- Found TIFF: C:/mingw/lib/libtiff.dll.a - Building RT: - + BUILDING RT: + METHOD 1: Requirements: - MinGW + MSYS @@ -262,88 +314,96 @@ Windows mkdir build cd build - Type: - cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -Ccmo.txt + 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: + 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 a new empty folder outside RawTherapee's source directory: cd /C/Absolute/Path/To/RawTherapee_sourceTree mkdir build cd build - - 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). - + 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 +LINUX ----- - Requirements: + DEPENDENCIES: + See the list of dependencies at the beginning of this document. + + In 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 + + In Gentoo, run: + sudo emerge -uva app-arch/bzip2 media-gfx/exiv2 dev-libs/expat \ + dev-libs/glib dev-cpp/glibmm x11-libs/gtk+ dev-cpp/gtkmm \ + media-libs/libjpeg-turbo media-libs/lcms media-libs/libiptcdata \ + media-libs/libpng dev-libs/libsigc++ media-libs/tiff sys-libs/zlib + + In Arch, run: + sudo pacman -S bzip2 exiv2 expat glib2 glibmm gtk gtkmm lcms2 \ + libiptcdata libjpeg-turbo libpng libsigc++ libtiff zlib + + COMPILE: + The Automatic Way: + The easiest way compile RawTherapee is by using the buildRT script, read + all about it in the forum: + http://rawtherapee.com/forum/viewtopic.php?p=22213#p22213 + + The Manual Way: + - Create and enter a new empty folder outside RawTherapee's source + directory: + mkdir ~/rt-build + cd ~/rt-build + - 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. + + You're done. - 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: - - Create and enter a new empty folder outside RawTherapee's source directory: - mkdir ~/rt-build - cd ~/rt-build - - 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". @@ -382,7 +442,7 @@ Linux OS X ---- - Requirements: + REQUIREMENTS: - XCode Development Tools (you only need a subset of these, but it is probably easier to just install all of them) - MacPorts @@ -402,10 +462,11 @@ OS X - If you want to try OpenMP builds, run: sudo port install gcc45 - Compile: + 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 + 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