178N/Acmake_minimum_required(VERSION 2.8.0)
178N/Amessage("------------------------------")
178N/Amessage("Building Makefile for Inkscape")
178N/Amessage("------------------------------")
178N/Amessage("Source Dir: ${CMAKE_CURRENT_SOURCE_DIR}")
178N/Amessage("Binary Dir: ${CMAKE_CURRENT_BINARY_DIR}")
178N/A# -----------------------------------------------------------------------------
178N/A# -----------------------------------------------------------------------------
178N/A# avoid having empty buildtype
178N/Aset(CMAKE_BUILD_TYPE_INIT "Release")
set(INKSCAPE_VERSION 0.91+devel)
set(PROJECT_NAME inkscape)
set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
cmake_policy(SET CMP0003 NEW) # don't be prolific with library paths
cmake_policy(SET CMP0005 NEW) # proper define quoting
cmake_policy(SET CMP0009 NEW) # don't follow symbolic links when using GLOB
# workaround for omission in cmake 2.8.4's
GNU.cmake, fixed in 2.8.5
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
# -----------------------------------------------------------------------------
# Set platform defaults (originally copied from darktable)
# -----------------------------------------------------------------------------
message("-- Mac OS X build detected, setting default features")
# prefer macports
and/or user-installed libraries over system ones
set(CMAKE_FIND_FRAMEWORK "LAST")
# test and display relevant env variables
if(DEFINED ENV{CMAKE_PREFIX_PATH})
message("CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH}")
if(DEFINED ENV{GTKMM_BASEPATH})
message("GTKMM_BASEPATH: $ENV{GTKMM_BASEPATH}")
# detect current GTK+ backend
pkg_check_variable(gtk+-2.0 target)
message("GTK2 backend: ${GTK+_2.0_TARGET}")
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" )
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" )
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
CACHE PATH "The path to the GoogleMock test framework.")
if(EXISTS "${GMOCK_DIR}" AND IS_DIRECTORY "${GMOCK_DIR}")
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
option(WITH_DBUS "Compile with support for DBus interface" OFF)
option(ENABLE_LCMS "Compile with LCMS support" ON)
option(WITH_GNOME_VFS "Compile with support for Gnome VFS" ON)
#option(WITH_INKJAR "Enable support for openoffice files (SVG jars)" ON)
option(WITH_GTEST "Compile with Google Test support" ${GMOCK_PRESENT})
option(WITH_OPENMP "Compile with OpenMP support" ON)
option(WITH_PROFILING "Turn on profiling" OFF) # Set to true if
compiler/linker should enable profiling
option(ENABLE_POPPLER "Compile with support of libpoppler" ON)
option(ENABLE_POPPLER_CAIRO "Compile with support of libpoppler-cairo for rendering PDF preview (depends on ENABLE_POPPLER)" ON)
option(WITH_IMAGE_MAGICK "Compile with support of ImageMagick for raster extensions and image import resolution" ON)
option(WITH_LIBCDR "Compile with support of libcdr for CorelDRAW Diagrams" ON)
option(WITH_LIBVISIO "Compile with support of libvisio for Microsoft Visio Diagrams" ON)
option(WITH_LIBWPG "Compile with support of libwpg for WordPerfect Graphics" ON)
option(WITH_NLS "Compile with Native Language Support (using gettext)" ON)
option(WITH_GTK3_EXPERIMENTAL "Enable compilation with GTK+3 (EXPERIMENTAL!)" OFF)
# -----------------------------------------------------------------------------
# BAD HACKS, NEED TO INVESTIGATE MAKING THESE LESS BAD
add_definitions(-D_FORTIFY_SOURCE=2)
add_definitions(-DORBIT2=1)
add_definitions(-DHAVE_CONFIG_H)
add_definitions(-DHAVE_TR1_UNORDERED_SET) # XXX make an option!
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
set(INKSCAPE_DIST_PREFIX "${PROJECT_NAME}-${INKSCAPE_VERSION}")
COMMAND bzr export --root=${INKSCAPE_DIST_PREFIX}
"${CMAKE_BINARY_DIR}/${INKSCAPE_DIST_PREFIX}
.tar.bz2"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
add_custom_target(uninstall
# -----------------------------------------------------------------------------
# Subdirs (on only 1 atm), but a lot happens here
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Load AUTHORS file contents into $INKSCAPE_AUTHORS
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS content)
string(REGEX REPLACE "^([^\n#]+)\n" "\\1;\n" content_list "${content}")
join(INKSCAPE_AUTHORS "," "${content_list}")
set(POD_IN ${CMAKE_CURRENT_SOURCE_DIR}/${podfile}.in)
set(POD_OUT ${CMAKE_CURRENT_BINARY_DIR}/${podfile})
configure_file(${POD_IN} ${POD_OUT})
pod2man(${POD_OUT} ${INKSCAPE_VERSION} 1 "Inkscape Commands Manual")
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
DESTINATION ${CMAKE_INSTALL_PREFIX}/${SHARE_INSTALL}/applications
# this should probably be done no matter what the platform is, just set SHARE_INSTALL first
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
add_custom_target(clean-cmake-files
add_custom_target(clean-all
COMMAND ${CMAKE_BUILD_TOOL} clean
#-----------------------------------------------------------------------------
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})
add_subdirectory(test EXCLUDE_FROM_ALL)
# Canonicalize the flags to speed up recompilation using
ccache/etc.
# This should be the last thing we do:
canonicalize_flags_var("${CMAKE_CXX_FLAGS}" _new_cxx)
set(CMAKE_CXX_FLAGS "${_new_cxx}" CACHE STRING "" FORCE)
# message(FATAL_ERROR "CMAKE_CXX_FLAGS = <${CMAKE_CXX_FLAGS}>")
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
message("------------------------------------------------------------------------")
message("Configuration Summary")
message("------------------------------------------------------------------------")
message("PROJECT_NAME: ${PROJECT_NAME}")
message("INKSCAPE_VERSION: ${INKSCAPE_VERSION}")
message("INKSCAPE_DIST_PREFIX: ${INKSCAPE_DIST_PREFIX}")
message("CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
message("CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}")
message("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
message("CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
message("CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
message("CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
message("ENABLE_LCMS: ${ENABLE_LCMS}")
message("ENABLE_POPPLER: ${ENABLE_POPPLER}")
message("ENABLE_POPPLER_CAIRO: ${ENABLE_POPPLER_CAIRO}")
message("GMOCK_PRESENT: ${GMOCK_PRESENT}")
message("WITH_DBUS: ${WITH_DBUS}")
message("WITH_GNOME_VFS: ${WITH_GNOME_VFS}")
message("WITH_GTEST: ${WITH_GTEST}")
message("WITH_GTK3_EXPERIMENTAL: ${WITH_GTK3_EXPERIMENTAL}")
message("WITH_GTKSPELL: ${WITH_GTKSPELL}")
message("WITH_IMAGE_MAGICK: ${WITH_IMAGE_MAGICK}")
message("WITH_LIBCDR: ${WITH_LIBCDR}")
message("WITH_LIBVISIO: ${WITH_LIBVISIO}")
message("WITH_LIBWPG: ${WITH_LIBWPG}")
message("WITH_NLS: ${WITH_NLS}")
message("WITH_OPENMP: ${WITH_OPENMP}")
message("WITH_PROFILING: ${WITH_PROFILING}")
message("------------------------------------------------------------------------")