Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Copyright (C) 2013 Christian Dywan <[email protected]>
- cmake_minimum_required(VERSION 2.6)
- cmake_policy(VERSION 2.6)
- # Work-around a bug in the included FindGettext fixed with 2.8.8
- # See http://www.cmake.org/pipermail/cmake-commits/2012-February/012117.html
- if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_LESS "2.8.8")
- cmake_policy(SET CMP0002 OLD)
- endif ()
- project(midori C)
- add_definitions("-DPACKAGE_NAME=\"${CMAKE_PROJECT_NAME}\"")
- add_definitions("-DPACKAGE_BUGREPORT=\"https://bugs.launchpad.net/midori\"")
- set(VERSION 0.5.11)
- add_definitions("-DMIDORI_VERSION_SUFFIX=\"${VERSION}\"")
- string(REPLACE "." ";" VERSION_LIST ${VERSION})
- LIST(GET VERSION_LIST 0 MIDORI_MAJOR_VERSION)
- add_definitions("-DMIDORI_MAJOR_VERSION=${MIDORI_MAJOR_VERSION}")
- LIST(GET VERSION_LIST 1 MIDORI_MINOR_VERSION)
- add_definitions("-DMIDORI_MINOR_VERSION=${MIDORI_MINOR_VERSION}")
- LIST(GET VERSION_LIST 2 MIDORI_MICRO_VERSION)
- add_definitions("-DMIDORI_MICRO_VERSION=${MIDORI_MICRO_VERSION}")
- execute_process(COMMAND "bzr" "revno"
- OUTPUT_VARIABLE REVISION
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (REVISION)
- set(VERSION "${VERSION}~r${REVISION}")
- # All warnings are errors in development builds
- set(VALAFLAGS ${VALAFLAGS} --fatal-warnings)
- set(CFLAGS "${CFLAGS}")
- endif ()
- add_definitions("-DPACKAGE_VERSION=\"${VERSION}\"")
- list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
- # Disallow building during install to avoid permission problems
- set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 1)
- find_package(Vala REQUIRED)
- vala_require("0.16.0")
- set(VALAFLAGS ${VALAFLAGS}
- --enable-deprecated
- --debug
- )
- include(GNUInstallDirs)
- set(DATADIR ${CMAKE_INSTALL_FULL_DATADIR})
- add_definitions("-DMDATADIR=\"${DATADIR}\"")
- add_definitions("-DSYSCONFDIR=\"${CMAKE_INSTALL_FULL_SYSCONFDIR}\"")
- add_definitions("-DLIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\"")
- add_definitions("-DDOCDIR=\"${CMAKE_INSTALL_FULL_DOCDIR}\"")
- add_definitions("-DENABLE_NLS=1")
- add_definitions("-DLOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\"")
- file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/config.h" "/* # generated file (stub) */")
- add_definitions("-DHAVE_CONFIG_H=1")
- find_file (UNISTD unistd.h)
- if (UNISTD)
- add_definitions("-DHAVE_UNISTD_H")
- endif ()
- if (UNIX)
- find_file (SIGNAL signal.h)
- if (SIGNAL)
- add_definitions("-DHAVE_SIGNAL_H")
- endif ()
- find_file (EXEC_INFO execinfo.h)
- if (EXEC_INFO)
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_EXECINFO_H)
- endif ()
- endif ()
- find_library (X11 X11)
- if (X11)
- # Pass /usr/X11R6/include for OpenBSD
- find_file (SCRNSAVER X11/extensions/scrnsaver.h /usr/X11R6/include)
- find_library (XSS Xss /usr/lib/X11R6/lib)
- if (SCRNSAVER AND XSS)
- add_definitions("-DHAVE_X11_EXTENSIONS_SCRNSAVER_H")
- set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${XSS};${X11}")
- endif ()
- endif ()
- if (WIN32)
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_WIN32)
- endif ()
- if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_FREEBSD)
- endif ()
- if (${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_DRAGONFLY)
- set(DFLY 1)
- endif ()
- if (APPLE)
- add_definitions("-DHAVE_OSX=1")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_OSX)
- else ()
- add_definitions("-DHAVE_OSX=0")
- endif ()
- find_package(PkgConfig)
- pkg_check_modules(DEPS REQUIRED
- libxml-2.0>=2.6
- sqlite3>=3.6.19
- gmodule-2.0
- gio-2.0>=2.32.3
- libsoup-gnome-2.4>=2.37.1
- )
- add_definitions("-DHAVE_LIBXML")
- add_definitions("-DGIO_VERSION=\"${DEPS_gio-2.0_VERSION}\"")
- add_definitions("-DLIBSOUP_VERSION=\"${DEPS_libsoup-gnome-2.4_VERSION}\"")
- set(PKGS posix linux libxml-2.0 sqlite3 gmodule-2.0 gio-2.0 libsoup-2.4)
- if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.40.0")
- # valac 0.16 didn't have the bindings yet
- # For consistency we need to ensure C code makes the same assumptions
- if (${VALA_VERSION} VERSION_GREATER "0.17.0")
- add_definitions("-DHAVE_LIBSOUP_2_40_0")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_LIBSOUP_2_40_0)
- endif ()
- endif ()
- if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.48.0")
- add_definitions("-DHAVE_LIBSOUP_2_48_0")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_LIBSOUP_2_48_0)
- endif ()
- if (${DEPS_gio-2.0_VERSION} VERSION_GREATER "2.40.0" OR WIN32)
- add_definitions("-DLIBNOTIFY_VERSION=\"No\"")
- else ()
- pkg_check_modules(NOTIFY REQUIRED libnotify)
- add_definitions("-DLIBNOTIFY_VERSION=\"${NOTIFY_VERSION}\"")
- add_definitions("-DHAVE_LIBNOTIFY")
- set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${NOTIFY_INCLUDE_DIRS}")
- set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${NOTIFY_LIBRARIES}")
- set(PKGS ${PKGS} libnotify)
- endif ()
- option(USE_GTK3 "Use GTK+3" OFF)
- option(HALF_BRO_INCOM_WEBKIT2 "Serve as a guniea pig" OFF)
- option(USE_ZEITGEIST "Zeitgeist history integration" ON)
- option(USE_GRANITE "Fancy notebook and pop-overs" OFF)
- option(USE_APIDOCS "API documentation" OFF)
- option(USE_GIR "Generate GObject Introspection bindings" OFF)
- option(EXTRA_WARNINGS "Additional compiler warnings" OFF)
- # GTK+3 is implied here, whether set or not
- if (USE_GRANITE OR HALF_BRO_INCOM_WEBKIT2)
- set(USE_GTK3 ON)
- endif ()
- if (USE_GRANITE)
- pkg_check_modules(GRANITE granite>=0.2)
- set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${GRANITE_INCLUDE_DIRS}")
- set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${GRANITE_LIBRARIES}")
- add_definitions("-DHAVE_GRANITE")
- add_definitions("-DGRANITE_VERSION=\"${GRANITE_VERSION}\"")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_GRANITE)
- set(PKGS ${PKGS} granite)
- else ()
- add_definitions("-DGRANITE_VERSION=\"No\"")
- endif()
- if (USE_ZEITGEIST)
- pkg_check_modules(ZEITGEIST zeitgeist-2.0>=0.3.14)
- set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${ZEITGEIST_INCLUDE_DIRS}")
- set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${ZEITGEIST_LIBRARIES}")
- add_definitions("-DHAVE_ZEITGEIST")
- set(PKGS ${PKGS} zeitgeist-2.0)
- endif()
- if (WIN32)
- add_definitions("-DGCR_VERSION=\"No\"")
- else ()
- if (USE_GTK3)
- pkg_check_modules(GCR REQUIRED gcr-3>=2.32)
- else ()
- pkg_check_modules(GCR REQUIRED gcr-base-3>=2.32)
- endif ()
- add_definitions("-DGCR_VERSION=\"${GCR_VERSION}\"")
- add_definitions("-DHAVE_GCR")
- set(OPTS_INCLUDE_DIRS ${OPTS_INCLUDE_DIRS} ${GCR_INCLUDE_DIRS})
- set(OPTS_LIBRARIES ${OPTS_LIBRARIES} ${GCR_LIBRARIES})
- endif ()
- if (HALF_BRO_INCOM_WEBKIT2)
- pkg_check_modules(DEPS_GTK REQUIRED
- gtk+-3.0>=3.10.0
- webkit2gtk-4.0>=2.3.91
- )
- add_definitions("-DHAVE_WEBKIT2")
- add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"")
- add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkit2gtk-4.0_VERSION}\"")
- set(PKGS ${PKGS} gtk+-3.0)
- # set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkit2gtk-web-extension-4.0.vapi")
- set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkit2gtk-4.0.vapi")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_GTK3)
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_WEBKIT2)
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_WEBKIT2_3_91)
- elseif (USE_GTK3)
- pkg_check_modules(DEPS_GTK REQUIRED
- gtk+-3.0>=3.10.0
- webkitgtk-3.0>=1.8.1
- javascriptcoregtk-3.0
- )
- add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"")
- add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkitgtk-3.0_VERSION}\"")
- set(PKGS ${PKGS} gtk+-3.0)
- set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkitgtk-3.0.vapi")
- set(VALAFLAGS ${VALAFLAGS} -D HAVE_GTK3)
- else ()
- pkg_check_modules(DEPS_GTK REQUIRED
- gtk+-2.0>=2.24.0
- webkit-1.0>=1.8.1
- javascriptcoregtk-1.0
- )
- add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-2.0_VERSION}\"")
- add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkit-1.0_VERSION}\"")
- set(PKGS ${PKGS} gtk+-2.0)
- set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkitgtk-3.0.vapi")
- endif ()
- set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/katze/katze.vapi")
- # dh_translations detects this if there's no variable used
- set (GETTEXT_PACKAGE "midori")
- add_definitions("-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\"")
- set(CFLAGS "${CFLAGS} -Wall -Wundef -Wno-deprecated-declarations -g")
- if (EXTRA_WARNINGS)
- LIST(APPEND EXTRA_CFLAGS_LIST
- -Wextra
- -Wno-unused-parameter
- -Wno-missing-field-initializers
- -Wno-comment
- -Waggregate-return
- -Wredundant-decls
- -Wshadow -Wpointer-arith -Wcast-align
- -Winline -Wformat-security -fno-common
- -Winit-self -Wundef
- -Wnested-externs
- )
- string(REPLACE ";" " " EXTRA_CFLAGS "${EXTRA_CFLAGS_LIST}")
- set(CFLAGS "${CFLAGS} ${EXTRA_CFLAGS}")
- else ()
- if (REVISION)
- set(CFLAGS "${CFLAGS} -Werror")
- endif()
- endif ()
- # Explicitly add -fPIC for older toolchains
- set(VALA_CFLAGS "-g -fPIC")
- # With compiler versions that can, enable exactly the non-spurious warnings
- # in Vala-generated C, otherwise disable warnings
- if ((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "5.0.0")
- OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "3.0.0"))
- set(VALA_CFLAGS "${VALA_CFLAGS} -Werror=implicit-function-declaration")
- set(VALA_CFLAGS "${VALA_CFLAGS} -Wno-incompatible-pointer-types")
- set(VALA_CFLAGS "${VALA_CFLAGS} -Wno-discarded-qualifiers")
- set(VALA_CFLAGS "${VALA_CFLAGS} -Wno-deprecated-declarations")
- else ()
- set(VALA_CFLAGS "${VALA_CFLAGS} -w")
- endif ()
- set(LIBMIDORI "${CMAKE_PROJECT_NAME}-core")
- # CMake provides no uninstall target by design
- add_custom_target (uninstall
- COMMAND "xargs" "rm" "-v" "<" "install_manifest.txt")
- install(FILES AUTHORS COPYING ChangeLog EXPAT README DESTINATION ${CMAKE_INSTALL_DOCDIR})
- add_subdirectory (midori)
- add_subdirectory (extensions)
- enable_testing()
- add_subdirectory (tests)
- add_subdirectory (po)
- add_subdirectory (icons)
- add_subdirectory (data)
- add_subdirectory (config)
- if (USE_APIDOCS)
- add_subdirectory (docs/api)
- endif ()
- if (USE_GIR)
- add_subdirectory (gir)
- endif ()
Advertisement
Add Comment
Please, Sign In to add comment