s243a

CMakeLists.txt

Dec 7th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 10.46 KB | None | 0 0
  1. # Copyright (C) 2013 Christian Dywan <[email protected]>
  2.  
  3. cmake_minimum_required(VERSION 2.6)
  4. cmake_policy(VERSION 2.6)
  5. # Work-around a bug in the included FindGettext fixed with 2.8.8
  6. # See http://www.cmake.org/pipermail/cmake-commits/2012-February/012117.html
  7. if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_LESS "2.8.8")
  8.     cmake_policy(SET CMP0002 OLD)
  9. endif ()
  10. project(midori C)
  11. add_definitions("-DPACKAGE_NAME=\"${CMAKE_PROJECT_NAME}\"")
  12. add_definitions("-DPACKAGE_BUGREPORT=\"https://bugs.launchpad.net/midori\"")
  13.  
  14. set(VERSION 0.5.11)
  15. add_definitions("-DMIDORI_VERSION_SUFFIX=\"${VERSION}\"")
  16.  
  17. string(REPLACE "." ";" VERSION_LIST ${VERSION})
  18. LIST(GET VERSION_LIST 0 MIDORI_MAJOR_VERSION)
  19. add_definitions("-DMIDORI_MAJOR_VERSION=${MIDORI_MAJOR_VERSION}")
  20. LIST(GET VERSION_LIST 1 MIDORI_MINOR_VERSION)
  21. add_definitions("-DMIDORI_MINOR_VERSION=${MIDORI_MINOR_VERSION}")
  22. LIST(GET VERSION_LIST 2 MIDORI_MICRO_VERSION)
  23. add_definitions("-DMIDORI_MICRO_VERSION=${MIDORI_MICRO_VERSION}")
  24.  
  25. execute_process(COMMAND "bzr" "revno"
  26.                 OUTPUT_VARIABLE REVISION
  27.                 ERROR_QUIET
  28.                 OUTPUT_STRIP_TRAILING_WHITESPACE)
  29. if (REVISION)
  30.     set(VERSION "${VERSION}~r${REVISION}")
  31.     # All warnings are errors in development builds
  32.     set(VALAFLAGS ${VALAFLAGS} --fatal-warnings)
  33.     set(CFLAGS "${CFLAGS}")
  34. endif ()
  35. add_definitions("-DPACKAGE_VERSION=\"${VERSION}\"")
  36.  
  37. list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
  38. # Disallow building during install to avoid permission problems
  39. set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 1)
  40.  
  41. find_package(Vala REQUIRED)
  42. vala_require("0.16.0")
  43. set(VALAFLAGS ${VALAFLAGS}
  44.     --enable-deprecated
  45.     --debug
  46.     )
  47.  
  48. include(GNUInstallDirs)
  49. set(DATADIR ${CMAKE_INSTALL_FULL_DATADIR})
  50. add_definitions("-DMDATADIR=\"${DATADIR}\"")
  51. add_definitions("-DSYSCONFDIR=\"${CMAKE_INSTALL_FULL_SYSCONFDIR}\"")
  52. add_definitions("-DLIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\"")
  53. add_definitions("-DDOCDIR=\"${CMAKE_INSTALL_FULL_DOCDIR}\"")
  54.  
  55. add_definitions("-DENABLE_NLS=1")
  56. add_definitions("-DLOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\"")
  57.  
  58. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/config.h" "/* # generated file (stub) */")
  59. add_definitions("-DHAVE_CONFIG_H=1")
  60.  
  61. find_file (UNISTD unistd.h)
  62. if (UNISTD)
  63.     add_definitions("-DHAVE_UNISTD_H")
  64. endif ()
  65.  
  66. if (UNIX)
  67.     find_file (SIGNAL signal.h)
  68.     if (SIGNAL)
  69.         add_definitions("-DHAVE_SIGNAL_H")
  70.     endif ()
  71.  
  72.     find_file (EXEC_INFO execinfo.h)
  73.     if (EXEC_INFO)
  74.         set(VALAFLAGS ${VALAFLAGS} -D HAVE_EXECINFO_H)
  75.     endif ()
  76. endif ()
  77.  
  78. find_library (X11 X11)
  79. if (X11)
  80.     # Pass /usr/X11R6/include for OpenBSD
  81.     find_file (SCRNSAVER X11/extensions/scrnsaver.h /usr/X11R6/include)
  82.     find_library (XSS Xss /usr/lib/X11R6/lib)
  83.     if (SCRNSAVER AND XSS)
  84.         add_definitions("-DHAVE_X11_EXTENSIONS_SCRNSAVER_H")
  85.         set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${XSS};${X11}")
  86.     endif ()
  87. endif ()
  88.  
  89. if (WIN32)
  90.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_WIN32)
  91. endif ()
  92.  
  93. if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
  94.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_FREEBSD)
  95. endif ()
  96.  
  97. if (${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
  98.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_DRAGONFLY)
  99.     set(DFLY 1)
  100. endif ()
  101.  
  102. if (APPLE)
  103.     add_definitions("-DHAVE_OSX=1")
  104.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_OSX)
  105. else ()
  106.     add_definitions("-DHAVE_OSX=0")
  107. endif ()
  108.  
  109. find_package(PkgConfig)
  110. pkg_check_modules(DEPS REQUIRED
  111.                   libxml-2.0>=2.6
  112.                   sqlite3>=3.6.19
  113.                   gmodule-2.0
  114.                   gio-2.0>=2.32.3
  115.                   libsoup-gnome-2.4>=2.37.1
  116.                   )
  117. add_definitions("-DHAVE_LIBXML")
  118. add_definitions("-DGIO_VERSION=\"${DEPS_gio-2.0_VERSION}\"")
  119. add_definitions("-DLIBSOUP_VERSION=\"${DEPS_libsoup-gnome-2.4_VERSION}\"")
  120. set(PKGS posix linux libxml-2.0 sqlite3 gmodule-2.0 gio-2.0 libsoup-2.4)
  121. if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.40.0")
  122.     # valac 0.16 didn't have the bindings yet
  123.     # For consistency we need to ensure C code makes the same assumptions
  124.     if (${VALA_VERSION} VERSION_GREATER "0.17.0")
  125.         add_definitions("-DHAVE_LIBSOUP_2_40_0")
  126.         set(VALAFLAGS ${VALAFLAGS} -D HAVE_LIBSOUP_2_40_0)
  127.     endif ()
  128. endif ()
  129. if (${DEPS_libsoup-gnome-2.4_VERSION} VERSION_GREATER "2.48.0")
  130.     add_definitions("-DHAVE_LIBSOUP_2_48_0")
  131.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_LIBSOUP_2_48_0)
  132. endif ()
  133.  
  134. if (${DEPS_gio-2.0_VERSION} VERSION_GREATER "2.40.0" OR WIN32)
  135.     add_definitions("-DLIBNOTIFY_VERSION=\"No\"")
  136. else ()
  137.     pkg_check_modules(NOTIFY REQUIRED libnotify)
  138.     add_definitions("-DLIBNOTIFY_VERSION=\"${NOTIFY_VERSION}\"")
  139.     add_definitions("-DHAVE_LIBNOTIFY")
  140.     set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${NOTIFY_INCLUDE_DIRS}")
  141.     set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${NOTIFY_LIBRARIES}")
  142.     set(PKGS ${PKGS} libnotify)
  143. endif ()
  144.  
  145. option(USE_GTK3 "Use GTK+3" OFF)
  146. option(HALF_BRO_INCOM_WEBKIT2 "Serve as a guniea pig" OFF)
  147. option(USE_ZEITGEIST "Zeitgeist history integration" ON)
  148. option(USE_GRANITE "Fancy notebook and pop-overs" OFF)
  149. option(USE_APIDOCS "API documentation" OFF)
  150. option(USE_GIR "Generate GObject Introspection bindings" OFF)
  151. option(EXTRA_WARNINGS "Additional compiler warnings" OFF)
  152.  
  153. # GTK+3 is implied here, whether set or not
  154. if (USE_GRANITE OR HALF_BRO_INCOM_WEBKIT2)
  155.     set(USE_GTK3 ON)
  156. endif ()
  157.  
  158. if (USE_GRANITE)
  159.     pkg_check_modules(GRANITE granite>=0.2)
  160.     set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${GRANITE_INCLUDE_DIRS}")
  161.     set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${GRANITE_LIBRARIES}")
  162.     add_definitions("-DHAVE_GRANITE")
  163.     add_definitions("-DGRANITE_VERSION=\"${GRANITE_VERSION}\"")
  164.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_GRANITE)
  165.     set(PKGS ${PKGS} granite)
  166. else ()
  167.     add_definitions("-DGRANITE_VERSION=\"No\"")
  168. endif()
  169.  
  170. if (USE_ZEITGEIST)
  171.     pkg_check_modules(ZEITGEIST zeitgeist-2.0>=0.3.14)
  172.     set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${ZEITGEIST_INCLUDE_DIRS}")
  173.     set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${ZEITGEIST_LIBRARIES}")
  174.     add_definitions("-DHAVE_ZEITGEIST")
  175.     set(PKGS ${PKGS} zeitgeist-2.0)
  176. endif()
  177.  
  178. if (WIN32)
  179.     add_definitions("-DGCR_VERSION=\"No\"")
  180. else ()
  181.     if (USE_GTK3)
  182.         pkg_check_modules(GCR REQUIRED gcr-3>=2.32)
  183.     else ()
  184.         pkg_check_modules(GCR REQUIRED gcr-base-3>=2.32)
  185.     endif ()
  186.     add_definitions("-DGCR_VERSION=\"${GCR_VERSION}\"")
  187.     add_definitions("-DHAVE_GCR")
  188.     set(OPTS_INCLUDE_DIRS ${OPTS_INCLUDE_DIRS} ${GCR_INCLUDE_DIRS})
  189.     set(OPTS_LIBRARIES ${OPTS_LIBRARIES} ${GCR_LIBRARIES})
  190. endif ()
  191.  
  192. if (HALF_BRO_INCOM_WEBKIT2)
  193.     pkg_check_modules(DEPS_GTK REQUIRED
  194.                       gtk+-3.0>=3.10.0
  195.                       webkit2gtk-4.0>=2.3.91
  196.                       )
  197.     add_definitions("-DHAVE_WEBKIT2")
  198.     add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"")
  199.     add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkit2gtk-4.0_VERSION}\"")
  200.     set(PKGS ${PKGS} gtk+-3.0)
  201.     # set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkit2gtk-web-extension-4.0.vapi")
  202.     set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkit2gtk-4.0.vapi")
  203.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_GTK3)
  204.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_WEBKIT2)
  205.         set(VALAFLAGS ${VALAFLAGS} -D HAVE_WEBKIT2_3_91)
  206. elseif (USE_GTK3)
  207.     pkg_check_modules(DEPS_GTK REQUIRED
  208.                       gtk+-3.0>=3.10.0
  209.                       webkitgtk-3.0>=1.8.1
  210.                       javascriptcoregtk-3.0
  211.                       )
  212.     add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"")
  213.     add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkitgtk-3.0_VERSION}\"")
  214.     set(PKGS ${PKGS} gtk+-3.0)
  215.     set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkitgtk-3.0.vapi")
  216.     set(VALAFLAGS ${VALAFLAGS} -D HAVE_GTK3)
  217. else ()
  218.     pkg_check_modules(DEPS_GTK REQUIRED
  219.                       gtk+-2.0>=2.24.0
  220.                       webkit-1.0>=1.8.1
  221.                       javascriptcoregtk-1.0
  222.                       )
  223.     add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-2.0_VERSION}\"")
  224.     add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkit-1.0_VERSION}\"")
  225.     set(PKGS ${PKGS} gtk+-2.0)
  226.     set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/midori/webkitgtk-3.0.vapi")
  227. endif ()
  228. set(EXTRA_VAPIS ${EXTRA_VAPIS} "${CMAKE_SOURCE_DIR}/katze/katze.vapi")
  229.  
  230. # dh_translations detects this if there's no variable used
  231. set (GETTEXT_PACKAGE "midori")
  232. add_definitions("-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\"")
  233.  
  234. set(CFLAGS "${CFLAGS} -Wall -Wundef -Wno-deprecated-declarations -g")
  235.  
  236. if (EXTRA_WARNINGS)
  237.     LIST(APPEND EXTRA_CFLAGS_LIST
  238.         -Wextra
  239.         -Wno-unused-parameter
  240.         -Wno-missing-field-initializers
  241.         -Wno-comment
  242.         -Waggregate-return
  243.         -Wredundant-decls
  244.         -Wshadow -Wpointer-arith -Wcast-align
  245.         -Winline -Wformat-security -fno-common
  246.         -Winit-self -Wundef
  247.         -Wnested-externs
  248.     )
  249.     string(REPLACE ";" " " EXTRA_CFLAGS "${EXTRA_CFLAGS_LIST}")
  250.     set(CFLAGS "${CFLAGS} ${EXTRA_CFLAGS}")
  251. else ()
  252.     if (REVISION)
  253.         set(CFLAGS "${CFLAGS} -Werror")
  254.     endif()
  255. endif ()
  256.  
  257. # Explicitly add -fPIC for older toolchains
  258. set(VALA_CFLAGS "-g -fPIC")
  259.  
  260. # With compiler versions that can, enable exactly the non-spurious warnings
  261. # in Vala-generated C, otherwise disable warnings
  262. if ((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "5.0.0")
  263.     OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "3.0.0"))
  264.     set(VALA_CFLAGS "${VALA_CFLAGS} -Werror=implicit-function-declaration")
  265.     set(VALA_CFLAGS "${VALA_CFLAGS} -Wno-incompatible-pointer-types")
  266.     set(VALA_CFLAGS "${VALA_CFLAGS} -Wno-discarded-qualifiers")
  267.     set(VALA_CFLAGS "${VALA_CFLAGS} -Wno-deprecated-declarations")
  268. else ()
  269.     set(VALA_CFLAGS "${VALA_CFLAGS} -w")
  270. endif ()
  271.  
  272. set(LIBMIDORI "${CMAKE_PROJECT_NAME}-core")
  273.  
  274. # CMake provides no uninstall target by design
  275. add_custom_target (uninstall
  276.     COMMAND "xargs" "rm" "-v" "<" "install_manifest.txt")
  277.  
  278. install(FILES AUTHORS COPYING ChangeLog EXPAT README DESTINATION ${CMAKE_INSTALL_DOCDIR})
  279.  
  280. add_subdirectory (midori)
  281. add_subdirectory (extensions)
  282. enable_testing()
  283. add_subdirectory (tests)
  284. add_subdirectory (po)
  285. add_subdirectory (icons)
  286. add_subdirectory (data)
  287. add_subdirectory (config)
  288.  
  289. if (USE_APIDOCS)
  290.     add_subdirectory (docs/api)
  291. endif ()
  292. if (USE_GIR)
  293.     add_subdirectory (gir)
  294. endif ()
Advertisement
Add Comment
Please, Sign In to add comment