CMakeLists.txt revision 43853c67c9e3011d3b3226565674bdc61e03322e
# CMake TODO
# - Remove hard coded defines (see bwelow)
# - Test on MinGW and OSX
# - Add configurable options for Python/Perl, see configure --help
#
# ideasman42
cmake_minimum_required(VERSION 2.8.0)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeScripts/Modules")
# avoid having empty buildtype
set(CMAKE_BUILD_TYPE_INIT "Release")
project(inkscape)
set(INKSCAPE_VERSION 0.91pre2)
set(PROJECT_NAME inkscape)
set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
cmake_policy(SET CMP0005 NEW) # propper define quoting
endif()
# workaround for omission in cmake 2.8.4's GNU.cmake, fixed in 2.8.5
if(CMAKE_COMPILER_IS_GNUCC)
if(NOT DARWIN)
set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
endif()
endif()
#-----------------------------------------------------------------------------
# Redirect output files
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE )
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
# -----------------------------------------------------------------------------
# Options
# -----------------------------------------------------------------------------
option(WITH_DBUS "Compile with support for DBus interface" OFF)
option(ENABLE_LCMS "Compile with LCMS support" OFF)
option(WITH_GNOME_VFS "Compile with support for Gnome VFS" OFF)
#option(WITH_INKJAR "Enable support for openoffice files (SVG jars)" ON)
option(WITH_PROFILING "Turn on profiling" OFF) # Set to true if compiler/linker should enable profiling
option(WITH_GTKSPELL "Compile with support for GTK spelling widget" ON)
option(WITH_LIBWPG "Compile with support of libpoppler-cairo for WordPrefect Graphics" ON)
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)
include(CMakeScripts/ConfigPaths.cmake) # Installation Paths
include(CMakeScripts/DefineDependsandFlags.cmake) # Includes, Compiler Flags, and Link Libraries
include(CMakeScripts/HelperMacros.cmake) # Misc Utility Macros
# -----------------------------------------------------------------------------
# BAD HACKS, NEED TO INVESTIGATE MAKING THESE LESS BAD
add_definitions(-D_FORTIFY_SOURCE=2)
add_definitions(-DPOTRACE="potrace")
add_definitions(-DORBIT2=1)
add_definitions(-DHAVE_CONFIG_H)
add_definitions(-DHAVE_CAIRO_PDF=1) # needed for src/libnrtype/Layout-TNG.h
add_definitions(-DHAVE_TR1_UNORDERED_SET) # XXX make an option!
#
# end badness
# -----------------------------------------------------------------------------
# make dist target
set(INKSCAPE_DIST_PREFIX "${PROJECT_NAME}-${INKSCAPE_VERSION}")
add_custom_target(dist svn export --force -q "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/${INKSCAPE_DIST_PREFIX}"
COMMAND tar -czf "${CMAKE_BINARY_DIR}/${INKSCAPE_DIST_PREFIX}.tar.gz" -C "${CMAKE_BINARY_DIR}" --exclude=".hidden" ${INKSCAPE_DIST_PREFIX}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
# make unistall target
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/inkscape.desktop.in"
"${CMAKE_BINARY_DIR}/inkscape.desktop"
IMMEDIATE @ONLY)
add_custom_target(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
# -----------------------------------------------------------------------------
# Subdirs (on only 1 atm), but a lot happens here
# -----------------------------------------------------------------------------
add_subdirectory(src)
# -----------------------------------------------------------------------------
# Installation
# -----------------------------------------------------------------------------
if(UNIX)
# TODO: man, locale, icons
# message after building.
add_custom_command(
TARGET blender POST_BUILD MAIN_DEPENDENCY blender
COMMAND ${CMAKE_COMMAND} -E echo 'now run: \"make install\" to copy runtime files & scripts to ${CMAKE_INSTALL_PREFIX}'
)
install(
PROGRAMS ${EXECUTABLE_OUTPUT_PATH}/inkscape
DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
)
install(
FILES ${CMAKE_BINARY_DIR}/inkscape.desktop
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications
)
install(
DIRECTORY
${CMAKE_SOURCE_DIR}/share/attributes
${CMAKE_SOURCE_DIR}/share/branding
${CMAKE_SOURCE_DIR}/share/examples
${CMAKE_SOURCE_DIR}/share/extensions
${CMAKE_SOURCE_DIR}/share/filters
${CMAKE_SOURCE_DIR}/share/fonts
${CMAKE_SOURCE_DIR}/share/gradients
${CMAKE_SOURCE_DIR}/share/icons
${CMAKE_SOURCE_DIR}/share/keys
${CMAKE_SOURCE_DIR}/share/markers
${CMAKE_SOURCE_DIR}/share/palettes
${CMAKE_SOURCE_DIR}/share/patterns
${CMAKE_SOURCE_DIR}/share/screens
${CMAKE_SOURCE_DIR}/share/symbols
${CMAKE_SOURCE_DIR}/share/templates
${CMAKE_SOURCE_DIR}/share/tutorials
${CMAKE_SOURCE_DIR}/share/ui
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/inkscape
)
else()
# TODO, WIN32/APPLE
endif()