~midori/midori/trunk

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)