6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
1 |
# Copyright (C) 2013 Christian Dywan <christian@twotoasts.de>
|
2 |
||
3 |
cmake_minimum_required(VERSION 2.6) |
|
4 |
cmake_policy(VERSION 2.6) |
|
5 |
project(midori C) |
|
6 |
add_definitions("-DPACKAGE_NAME=\"${CMAKE_PROJECT_NAME}\"") |
|
7 |
add_definitions("-DPACKAGE_BUGREPORT=\"https://bugs.launchpad.net/midori\"") |
|
6350.2.7
by Paweł Forysiuk
Parse version and define MIDORI_*_VERSION values for user agent |
8 |
|
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
9 |
set(VERSION 0.5.5) |
6350.2.2
by Christian Dywan
Add rules to build extensions with CMake |
10 |
add_definitions("-DMIDORI_VERSION_SUFFIX=\"${VERSION}\"") |
6350.2.7
by Paweł Forysiuk
Parse version and define MIDORI_*_VERSION values for user agent |
11 |
|
12 |
string(REPLACE "." ";" VERSION_LIST ${VERSION}) |
|
13 |
LIST(GET VERSION_LIST 0 MIDORI_MAJOR_VERSION) |
|
14 |
add_definitions("-DMIDORI_MAJOR_VERSION=${MIDORI_MAJOR_VERSION}") |
|
15 |
LIST(GET VERSION_LIST 1 MIDORI_MINOR_VERSION) |
|
16 |
add_definitions("-DMIDORI_MINOR_VERSION=${MIDORI_MINOR_VERSION}") |
|
17 |
LIST(GET VERSION_LIST 2 MIDORI_MICRO_VERSION) |
|
18 |
add_definitions("-DMIDORI_MICRO_VERSION=${MIDORI_MICRO_VERSION}") |
|
19 |
||
6371.3.1
by Christian Dywan
Add bzr revision number to version if available |
20 |
execute_process(COMMAND "bzr" "revno" |
21 |
OUTPUT_VARIABLE REVISION |
|
6371.3.2
by Christian Dywan
Silence errors due to getting the revision from bzr |
22 |
ERROR_QUIET
|
6371.3.1
by Christian Dywan
Add bzr revision number to version if available |
23 |
OUTPUT_STRIP_TRAILING_WHITESPACE) |
24 |
if (REVISION) |
|
25 |
set(VERSION "${VERSION}~r${REVISION}") |
|
26 |
endif () |
|
27 |
add_definitions("-DPACKAGE_VERSION=\"${VERSION}\"") |
|
28 |
||
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
29 |
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) |
30 |
# Disallow building during install to avoid permission problems
|
|
31 |
set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 1) |
|
32 |
||
33 |
include(GNUInstallDirs) |
|
34 |
set(DATADIR ${CMAKE_INSTALL_FULL_DATADIR}) |
|
35 |
add_definitions("-DMDATADIR=\"${DATADIR}\"") |
|
36 |
add_definitions("-DSYSCONFDIR=\"${CMAKE_INSTALL_FULL_SYSCONFDIR}\"") |
|
37 |
add_definitions("-DLIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\"") |
|
38 |
add_definitions("-DDOCDIR=\"${CMAKE_INSTALL_FULL_DOCDIR}\"") |
|
6390.1.3
by Christian Dywan
Add -wundef, HAVE_CONFIG_H and LOCALEDIR and fix ENABLE_NLS |
39 |
|
40 |
add_definitions("-DENABLE_NLS=1") |
|
41 |
add_definitions("-DLOCALEDIR=\"${CMAKE_INSTALL_LOCALEDIR}\"") |
|
42 |
||
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
43 |
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/config.h" "/* # generated file (stub) */") |
6390.1.3
by Christian Dywan
Add -wundef, HAVE_CONFIG_H and LOCALEDIR and fix ENABLE_NLS |
44 |
add_definitions("-DHAVE_CONFIG_H=1") |
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
45 |
|
6350.2.16
by Christian Dywan
Add library/ header checks for defining HAVE_ |
46 |
find_file (UNISTD unistd.h) |
47 |
if (UNISTD) |
|
48 |
add_definitions("-DHAVE_UNISTD_H") |
|
49 |
endif () |
|
6370.1.1
by Christian Dywan
Only look for signal.h when building for unix systems |
50 |
|
51 |
if (UNIX) |
|
52 |
find_file (SIGNAL signal.h) |
|
53 |
if (SIGNAL) |
|
54 |
add_definitions("-DHAVE_SIGNAL_H") |
|
55 |
endif () |
|
6350.2.16
by Christian Dywan
Add library/ header checks for defining HAVE_ |
56 |
endif () |
57 |
||
58 |
find_library (X11 X11) |
|
59 |
if (X11) |
|
60 |
# Pass /usr/X11R6/include for OpenBSD
|
|
61 |
find_file (SCRNSAVER X11/extensions/scrnsaver.h /usr/X11R6/include) |
|
62 |
find_library (XSS Xss /usr/lib/X11R6/lib) |
|
63 |
if (SCRNSAVER AND XSS) |
|
64 |
add_definitions("-DHAVE_X11_EXTENSIONS_SCRNSAVER_H") |
|
6376.2.1
by Christian Dywan
Add XSS to OPTS_LIBRARIES |
65 |
set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${XSS}") |
6350.2.16
by Christian Dywan
Add library/ header checks for defining HAVE_ |
66 |
endif () |
67 |
endif () |
|
68 |
||
69 |
if (WIN32) |
|
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
70 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_WIN32) |
6350.2.16
by Christian Dywan
Add library/ header checks for defining HAVE_ |
71 |
endif () |
72 |
||
73 |
string(FIND ${CMAKE_SYSTEM_NAME} "FreeBSD" FREEBSD) |
|
74 |
if (FREEBSD GREATER -1) |
|
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
75 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_FREEBSD) |
6350.2.16
by Christian Dywan
Add library/ header checks for defining HAVE_ |
76 |
endif () |
77 |
||
78 |
if (APPLE) |
|
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
79 |
add_definitions("-DHAVE_OSX=1") |
80 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_OSX) |
|
81 |
else () |
|
82 |
add_definitions("-DHAVE_OSX=0") |
|
6350.2.16
by Christian Dywan
Add library/ header checks for defining HAVE_ |
83 |
endif () |
84 |
||
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
85 |
find_package(PkgConfig) |
86 |
pkg_check_modules(DEPS REQUIRED |
|
87 |
libxml-2.0>=2.6
|
|
88 |
sqlite3>=3.6.19
|
|
89 |
gmodule-2.0
|
|
90 |
gio-2.0>=2.32.3
|
|
91 |
libsoup-gnome-2.4>=2.27.90
|
|
92 |
)
|
|
93 |
add_definitions("-DHAVE_LIBXML") |
|
94 |
add_definitions("-DGIO_VERSION=\"${DEPS_gio-2.0_VERSION}\"") |
|
95 |
add_definitions("-DLIBSOUP_VERSION=\"${DEPS_libsoup-gnome-2.4_VERSION}\"") |
|
6350.2.2
by Christian Dywan
Add rules to build extensions with CMake |
96 |
set(PKGS posix linux libxml-2.0 sqlite3 gmodule-2.0 gio-2.0 libsoup-2.4) |
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
97 |
if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.29.91") |
98 |
add_definitions("-DHAVE_LIBSOUP_2_29_91") |
|
99 |
endif () |
|
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
100 |
if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.34.0") |
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
101 |
add_definitions("-DHAVE_LIBSOUP_2_34_0") |
102 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_LIBSOUP_2_34_0) |
|
103 |
endif () |
|
104 |
if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.37.1") |
|
105 |
add_definitions("-DHAVE_LIBSOUP_2_37_1") |
|
106 |
endif () |
|
107 |
if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.40.0") |
|
108 |
add_definitions("-DHAVE_LIBSOUP_2_40_0") |
|
6399.1.1
by Christian Dywan
Add Midori.URI.get_base_domain and use it in NoJS |
109 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_LIBSOUP_2_40_0) |
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
110 |
endif () |
6350.2.11
by Christian Dywan
Add USE_GRANITE to enable/ disable Granite |
111 |
|
6376.2.2
by Christian Dywan
Require libnotify except on Win32 (as Waf did) |
112 |
if (WIN32) |
113 |
add_definitions("-DLIBNOTIFY_VERSION=\"No\"") |
|
114 |
else () |
|
115 |
pkg_check_modules(NOTIFY REQUIRED libnotify) |
|
116 |
add_definitions("-DLIBNOTIFY_VERSION=\"${NOTIFY_VERSION}\"") |
|
6376.2.3
by Christian Dywan
Define HAVE_LIBNOTIFY if we have libnotify |
117 |
add_definitions("-DHAVE_LIBNOTIFY") |
6376.2.2
by Christian Dywan
Require libnotify except on Win32 (as Waf did) |
118 |
set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${NOTIFY_INCLUDE_DIRS}") |
119 |
set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${NOTIFY_LIBRARIES}") |
|
120 |
set(PKGS ${PKGS} libnotify) |
|
121 |
endif () |
|
6350.2.10
by Paweł Forysiuk
Add USE_ZEITGEIST to enable/ disable Zeitgeist |
122 |
|
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
123 |
option(USE_GTK3 "Use GTK+3" OFF) |
6350.2.5
by Christian Dywan
Add build flags for GTK+2 and WebKit2 to CMake |
124 |
option(HALF_BRO_INCOM_WEBKIT2 "Serve as a guniea pig" OFF) |
6350.2.10
by Paweł Forysiuk
Add USE_ZEITGEIST to enable/ disable Zeitgeist |
125 |
option(USE_ZEITGEIST "Zeitgeist history integration" ON) |
6350.2.11
by Christian Dywan
Add USE_GRANITE to enable/ disable Granite |
126 |
option(USE_GRANITE "Fancy notebook and pop-overs" OFF) |
127 |
||
128 |
if (USE_GRANITE) |
|
129 |
if (NOT USE_GTK3 AND NOT HALF_BRO_INCOM_WEBKIT2) |
|
130 |
set(USE_GTK3 ON) |
|
131 |
endif () |
|
132 |
||
133 |
pkg_check_modules(GRANITE granite>=0.2) |
|
134 |
set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${GRANITE_INCLUDE_DIRS}") |
|
135 |
set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${GRANITE_LIBRARIES}") |
|
136 |
add_definitions("-DHAVE_GRANITE") |
|
137 |
add_definitions("-DGRANITE_VERSION=\"${GRANITE_VERSION}\"") |
|
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
138 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_GRANITE) |
6350.2.11
by Christian Dywan
Add USE_GRANITE to enable/ disable Granite |
139 |
set(PKGS ${PKGS} granite) |
140 |
else () |
|
141 |
add_definitions("-DGRANITE_VERSION=\"No\"") |
|
142 |
endif() |
|
6350.2.10
by Paweł Forysiuk
Add USE_ZEITGEIST to enable/ disable Zeitgeist |
143 |
|
144 |
if (USE_ZEITGEIST) |
|
145 |
pkg_check_modules(ZEITGEIST zeitgeist-1.0>=0.3.14) |
|
146 |
set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${ZEITGEIST_INCLUDE_DIRS}") |
|
147 |
set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${ZEITGEIST_LIBRARIES}") |
|
148 |
add_definitions("-DHAVE_ZEITGEIST") |
|
149 |
set(PKGS ${PKGS} zeitgeist-1.0) |
|
150 |
endif() |
|
151 |
||
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
152 |
if (USE_GTK3 OR HALF_BRO_INCOM_WEBKIT2) |
153 |
pkg_check_modules(GCR gcr-3>=2.32) |
|
154 |
if (GCR_VERSION) |
|
155 |
set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${GCR_INCLUDE_DIRS}") |
|
156 |
set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${GCR_LIBRARIES}") |
|
157 |
add_definitions("-DGCR_VERSION=\"${GCR_VERSION}\"") |
|
158 |
add_definitions("-DHAVE_GCR") |
|
159 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_GCR) |
|
160 |
else () |
|
6390.1.4
by Christian Dywan
Fix missing closing quote in GCR_VERSION |
161 |
add_definitions("-DGCR_VERSION=\"No\"") |
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
162 |
endif () |
163 |
else () |
|
164 |
add_definitions("-DGCR_VERSION=\"No\"") |
|
165 |
endif () |
|
166 |
||
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
167 |
if (USE_GTK3) |
168 |
pkg_check_modules(DEPS_GTK REQUIRED |
|
169 |
gtk+-3.0>=3.0.0
|
|
170 |
webkitgtk-3.0>=1.8.3
|
|
171 |
javascriptcoregtk-3.0
|
|
172 |
)
|
|
173 |
add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"") |
|
174 |
add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkitgtk-3.0_VERSION}\"") |
|
175 |
set(PKGS ${PKGS} gtk+-3.0) |
|
6350.2.5
by Christian Dywan
Add build flags for GTK+2 and WebKit2 to CMake |
176 |
set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkitgtk-3.0.vapi") |
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
177 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_GTK3) |
6350.2.5
by Christian Dywan
Add build flags for GTK+2 and WebKit2 to CMake |
178 |
elseif (HALF_BRO_INCOM_WEBKIT2) |
179 |
# Note: WebKitGTK+ 2.0.0 matches 1.11.91; 1.11.92 > 2.0.0
|
|
180 |
pkg_check_modules(DEPS_GTK REQUIRED |
|
181 |
gtk+-3.0>=3.0.0
|
|
182 |
webkit2gtk-3.0>=1.11.91
|
|
183 |
javascriptcoregtk-3.0
|
|
184 |
)
|
|
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
185 |
add_definitions("-DHAVE_WEBKIT2") |
6350.2.5
by Christian Dywan
Add build flags for GTK+2 and WebKit2 to CMake |
186 |
add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"") |
187 |
add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkit2gtk-3.0_VERSION}\"") |
|
188 |
set(PKGS ${PKGS} gtk+-3.0) |
|
189 |
set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkit2gtk-3.0.vapi") |
|
6390.1.2
by Christian Dywan
Add HAVE_GCR, HAVR_GRANITE, HAVE_LIBSOUP_xyz, HAVE_OSX |
190 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_GTK3) |
191 |
set(VALAFLAGS ${VALAFLAGS} -D HAVE_WEBKIT2) |
|
6350.2.5
by Christian Dywan
Add build flags for GTK+2 and WebKit2 to CMake |
192 |
else () |
193 |
pkg_check_modules(DEPS_GTK REQUIRED |
|
194 |
gtk+-2.0>=2.24.0
|
|
195 |
webkit-1.0>=1.8.3
|
|
196 |
javascriptcoregtk-1.0
|
|
197 |
)
|
|
198 |
add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-2.0_VERSION}\"") |
|
199 |
add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkit-1.0_VERSION}\"") |
|
200 |
set(PKGS ${PKGS} gtk+-2.0) |
|
201 |
set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkitgtk-3.0.vapi") |
|
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
202 |
endif () |
203 |
||
204 |
find_package(Vala REQUIRED) |
|
205 |
vala_require("0.16.0") |
|
6350.2.2
by Christian Dywan
Add rules to build extensions with CMake |
206 |
set(VALAFLAGS ${VALAFLAGS} |
207 |
--enable-deprecated
|
|
208 |
--debug
|
|
209 |
)
|
|
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
210 |
|
6350.2.9
by Christian Dywan
Tweak GETTEXT_PACKAGE line to benefit from Debian scripts |
211 |
# dh_translations detects this if there's no variable used
|
212 |
set (GETTEXT_PACKAGE "midori") |
|
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
213 |
add_definitions("-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\"") |
214 |
||
6390.1.3
by Christian Dywan
Add -wundef, HAVE_CONFIG_H and LOCALEDIR and fix ENABLE_NLS |
215 |
set(CFLAGS "-Wall -Wundef -Wno-deprecated-declarations -g") |
6390.1.1
by Christian Dywan
Separate CFLAGS for C from CFLAGS for Vala |
216 |
set(VALA_CFLAGS "-w -g") |
6350.2.2
by Christian Dywan
Add rules to build extensions with CMake |
217 |
set(LIBMIDORI "${CMAKE_PROJECT_NAME}-core") |
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
218 |
|
6370.1.2
by Christian Dywan
Add custom "uninstall" target removing all installed files |
219 |
# CMake provides no uninstall target by design
|
220 |
add_custom_target (uninstall |
|
221 |
COMMAND "xargs" "rm" "-v" "<" "install_manifest.txt") |
|
222 |
||
6376.3.2
by Christian Dywan
Install top-level text files to doc dir |
223 |
install(FILES AUTHORS COPYING ChangeLog EXPAT README DESTINATION ${CMAKE_INSTALL_DOCDIR}) |
224 |
||
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
225 |
add_subdirectory (midori) |
226 |
add_subdirectory (po) |
|
6350.2.4
by Christian Dywan
Add rules to install icons with CMake |
227 |
add_subdirectory (icons) |
6350.2.1
by Christian Dywan
Initial minimal CMake build setup |
228 |
add_subdirectory (data) |
6350.2.3
by Christian Dywan
Add rules to run tests with CMake |
229 |
enable_testing() |
230 |
add_subdirectory (tests) |
|
6350.2.2
by Christian Dywan
Add rules to build extensions with CMake |
231 |
add_subdirectory (extensions) |