1
project(darktable CXX C)
2
cmake_minimum_required(VERSION 2.6)
3
cmake_policy(VERSION 2.6)
5
option(USE_GCONF_BACKEND "Detect and use gconf backend if available." ON)
6
option(USE_CAMERA_SUPPORT "Detect and use camera support if available." ON)
7
option(USE_OPENMP "Use openmp threading support." ON)
8
option(USE_DARKTABLE_PROFILING OFF)
9
option(DONT_USE_RAWSPEED "Dont compile rawspeed backend." OFF)
10
option(DONT_INSTALL_GCONF_SCHEMAS "Dont install gconf schemas, usefull for package creation." OFF)
11
option(BUILD_USERMANUAL "Build all the versions of the usermanual." OFF)
12
option(INSTALL_IOP_EXPERIMENTAL "Also install unstable, unfinished, broken, and likely-to-change-soon plugins." OFF)
13
option(INSTALL_IOP_LEGACY "Also install old plugins we want to get rid of." OFF)
16
# Set platform defaults...
19
message("-- Mac OSX build detected, setting default features")
20
set(USE_GCONF_BACKEND OFF)
21
set(USE_CAMERA_SUPPORT OFF)
23
# setup mac ports path...
24
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /opt/local/lib)
25
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /opt/local/include)
27
set(LIBS ${LIBS} -Wl,-framework -Wl,Carbon)
31
message("-- Win32 build detected, setting default features")
32
set(USE_GCONF_BACKEND OFF)
33
set(USE_CAMERA_SUPPORT OFF)
36
# Check if this is source package build
37
if(NOT IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
44
if(NOT SOURCE_PACKAGE)
45
message("-- Determining version")
46
exec_program(git ${CMAKE_CURRENT_SOURCE_DIR} ARGS describe --tags HEAD | "sed 's,^release-,,;s,-,+,;s,-,~,;'" OUTPUT_VARIABLE PROJECT_VERSION)
47
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake.cmake" "${CMAKE_CURRENT_BINARY_DIR}/version.cmake" @ONLY)
48
else(NOT SOURCE_PACKAGE)
49
include(cmake/version.cmake)
53
# Initial cmake/debian/postinst and prerm script for debian package
55
make_directory(${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian)
59
# Avoid source tree pollution
61
If(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
62
message(FATAL_ERROR "In-source builds are not permitted. Make a separate folder for building:\nmkdir build; cd build; cmake ..\nBefore that, remove the files already created:\nrm -rf CMakeCache.txt CMakeFiles")
63
endif(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
64
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
66
# Add a sensible build type default and warning because empty means no optimization and no debug info.
67
if(NOT CMAKE_BUILD_TYPE)
68
message("WARNING: CMAKE_BUILD_TYPE is not defined!\n Defaulting to CMAKE_BUILD_TYPE=RelWithDebInfo. Use ccmake to set a proper value.")
69
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
70
endif(NOT CMAKE_BUILD_TYPE)
73
set(RELATIVE_PATH_FROM_BIN ${CMAKE_INSTALL_PREFIX} CACHE STRING "Relative path to library from binary")
75
set(RELATIVE_PATH_FROM_BIN ${CMAKE_INSTALL_PREFIX} CACHE STRING "Relative path to library from binary")
79
set(SHARE_INSTALL "." CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.")
82
set(SHARE_INSTALL "share/darktable" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.")
83
endif(NOT SHARE_INSTALL)
86
mark_as_advanced(SHARE_INSTALL)
89
set(LIB_INSTALL "." CACHE STRING "Library file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.")
92
set( LIB_INSTALL lib${LIB_SUFFIX} CACHE STRING "Library file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.")
93
endif(NOT LIB_INSTALL)
96
mark_as_advanced(LIB_INSTALL)
98
#need to put here do setting LOCALE_DIR variable
103
SET(LOCALE_DIR "bin/locale")
105
SET(LOCALE_DIR "share/locale")
107
SET(LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale")
109
endif(NOT LOCALE_DIR)
112
message(QUIET "Set LOCALE_DIR to path to get Gettext working")
116
message(STATUS "Found msgfmt to convert language file. Translation enabled")
119
message(STATUS "Cannot find msgfmt to convert language file. Translation won't be enabled")
121
endif(NOT LOCALE_DIR)
127
# if(NOT USE_SSE_FLAG)
128
# set(SSE_C_TESTS "sse4" "sse3" "sse2" "sse")
129
# message("-- Checking SSE instructions support by current CPU")
130
# foreach(sse_test ${SSE_C_TESTS})
133
# set(SSE_CHECK_COMMAND "FAILURE")
135
# set(SSE_CHECK_COMMAND sysctl -a | grep ${sse_test})
137
# set(SSE_CHECK_COMMAND grep ${sse_test} /proc/cpuinfo)
139
# execute_process(COMMAND ${SSE_CHECK_COMMAND} RESULT_VARIABLE ret_var OUTPUT_VARIABLE out_var)
141
# if(ret_var EQUAL 0) # grep returns 0 on success
142
# set(SSE_FOUND TRUE)
143
# message("-- ${sse_test} detected and working.")
144
# set(USE_SSE_SET ${sse_test})
145
# endif(ret_var EQUAL 0)
147
# endif(NOT SSE_FOUND)
148
# endforeach(sse_test)
149
# endif(NOT USE_SSE_FLAG)
153
# set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-m${USE_SSE_SET}")
156
# Path to install gconf schemas into.
157
if(NOT DT_GCONF_SCHEMA_DIR)
158
# a home install would use: "xml:readwrite:${HOME}/.gconf"
159
# default gconftool-2 path (gconftool-2 --get-default-source), mostly "xml:merged:/etc/gconf/gconf.xml.defaults"
160
execute_process (COMMAND gconftool-2 --get-default-source OUTPUT_VARIABLE DT_GCONF_SCHEMA_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
161
endif(NOT DT_GCONF_SCHEMA_DIR)
163
# setup some theme specific variables
165
set(THEME_DIRECTORY ${CMAKE_INSTALL_PREFIX}/share/icons/${THEME})
167
# lets continue into build directories
168
add_subdirectory(src)
169
add_subdirectory(data)
170
add_subdirectory(doc)
172
include(cmake/darktable-packaging.cmake)