diff options
Diffstat (limited to 'CMakeScripts')
| -rw-r--r-- | CMakeScripts/CleanAll.cmake | 17 | ||||
| -rw-r--r-- | CMakeScripts/ConfigChecks.cmake | 4 | ||||
| -rw-r--r-- | CMakeScripts/ConfigCompileFlags.cmake | 10 | ||||
| -rw-r--r-- | CMakeScripts/ConfigPaths.cmake | 47 | ||||
| -rw-r--r-- | CMakeScripts/DefineDependsandFlags.cmake | 498 | ||||
| -rw-r--r-- | CMakeScripts/HelperFunctions.cmake | 19 | ||||
| -rw-r--r-- | CMakeScripts/HelperMacros.cmake | 170 | ||||
| -rw-r--r-- | CMakeScripts/IncludeJava.cmake | 14 | ||||
| -rw-r--r-- | CMakeScripts/Modules/FindGettext.cmake | 237 | ||||
| -rw-r--r-- | CMakeScripts/Modules/FindPopplerCairo.cmake | 6 | ||||
| -rw-r--r-- | CMakeScripts/Modules/FindPotrace.cmake | 62 | ||||
| -rw-r--r-- | CMakeScripts/Modules/FindSigC++.cmake | 22 | ||||
| -rw-r--r-- | CMakeScripts/Modules/sigcpp_test.cpp | 15 | ||||
| -rw-r--r-- | CMakeScripts/Pod2man.cmake | 54 | ||||
| -rw-r--r-- | CMakeScripts/UseGlibMarshal.cmake | 48 | ||||
| -rw-r--r-- | CMakeScripts/UsePkgConfig.cmake | 166 | ||||
| -rw-r--r-- | CMakeScripts/inkscape-version.cmake | 30 |
17 files changed, 922 insertions, 497 deletions
diff --git a/CMakeScripts/CleanAll.cmake b/CMakeScripts/CleanAll.cmake new file mode 100644 index 000000000..0b04d188f --- /dev/null +++ b/CMakeScripts/CleanAll.cmake @@ -0,0 +1,17 @@ +set(_generated + ${CMAKE_CURRENT_BINARY_DIR}/CMakeCache.txt + ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake + ${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake + ${CMAKE_CURRENT_BINARY_DIR}/po/cmake_install.cmake + ${CMAKE_CURRENT_BINARY_DIR}/Makefile + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles +) + +message("${_generated}") + +foreach(file ${_generated}) + if(EXISTS ${file}) + message("Removing ${file}") + file(REMOVE_RECURSE ${file}) + endif() +endforeach(file) diff --git a/CMakeScripts/ConfigChecks.cmake b/CMakeScripts/ConfigChecks.cmake index 905465448..926dc3ad3 100644 --- a/CMakeScripts/ConfigChecks.cmake +++ b/CMakeScripts/ConfigChecks.cmake @@ -18,8 +18,6 @@ CHECK_FUNCTION_EXISTS(floor HAVE_FLOOR) CHECK_FUNCTION_EXISTS(fpsetmask HAVE_FPSETMASK) CHECK_INCLUDE_FILES(gc/gc.h HAVE_GC_GC_H) CHECK_INCLUDE_FILES(gc.h HAVE_GC_H) -CHECK_INCLUDE_FILES(getopt.h HAVE_GETOPT_H) -CHECK_FUNCTION_EXISTS(gettext HAVE_GETTEXT) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(gtk_window_fullscreen HAVE_GTK_WINDOW_FULLSCREEN) CHECK_FUNCTION_EXISTS(gtk_window_set_default_icon_from_file HAVE_GTK_WINDOW_SET_DEFAULT_ICON_FROM_FILE) @@ -60,7 +58,7 @@ CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H) CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) CHECK_INCLUDE_FILES(zlib.h HAVE_ZLIB_H) -#Enable pango defines, necessary for compilation on Win32, how about Linux? +# Enable pango defines, necessary for compilation on Win32, how about Linux? # yes but needs to be done a better way if(HAVE_CAIRO_PDF) set(PANGO_ENABLE_ENGINE TRUE) diff --git a/CMakeScripts/ConfigCompileFlags.cmake b/CMakeScripts/ConfigCompileFlags.cmake index 0ff66fad8..453ceef21 100644 --- a/CMakeScripts/ConfigCompileFlags.cmake +++ b/CMakeScripts/ConfigCompileFlags.cmake @@ -2,20 +2,20 @@ set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}") add_definitions(-Wall -Wformat-security -W -Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch) add_definitions(-O2) -#define the flags for profiling if desired: +# Define the flags for profiling if desired: if(WITH_PROFILING) - set(COMPILE_PROFILING_FLAGS "-pg") - set(LINK_PROFILING_FLAGS "-pg") + set(COMPILE_PROFILING_FLAGS "-pg") + set(LINK_PROFILING_FLAGS "-pg") endif() add_definitions(-DVERSION=\\\"${INKSCAPE_VERSION}\\\") add_definitions(${DEFINE_FLAGS} -DHAVE_CONFIG_H -D_INTL_REDIRECT_INLINE) if(WIN32) - add_definitions(-DXP_WIN) + add_definitions(-DXP_WIN) endif(WIN32) -# for Inkboard: +# For Inkboard: add_definitions(-DHAVE_SSL "-DRELAYTOOL_SSL=\"static const int libssl_is_present=1; static int __attribute__((unused)) libssl_symbol_is_present(char *s){ return 1; }\"") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_PROFILING_FLAGS} ") diff --git a/CMakeScripts/ConfigPaths.cmake b/CMakeScripts/ConfigPaths.cmake index 770e0c6ad..3b13a7734 100644 --- a/CMakeScripts/ConfigPaths.cmake +++ b/CMakeScripts/ConfigPaths.cmake @@ -1,37 +1,16 @@ -MESSAGE(STATUS "Creating build files in: ${CMAKE_CURRENT_BINARY_DIR}") +message(STATUS "Creating build files in: ${CMAKE_CURRENT_BINARY_DIR}") -IF(WIN32) - SET(PACKAGE_LOCALE_DIR "locale") +if(WIN32) + set(PACKAGE_LOCALE_DIR "locale") set(SHARE_INSTALL "share" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.") -ELSE(WIN32) +else(WIN32) # TODO: check and change this to correct value: - SET(PACKAGE_LOCALE_DIR "locale") - - if(NOT SHARE_INSTALL) - set(SHARE_INSTALL "share" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.") - endif(NOT SHARE_INSTALL) - mark_as_advanced(SHARE_INSTALL) -ENDIF(WIN32) - -#SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) -#SET(CMAKE_SKIP_RPATH:BOOL OFF) - -# Include base dir, so other files can refer to the generated files. -# CMAKE_INCLUDE_CURRENT_DIR is not enough as it only includes the current dir and not the basedir with config.h in it -#INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}" src/) -#LINK_DIRECTORIES ("${LINK_DIRECTORIES}" "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}" src/) - -#INSTALL(TARGETS INKSCAPE -# RUNTIME DESTINATION bin -# LIBRARY DESTINATION lib -# ARCHIVE DESTINATION lib -#) - -#FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -#INSTALL(FILES ${files} DESTINATION include/INKSCAPE/INKSCAPE) - -#CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/INKSCAPE.pc.in -# ${CMAKE_BINARY_DIR}/INKSCAPE.pc @ONLY IMMEDIATE ) -#INSTALL(FILES "${CMAKE_BINARY_DIR}/INKSCAPE.pc" DESTINATION lib/pkgconfig) - -#SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "Where to put the executables")set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "Where to put the libraries") + if(NOT PACKAGE_LOCALE_DIR) + set(PACKAGE_LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") # packagers might overwrite this + endif(NOT PACKAGE_LOCALE_DIR) + + if(NOT SHARE_INSTALL) + set(SHARE_INSTALL "share" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.") + endif(NOT SHARE_INSTALL) + mark_as_advanced(SHARE_INSTALL) +endif(WIN32) diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index a4dad21b1..ab197a7af 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -4,10 +4,10 @@ set(INKSCAPE_INCS "") set(INKSCAPE_INCS_SYS "") list(APPEND INKSCAPE_INCS ${PROJECT_SOURCE_DIR} - ${PROJECT_SOURCE_DIR}/src + ${PROJECT_SOURCE_DIR}/src - # generated includes - ${CMAKE_BINARY_DIR}/include + # generated includes + ${CMAKE_BINARY_DIR}/include ) # ---------------------------------------------------------------------------- @@ -17,55 +17,55 @@ list(APPEND INKSCAPE_INCS ${PROJECT_SOURCE_DIR} find_package(GSL REQUIRED) list(APPEND INKSCAPE_INCS_SYS ${GSL_INCLUDE_DIRS}) list(APPEND INKSCAPE_LIBS ${GSL_LIBRARIES}) -if (WIN32) - list(APPEND INKSCAPE_LIBS "-L$ENV{DEVLIBS_PATH}/lib") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0.dll") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0.dll") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangowin32-1.0.dll") # FIXME - list(APPEND INKSCAPE_LIBS "-lgthread-2.0.dll") # FIXME +if(WIN32) + list(APPEND INKSCAPE_LIBS "-L$ENV{DEVLIBS_PATH}/lib") # FIXME + list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0.dll") # FIXME + list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0.dll") # FIXME + list(APPEND INKSCAPE_LIBS "-lpangowin32-1.0.dll") # FIXME + list(APPEND INKSCAPE_LIBS "-lgthread-2.0.dll") # FIXME elseif(APPLE) - if(DEFINED ENV{CMAKE_PREFIX_PATH}) - # Adding the library search path explicitly seems not required - # if MacPorts is installed in default prefix ('/opt/local') - - # Cmake then can rely on the hard-coded paths in its modules. - # Only prepend search path if $CMAKE_PREFIX_PATH is defined: - list(APPEND INKSCAPE_LIBS "-L$ENV{CMAKE_PREFIX_PATH}/lib") # FIXME - endif() - list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lfontconfig") # FIXME - if(${GTK+_2.0_TARGET} MATCHES "x11") - # only link X11 if using X11 backend of GTK2 - list(APPEND INKSCAPE_LIBS "-lX11") # FIXME - endif() -else() - list(APPEND INKSCAPE_LIBS "-ldl") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lfontconfig") # FIXME + if(DEFINED ENV{CMAKE_PREFIX_PATH}) + # Adding the library search path explicitly seems not required + # if MacPorts is installed in default prefix ('/opt/local') - + # Cmake then can rely on the hard-coded paths in its modules. + # Only prepend search path if $CMAKE_PREFIX_PATH is defined: + list(APPEND INKSCAPE_LIBS "-L$ENV{CMAKE_PREFIX_PATH}/lib") # FIXME + endif() + list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0") # FIXME + list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0") # FIXME + list(APPEND INKSCAPE_LIBS "-lfontconfig") # FIXME + if(${GTK+_2.0_TARGET} MATCHES "x11") + # only link X11 if using X11 backend of GTK2 list(APPEND INKSCAPE_LIBS "-lX11") # FIXME + endif() +else() + list(APPEND INKSCAPE_LIBS "-ldl") # FIXME + list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0") # FIXME + list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0") # FIXME + list(APPEND INKSCAPE_LIBS "-lfontconfig") # FIXME + list(APPEND INKSCAPE_LIBS "-lX11") # FIXME endif() list(APPEND INKSCAPE_LIBS "-lgslcblas") # FIXME if(WITH_GNOME_VFS) - find_package(GnomeVFS2) - if(GNOMEVFS2_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${GNOMEVFS2_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${GNOMEVFS-2_LIBRARY}) - else() - set(WITH_GNOME_VFS OFF) - endif() + find_package(GnomeVFS2) + if(GNOMEVFS2_FOUND) + list(APPEND INKSCAPE_INCS_SYS ${GNOMEVFS2_INCLUDE_DIR}) + list(APPEND INKSCAPE_LIBS ${GNOMEVFS-2_LIBRARY}) + else() + set(WITH_GNOME_VFS OFF) + endif() endif() if(ENABLE_LCMS) - find_package(LCMS2) - if(LCMS2_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${LCMS2_INCLUDE_DIRS}) - list(APPEND INKSCAPE_LIBS ${LCMS2_LIBRARIES}) - add_definitions(${LCMS2_DEFINITIONS}) + find_package(LCMS2) + if(LCMS2_FOUND) + list(APPEND INKSCAPE_INCS_SYS ${LCMS2_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${LCMS2_LIBRARIES}) + add_definitions(${LCMS2_DEFINITIONS}) set (HAVE_LIBLCMS2 1) - else() + else() find_package(LCMS) if(LCMS_FOUND) list(APPEND INKSCAPE_INCS_SYS ${LCMS_INCLUDE_DIRS}) @@ -94,47 +94,31 @@ list(APPEND INKSCAPE_LIBS ${BOEHMGC_LIBRARIES}) add_definitions(${BOEHMGC_DEFINITIONS}) if(ENABLE_POPPLER) - find_package(PopplerCairo) - if(POPPLER_FOUND) - set(HAVE_POPPLER ON) - if(ENABLE_POPPLER_CAIRO) - if(POPPLER_CAIRO_FOUND AND POPPLER_GLIB_FOUND) - set(HAVE_POPPLER_CAIRO ON) - endif() - if(POPPLER_GLIB_FOUND AND CAIRO_SVG_FOUND) - set(HAVE_POPPLER_GLIB ON) - endif() - endif() - if(POPPLER_VERSION VERSION_GREATER "0.8.3" OR - POPPLER_VERSION VERSION_EQUAL "0.8.3") - set(POPPLER_NEW_GFXFONT ON) - endif() - if(POPPLER_VERSION VERSION_GREATER "0.12.2" OR - POPPLER_VERSION VERSION_EQUAL "0.12.2") - set(POPPLER_NEW_COLOR_SPACE_API ON) - endif() - if(POPPLER_VERSION VERSION_GREATER "0.26.0" OR - POPPLER_VERSION VERSION_EQUAL "0.26.0") - set(POPPLER_EVEN_NEWER_COLOR_SPACE_API ON) - endif() - if(POPPLER_VERSION VERSION_GREATER "0.29.0" OR - POPPLER_VERSION VERSION_EQUAL "0.29.0") - set(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API ON) - endif() - if(POPPLER_VERSION VERSION_GREATER "0.15.1" OR - POPPLER_VERSION VERSION_EQUAL "0.15.1") - set(POPPLER_NEW_GFXPATCH ON) - endif() - if(POPPLER_VERSION VERSION_GREATER "0.20.0" OR - POPPLER_VERSION VERSION_EQUAL "0.20.0") - set(POPPLER_NEW_ERRORAPI ON) - endif() - else() - set(ENABLE_POPPLER_CAIRO OFF) + find_package(PopplerCairo) + if(POPPLER_FOUND) + set(HAVE_POPPLER ON) + if(ENABLE_POPPLER_CAIRO) + if(POPPLER_CAIRO_FOUND AND POPPLER_GLIB_FOUND) + set(HAVE_POPPLER_CAIRO ON) + endif() + if(POPPLER_GLIB_FOUND AND CAIRO_SVG_FOUND) + set(HAVE_POPPLER_GLIB ON) + endif() endif() -else() - set(HAVE_POPPLER OFF) + if(POPPLER_VERSION VERSION_GREATER "0.26.0" OR + POPPLER_VERSION VERSION_EQUAL "0.26.0") + set(POPPLER_EVEN_NEWER_COLOR_SPACE_API ON) + endif() + if(POPPLER_VERSION VERSION_GREATER "0.29.0" OR + POPPLER_VERSION VERSION_EQUAL "0.29.0") + set(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API ON) + endif() + else() set(ENABLE_POPPLER_CAIRO OFF) + endif() +else() + set(HAVE_POPPLER OFF) + set(ENABLE_POPPLER_CAIRO OFF) endif() list(APPEND INKSCAPE_INCS_SYS ${POPPLER_INCLUDE_DIRS}) @@ -142,52 +126,51 @@ list(APPEND INKSCAPE_LIBS ${POPPLER_LIBRARIES}) add_definitions(${POPPLER_DEFINITIONS}) if(WITH_LIBWPG) - find_package(LibWPG) - if(LIBWPG_FOUND) - set(WITH_LIBWPG01 ${LIBWPG-0.1_FOUND}) - set(WITH_LIBWPG02 ${LIBWPG-0.2_FOUND}) - set(WITH_LIBWPG03 ${LIBWPG-0.3_FOUND}) - list(APPEND INKSCAPE_INCS_SYS ${LIBWPG_INCLUDE_DIRS}) - list(APPEND INKSCAPE_LIBS ${LIBWPG_LIBRARIES}) - add_definitions(${LIBWPG_DEFINITIONS}) - else() - set(WITH_LIBWPG OFF) - endif() + find_package(LibWPG) + if(LIBWPG_FOUND) + set(WITH_LIBWPG01 ${LIBWPG-0.1_FOUND}) + set(WITH_LIBWPG02 ${LIBWPG-0.2_FOUND}) + set(WITH_LIBWPG03 ${LIBWPG-0.3_FOUND}) + list(APPEND INKSCAPE_INCS_SYS ${LIBWPG_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${LIBWPG_LIBRARIES}) + add_definitions(${LIBWPG_DEFINITIONS}) + else() + set(WITH_LIBWPG OFF) + endif() endif() if(WITH_LIBVISIO) - find_package(LibVisio) - if(LIBVISIO_FOUND) - set(WITH_LIBVISIO00 ${LIBVISIO-0.0_FOUND}) - set(WITH_LIBVISIO01 ${LIBVISIO-0.1_FOUND}) - list(APPEND INKSCAPE_INCS_SYS ${LIBVISIO_INCLUDE_DIRS}) - list(APPEND INKSCAPE_LIBS ${LIBVISIO_LIBRARIES}) - add_definitions(${LIBVISIO_DEFINITIONS}) - else() - set(WITH_LIBVISIO OFF) - endif() + find_package(LibVisio) + if(LIBVISIO_FOUND) + set(WITH_LIBVISIO00 ${LIBVISIO-0.0_FOUND}) + set(WITH_LIBVISIO01 ${LIBVISIO-0.1_FOUND}) + list(APPEND INKSCAPE_INCS_SYS ${LIBVISIO_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${LIBVISIO_LIBRARIES}) + add_definitions(${LIBVISIO_DEFINITIONS}) + else() + set(WITH_LIBVISIO OFF) + endif() endif() if(WITH_LIBCDR) - find_package(LibCDR) - if(LIBCDR_FOUND) - set(WITH_LIBCDR00 ${LIBCDR-0.0_FOUND}) - set(WITH_LIBCDR01 ${LIBCDR-0.1_FOUND}) - list(APPEND INKSCAPE_INCS_SYS ${LIBCDR_INCLUDE_DIRS}) - list(APPEND INKSCAPE_LIBS ${LIBCDR_LIBRARIES}) - add_definitions(${LIBCDR_DEFINITIONS}) - else() - set(WITH_LIBCDR OFF) - endif() + find_package(LibCDR) + if(LIBCDR_FOUND) + set(WITH_LIBCDR00 ${LIBCDR-0.0_FOUND}) + set(WITH_LIBCDR01 ${LIBCDR-0.1_FOUND}) + list(APPEND INKSCAPE_INCS_SYS ${LIBCDR_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${LIBCDR_LIBRARIES}) + add_definitions(${LIBCDR_DEFINITIONS}) + else() + set(WITH_LIBCDR OFF) + endif() endif() -FIND_PACKAGE(JPEG REQUIRED) -#IF(JPEG_FOUND) - #INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR}) - #TARGET_LINK_LIBRARIES(mpo ${JPEG_LIBRARIES}) -#ENDIF() -list(APPEND INKSCAPE_INCS_SYS ${JPEG_INCLUDE_DIR}) -list(APPEND INKSCAPE_LIBS ${JPEG_LIBRARIES}) +FIND_PACKAGE(JPEG) +IF(JPEG_FOUND) + list(APPEND INKSCAPE_INCS_SYS ${JPEG_INCLUDE_DIR}) + list(APPEND INKSCAPE_LIBS ${JPEG_LIBRARIES}) + set(HAVE_JPEG ON) +ENDIF() find_package(PNG REQUIRED) list(APPEND INKSCAPE_INCS_SYS ${PNG_PNG_INCLUDE_DIR}) @@ -198,78 +181,141 @@ list(APPEND INKSCAPE_INCS_SYS ${POPT_INCLUDE_DIR}) list(APPEND INKSCAPE_LIBS ${POPT_LIBRARIES}) add_definitions(${POPT_DEFINITIONS}) +find_package(Potrace) +if(POTRACE_FOUND) + list(APPEND INKSCAPE_INCS_SYS ${POTRACE_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${POTRACE_LIBRARIES}) + set(HAVE_POTRACE ON) + add_definitions(-DHAVE_POTRACE) +else(POTRACE_FOUND) + set(HAVE_POTRACE OFF) + message(STATUS "Could not locate the Potrace library headers: the Trace Bitmap and Paintbucket tools will be disabled") +endif() + if(WITH_DBUS) - find_package(DBus REQUIRED) - if(DBUS_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${DBUS_INCLUDE_DIR}) - list(APPEND INKSCAPE_INCS_SYS ${DBUS_ARCH_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${DBUS_LIBRARIES}) - else() - set(WITH_DBUS OFF) - endif() + find_package(DBus REQUIRED) + if(DBUS_FOUND) + list(APPEND INKSCAPE_INCS_SYS ${DBUS_INCLUDE_DIR}) + list(APPEND INKSCAPE_INCS_SYS ${DBUS_ARCH_INCLUDE_DIR}) + list(APPEND INKSCAPE_LIBS ${DBUS_LIBRARIES}) + else() + set(WITH_DBUS OFF) + endif() endif() if(WITH_GTEST) - if(EXISTS "${GMOCK_DIR}" AND IS_DIRECTORY "${GMOCK_DIR}") + if(EXISTS "${GMOCK_DIR}" AND IS_DIRECTORY "${GMOCK_DIR}") - else() - set(WITH_GTEST off) - endif() + else() + set(WITH_GTEST off) + endif() endif() # ---------------------------------------------------------------------------- # CMake's builtin # ---------------------------------------------------------------------------- +set(TRY_GTKSPELL 1) # Include dependencies: # use patched version until GTK2_CAIROMMCONFIG_INCLUDE_DIR is added -find_package(GTK2 COMPONENTS gtk gtkmm REQUIRED) -list(APPEND INKSCAPE_INCS_SYS - ${GTK2_GDK_INCLUDE_DIR} - ${GTK2_GDKMM_INCLUDE_DIR} - ${GTK2_GDK_PIXBUF_INCLUDE_DIR} - ${GTK2_GDKCONFIG_INCLUDE_DIR} - ${GTK2_GDKMMCONFIG_INCLUDE_DIR} - ${GTK2_GLIB_INCLUDE_DIR} - ${GTK2_GLIBCONFIG_INCLUDE_DIR} - ${GTK2_GLIBMM_INCLUDE_DIR} - ${GTK2_GLIBMMCONFIG_INCLUDE_DIR} - ${GTK2_GTK_INCLUDE_DIR} - ${GTK2_GTKMM_INCLUDE_DIR} - ${GTK2_GTKMMCONFIG_INCLUDE_DIR} - ${GTK2_ATK_INCLUDE_DIR} - ${GTK2_ATKMM_INCLUDE_DIR} - ${GTK2_PANGO_INCLUDE_DIR} - ${GTK2_PANGOMM_INCLUDE_DIR} - ${GTK2_PANGOMMCONFIG_INCLUDE_DIR} - ${GTK2_CAIRO_INCLUDE_DIR} - ${GTK2_CAIROMM_INCLUDE_DIR} - ${GTK2_CAIROMMCONFIG_INCLUDE_DIR} # <-- not in cmake 2.8.4 - ${GTK2_GIOMM_INCLUDE_DIR} - ${GTK2_GIOMMCONFIG_INCLUDE_DIR} - ${GTK2_SIGC++_INCLUDE_DIR} - ${GTK2_SIGC++CONFIG_INCLUDE_DIR} -) +if("${WITH_GTK3_EXPERIMENTAL}") + pkg_check_modules( + GTK + REQUIRED + gtkmm-3.0>=3.2 + gdkmm-3.0>=3.2 + gtk+-3.0>=3.2 + gdk-3.0>=3.2 + gdl-3.0>=3.3.5 + ) + message("Using EXPERIMENTAL Gtkmm 3 build") + set(WITH_GTKMM_3_0 1) + message("Using external GDL") + set(WITH_EXT_GDL 1) + + # Check whether we can use new features in Gtkmm 3.10 + # TODO: Drop this test and bump the version number in the GTK test above + # as soon as all supported distributions provide Gtkmm >= 3.10 + pkg_check_modules(GTKMM_3_10 + gtkmm-3.0>=3.10, + ) + + if("${GTKMM_3_10_FOUND}") + message("Using Gtkmm 3.10 build") + set (WITH_GTKMM_3_10 1) + endif() -list(APPEND INKSCAPE_LIBS - ${GTK2_GDK_LIBRARY} - ${GTK2_GDKMM_LIBRARY} - ${GTK2_GDK_PIXBUF_LIBRARY} - ${GTK2_GLIB_LIBRARY} - ${GTK2_GLIBMM_LIBRARY} - ${GTK2_GTK_LIBRARY} - ${GTK2_GTKMM_LIBRARY} - ${GTK2_ATK_LIBRARY} - ${GTK2_ATKMM_LIBRARY} - ${GTK2_PANGO_LIBRARY} - ${GTK2_PANGOMM_LIBRARY} - ${GTK2_CAIRO_LIBRARY} - ${GTK2_CAIROMM_LIBRARY} - ${GTK2_GIOMM_LIBRARY} - ${GTK2_SIGC++_LIBRARY} - ${GTK2_GOBJECT_LIBRARY} -) + pkg_check_modules(GDL_3_6 gdl-3.0>=3.6) + + if("${GDL_3_6_FOUND}") + message("Using Gdl 3.6 or higher") + set (WITH_GDL_3_6 1) + endif() + + set(TRY_GTKSPELL ) + pkg_check_modules(GTKSPELL3 gtkspell3-3.0) + if("${GTKSPELL3_FOUND}") + message("Using GtkSpell3 3.0") + set (WITH_GTKSPELL 1) + endif() + list(APPEND INKSCAPE_INCS_SYS + ${GTK_INCLUDE_DIRS} + ${GTKSPELL3_INCLUDE_DIRS} + ) + + list(APPEND INKSCAPE_LIBS + ${GTK_LIBRARIES} + ${GTKSPELL3_LIBRARIES} + ) +else() + find_package(GTK2 COMPONENTS gtk gtkmm REQUIRED) + list(APPEND INKSCAPE_INCS_SYS + ${GTK2_GDK_INCLUDE_DIR} + ${GTK2_GDKMM_INCLUDE_DIR} + ${GTK2_GDK_PIXBUF_INCLUDE_DIR} + ${GTK2_GDKCONFIG_INCLUDE_DIR} + ${GTK2_GDKMMCONFIG_INCLUDE_DIR} + ${GTK2_GLIB_INCLUDE_DIR} + ${GTK2_GLIBCONFIG_INCLUDE_DIR} + ${GTK2_GLIBMM_INCLUDE_DIR} + ${GTK2_GLIBMMCONFIG_INCLUDE_DIR} + ${GTK2_GTK_INCLUDE_DIR} + ${GTK2_GTKMM_INCLUDE_DIR} + ${GTK2_GTKMMCONFIG_INCLUDE_DIR} + ${GTK2_ATK_INCLUDE_DIR} + ${GTK2_ATKMM_INCLUDE_DIR} + ${GTK2_PANGO_INCLUDE_DIR} + ${GTK2_PANGOMM_INCLUDE_DIR} + ${GTK2_PANGOMMCONFIG_INCLUDE_DIR} + ${GTK2_CAIRO_INCLUDE_DIR} + ${GTK2_CAIROMM_INCLUDE_DIR} + ${GTK2_CAIROMMCONFIG_INCLUDE_DIR} # <-- not in cmake 2.8.4 + ${GTK2_GIOMM_INCLUDE_DIR} + ${GTK2_GIOMMCONFIG_INCLUDE_DIR} + ${GTK2_SIGC++_INCLUDE_DIR} + ${GTK2_SIGC++CONFIG_INCLUDE_DIR} + ) + + list(APPEND INKSCAPE_LIBS + ${GTK2_GDK_LIBRARY} + ${GTK2_GDKMM_LIBRARY} + ${GTK2_GDK_PIXBUF_LIBRARY} + ${GTK2_GLIB_LIBRARY} + ${GTK2_GLIBMM_LIBRARY} + ${GTK2_GTK_LIBRARY} + ${GTK2_GTKMM_LIBRARY} + ${GTK2_ATK_LIBRARY} + ${GTK2_ATKMM_LIBRARY} + ${GTK2_PANGO_LIBRARY} + ${GTK2_PANGOMM_LIBRARY} + ${GTK2_CAIRO_LIBRARY} + ${GTK2_CAIROMM_LIBRARY} + ${GTK2_GIOMM_LIBRARY} + ${GTK2_SIGC++_LIBRARY} + ${GTK2_GOBJECT_LIBRARY} + ) +endif() find_package(Freetype REQUIRED) list(APPEND INKSCAPE_INCS_SYS ${FREETYPE_INCLUDE_DIRS}) @@ -281,21 +327,21 @@ list(APPEND INKSCAPE_INCS_SYS ${Boost_INCLUDE_DIRS}) find_package(ASPELL) if(ASPELL_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${ASPELL_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${ASPELL_LIBRARIES}) - add_definitions(${ASPELL_DEFINITIONS}) - set(HAVE_ASPELL TRUE) + list(APPEND INKSCAPE_INCS_SYS ${ASPELL_INCLUDE_DIR}) + list(APPEND INKSCAPE_LIBS ${ASPELL_LIBRARIES}) + add_definitions(${ASPELL_DEFINITIONS}) + set(HAVE_ASPELL TRUE) endif() -if(WITH_GTKSPELL) - find_package(GtkSpell) - if(GTKSPELL_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${GTKSPELL_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${GTKSPELL_LIBRARIES}) - add_definitions(${GTKSPELL_DEFINITIONS}) - else() - set(WITH_GTKSPELL OFF) - endif() +if("${TRY_GTKSPELL}" AND "${WITH_GTKSPELL}") + find_package(GtkSpell) + if(GTKSPELL_FOUND) + list(APPEND INKSCAPE_INCS_SYS ${GTKSPELL_INCLUDE_DIR}) + list(APPEND INKSCAPE_LIBS ${GTKSPELL_LIBRARIES}) + add_definitions(${GTKSPELL_DEFINITIONS}) + else() + set(WITH_GTKSPELL OFF) + endif() endif() #find_package(OpenSSL) @@ -313,23 +359,23 @@ list(APPEND INKSCAPE_LIBS ${LIBXML2_LIBRARIES}) add_definitions(${LIBXML2_DEFINITIONS}) if(WITH_OPENMP) - find_package(OpenMP) - if(OPENMP_FOUND) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES") - endif() - mark_as_advanced(OpenMP_C_FLAGS) - mark_as_advanced(OpenMP_CXX_FLAGS) - # '-fopenmp' is in OpenMP_C_FLAGS, OpenMP_CXX_FLAGS and implies '-lgomp' - # uncomment explicit linking below if still needed: - set(HAVE_OPENMP ON) - #list(APPEND INKSCAPE_LIBS "-lgomp") # FIXME - else() - set(HAVE_OPENMP OFF) - set(WITH_OPENMP OFF) + find_package(OpenMP) + if(OPENMP_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode") + set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES") endif() + mark_as_advanced(OpenMP_C_FLAGS) + mark_as_advanced(OpenMP_CXX_FLAGS) + # '-fopenmp' is in OpenMP_C_FLAGS, OpenMP_CXX_FLAGS and implies '-lgomp' + # uncomment explicit linking below if still needed: + set(HAVE_OPENMP ON) + #list(APPEND INKSCAPE_LIBS "-lgomp") # FIXME + else() + set(HAVE_OPENMP OFF) + set(WITH_OPENMP OFF) + endif() endif() find_package(ZLIB REQUIRED) @@ -337,24 +383,36 @@ list(APPEND INKSCAPE_INCS_SYS ${ZLIB_INCLUDE_DIRS}) list(APPEND INKSCAPE_LIBS ${ZLIB_LIBRARIES}) if(WITH_IMAGE_MAGICK) - find_package(ImageMagick COMPONENTS MagickCore Magick++) - if(ImageMagick_FOUND) - # the component-specific paths apparently fail to get detected correctly - # on some linux distros (or with older Cmake versions). - # Use variables which list all include dirs and libraries instead: - list(APPEND INKSCAPE_INCS_SYS ${ImageMagick_INCLUDE_DIRS}) - list(APPEND INKSCAPE_LIBS ${ImageMagick_LIBRARIES}) - # TODO: Cmake's ImageMagick module misses required defines for newer - # versions of ImageMagick. See also: - # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776832 - #add_definitions(-DMAGICKCORE_HDRI_ENABLE=0) # FIXME (version check?) - #add_definitions(-DMAGICKCORE_QUANTUM_DEPTH=16) # FIXME (version check?) - else() - set(WITH_IMAGE_MAGICK OFF) # enable 'Extensions > Raster' - endif() + find_package(ImageMagick COMPONENTS MagickCore Magick++) + if(ImageMagick_FOUND) + # the component-specific paths apparently fail to get detected correctly + # on some linux distros (or with older Cmake versions). + # Use variables which list all include dirs and libraries instead: + list(APPEND INKSCAPE_INCS_SYS ${ImageMagick_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${ImageMagick_LIBRARIES}) + # TODO: Cmake's ImageMagick module misses required defines for newer + # versions of ImageMagick. See also: + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776832 + #add_definitions(-DMAGICKCORE_HDRI_ENABLE=0) # FIXME (version check?) + #add_definitions(-DMAGICKCORE_QUANTUM_DEPTH=16) # FIXME (version check?) + else() + set(WITH_IMAGE_MAGICK OFF) # enable 'Extensions > Raster' + endif() endif() -include(${CMAKE_CURRENT_LIST_DIR}/IncludeJava.cmake) +set(ENABLE_NLS OFF) +if(WITH_NLS) + find_package(Gettext) + if(GETTEXT_FOUND) + message(STATUS "Found gettext + msgfmt to convert language files. Translation enabled") + set(ENABLE_NLS ON) + else(GETTEXT_FOUND) + message(STATUS "Cannot find gettext + msgfmt to convert language file. Translation won't be enabled") + endif(GETTEXT_FOUND) +endif(WITH_NLS) + +find_package(SigC++ REQUIRED) + # end Dependencies list(REMOVE_DUPLICATES INKSCAPE_LIBS) diff --git a/CMakeScripts/HelperFunctions.cmake b/CMakeScripts/HelperFunctions.cmake index 0e6fff51a..f4ed255d5 100644 --- a/CMakeScripts/HelperFunctions.cmake +++ b/CMakeScripts/HelperFunctions.cmake @@ -12,8 +12,23 @@ function(pkg_check_variable _pkg _name) set(_output_name "${_pkg_upper}_${_name_upper}") execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_name} ${_pkg} - OUTPUT_VARIABLE _pkg_result - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_VARIABLE _pkg_result + OUTPUT_STRIP_TRAILING_WHITESPACE) set("${_output_name}" "${_pkg_result}" CACHE STRING "pkg-config variable ${_name} of ${_pkg}") endfunction() + +# Join a cmake list of strings with a given glue character/string +# E.g. join(MY_RESULT, ",", "1; 2; 3;") returns "1, 2, 3" +function(join OUTPUT GLUE) + set(_TMP_RESULT "") + set(_GLUE "") # effective glue is empty at the beginning + foreach(arg ${ARGN}) + # Skip empty lines + if(NOT arg STREQUAL "\n") + set(_TMP_RESULT "${_TMP_RESULT}${_GLUE}${arg}") + set(_GLUE "${GLUE}") + endif() + endforeach() + set(${OUTPUT} "${_TMP_RESULT}" PARENT_SCOPE) +endfunction() diff --git a/CMakeScripts/HelperMacros.cmake b/CMakeScripts/HelperMacros.cmake index f19baf5f2..f2fbed64b 100644 --- a/CMakeScripts/HelperMacros.cmake +++ b/CMakeScripts/HelperMacros.cmake @@ -1,26 +1,26 @@ # A macro to replace slashes and spaces in a string with underscores macro(SANITIZE_PATH _string_var) - string(REGEX REPLACE "[\\/ ]+" "_" ${_string_var} ${${_string_var}}) + string(REGEX REPLACE "[\\/ ]+" "_" ${_string_var} ${${_string_var}}) endmacro() macro(inkscape_source_group sources) - # Group by location on disk - source_group("Source Files" FILES CMakeLists.txt) + # Group by location on disk + source_group("Source Files" FILES CMakeLists.txt) - foreach(_SRC ${sources}) - get_filename_component(_SRC_EXT ${_SRC} EXT) - if((${_SRC_EXT} MATCHES ".h") OR (${_SRC_EXT} MATCHES ".hpp")) - source_group("Header Files" FILES ${_SRC}) - else() - source_group("Source Files" FILES ${_SRC}) - endif() - endforeach() + foreach(_SRC ${sources}) + get_filename_component(_SRC_EXT ${_SRC} EXT) + if((${_SRC_EXT} MATCHES ".h") OR (${_SRC_EXT} MATCHES ".hpp")) + source_group("Header Files" FILES ${_SRC}) + else() + source_group("Source Files" FILES ${_SRC}) + endif() + endforeach() - unset(_SRC) - unset(_SRC_EXT) + unset(_SRC) + unset(_SRC_EXT) endmacro() @@ -29,11 +29,11 @@ macro(add_inkscape_lib name sources) - add_library(${name} ${sources}) + add_library(${name} ${sources}) - # works fine without having the includes - # listed is helpful for IDE's (QtCreator/MSVC) - inkscape_source_group("${sources}") + # works fine without having the includes + # listed is helpful for IDE's (QtCreator/MSVC) + inkscape_source_group("${sources}") endmacro() @@ -44,88 +44,88 @@ set_property(GLOBAL PROPERTY inkscape_global_SRC "") macro (add_inkscape_source sources) - foreach(_SRC ${ARGV}) - get_filename_component(_ABS_SRC ${_SRC} ABSOLUTE) - set_property(GLOBAL APPEND PROPERTY inkscape_global_SRC ${_ABS_SRC}) - endforeach() - unset(_SRC) - unset(_ABS_SRC) + foreach(_SRC ${ARGV}) + get_filename_component(_ABS_SRC ${_SRC} ABSOLUTE) + set_property(GLOBAL APPEND PROPERTY inkscape_global_SRC ${_ABS_SRC}) + endforeach() + unset(_SRC) + unset(_ABS_SRC) endmacro() # A macro to append to the global source property macro (add_inkscape_library sources) - foreach(_SRC ${ARGV}) - get_filename_component(_ABS_SRC ${_SRC} ABSOLUTE) - set_property(GLOBAL APPEND PROPERTY inkscape_global_SRC ${_ABS_SRC}) - endforeach() - unset(_SRC) - unset(_ABS_SRC) + foreach(_SRC ${ARGV}) + get_filename_component(_ABS_SRC ${_SRC} ABSOLUTE) + set_property(GLOBAL APPEND PROPERTY inkscape_global_SRC ${_ABS_SRC}) + endforeach() + unset(_SRC) + unset(_ABS_SRC) endmacro() macro(INKSCAPE_PKG_CONFIG_FIND PREFIX MODNAME VERSION PATH_NAME PATH_SUFFIXE LIB_NAME) - if(VERSION) - pkg_check_modules(_${PREFIX} ${MODNAME}${VERSION}) - else(VERSION) - pkg_check_modules(_${PREFIX} ${MODNAME}) - endif(VERSION) - - find_path(${PREFIX}_INCLUDE_DIR - NAMES - ${PATH_NAME} - PATHS - ${_${PREFIX}_INCLUDEDIR} - /usr/include - /usr/local/include - /opt/local/include - /sw/include - $ENV{DEVLIBS_PATH}//include// - PATH_SUFFIXES - ${PATH_SUFFIXE} + if(VERSION) + pkg_check_modules(_${PREFIX} ${MODNAME}${VERSION}) + else(VERSION) + pkg_check_modules(_${PREFIX} ${MODNAME}) + endif(VERSION) + + find_path(${PREFIX}_INCLUDE_DIR + NAMES + ${PATH_NAME} + PATHS + ${_${PREFIX}_INCLUDEDIR} + /usr/include + /usr/local/include + /opt/local/include + /sw/include + $ENV{DEVLIBS_PATH}//include// + PATH_SUFFIXES + ${PATH_SUFFIXE} ) - find_library(${PREFIX}_LIBRARY - NAMES - ${LIB_NAME} - PATHS - ${_${PREFIX}_LIBDIR} - /usr/lib - /usr/local/lib - /opt/local/lib - /sw/lib + find_library(${PREFIX}_LIBRARY + NAMES + ${LIB_NAME} + PATHS + ${_${PREFIX}_LIBDIR} + /usr/lib + /usr/local/lib + /opt/local/lib + /sw/lib ) - if (${PREFIX}_LIBRARY) - set(${PREFIX}_FOUND TRUE) - set(${PREFIX}_VERSION ${_${PREFIX}_VERSION}) - endif (${PREFIX}_LIBRARY) + if (${PREFIX}_LIBRARY) + set(${PREFIX}_FOUND TRUE) + set(${PREFIX}_VERSION ${_${PREFIX}_VERSION}) + endif (${PREFIX}_LIBRARY) - set(${PREFIX}_INCLUDE_DIRS - ${${PREFIX}_INCLUDE_DIR} + set(${PREFIX}_INCLUDE_DIRS + ${${PREFIX}_INCLUDE_DIR} ) - if (${PREFIX}_FOUND) - set(${PREFIX}_LIBRARIES - ${${PREFIX}_LIBRARIES} - ${${PREFIX}_LIBRARY} - ) - endif (${PREFIX}_FOUND) - - if (${PREFIX}_INCLUDE_DIRS AND ${PREFIX}_LIBRARIES) - set(${PREFIX}_FOUND TRUE) - endif (${PREFIX}_INCLUDE_DIRS AND ${PREFIX}_LIBRARIES) - - if (${PREFIX}_FOUND) - if (NOT ${PREFIX}_FIND_QUIETLY) - message(STATUS "Found ${MODNAME}: ${${PREFIX}_LIBRARIES}") - endif (NOT ${PREFIX}_FIND_QUIETLY) - else (${PREFIX}_FOUND) - if (${PREFIX}_FIND_REQUIRED) - message(FATAL_ERROR "Could not find ${MODNAME}") - endif (${PREFIX}_FIND_REQUIRED) - endif (${PREFIX}_FOUND) - - # show the <PREFIX>_INCLUDE_DIRS and <PREFIX>_LIBRARIES variables only in the advanced view - mark_as_advanced(${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARIES) + if (${PREFIX}_FOUND) + set(${PREFIX}_LIBRARIES + ${${PREFIX}_LIBRARIES} + ${${PREFIX}_LIBRARY} + ) + endif (${PREFIX}_FOUND) + + if (${PREFIX}_INCLUDE_DIRS AND ${PREFIX}_LIBRARIES) + set(${PREFIX}_FOUND TRUE) + endif (${PREFIX}_INCLUDE_DIRS AND ${PREFIX}_LIBRARIES) + + if (${PREFIX}_FOUND) + if (NOT ${PREFIX}_FIND_QUIETLY) + message(STATUS "Found ${MODNAME}: ${${PREFIX}_LIBRARIES}") + endif (NOT ${PREFIX}_FIND_QUIETLY) + else (${PREFIX}_FOUND) + if (${PREFIX}_FIND_REQUIRED) + message(FATAL_ERROR "Could not find ${MODNAME}") + endif (${PREFIX}_FIND_REQUIRED) + endif (${PREFIX}_FOUND) + + # show the <PREFIX>_INCLUDE_DIRS and <PREFIX>_LIBRARIES variables only in the advanced view + mark_as_advanced(${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARIES) endmacro() diff --git a/CMakeScripts/IncludeJava.cmake b/CMakeScripts/IncludeJava.cmake deleted file mode 100644 index 1e20a4ca5..000000000 --- a/CMakeScripts/IncludeJava.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# - include the src/javainc dir in the include path and the correct config path too - - -INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/bind/javainc ) - -IF (WIN32) - INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/bind/javainc/win32 ) -ENDIF (WIN32) -IF (UNIX) - INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/bind/javainc/linux ) -ENDIF (UNIX) -IF (SOLARIS) - INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/bind/javainc/solaris ) -ENDIF (SOLARIS) diff --git a/CMakeScripts/Modules/FindGettext.cmake b/CMakeScripts/Modules/FindGettext.cmake new file mode 100644 index 000000000..753040b40 --- /dev/null +++ b/CMakeScripts/Modules/FindGettext.cmake @@ -0,0 +1,237 @@ +#.rst: +# FindGettext +# ----------- +# +# Find GNU gettext tools +# +# This module looks for the GNU gettext tools. This module defines the +# following values: +# +# :: +# +# GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool. +# GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool. +# GETTEXT_FOUND: True if gettext has been found. +# GETTEXT_VERSION_STRING: the version of gettext found (since CMake 2.8.8) +# +# +# +# Additionally it provides the following macros: +# GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] file1 ... fileN ) +# +# :: +# +# This will create a target "translations" which will convert the +# given input po files into the binary output mo file. If the +# ALL option is used, the translations will also be created when +# building the default target. +# +# GETTEXT_PROCESS_POT( <potfile> [ALL] [INSTALL_DESTINATION <destdir>] +# LANGUAGES <lang1> <lang2> ... ) +# +# :: +# +# Process the given pot file to mo files. +# If INSTALL_DESTINATION is given then automatically install rules will be created, +# the language subdirectory will be taken into account (by default use share/locale/). +# If ALL is specified, the pot file is processed when building the all traget. +# It creates a custom target "potfile". +# +# GETTEXT_PROCESS_PO_FILES( <lang> [ALL] [INSTALL_DESTINATION <dir>] +# PO_FILES <po1> <po2> ... ) +# +# :: +# +# Process the given po files to mo files for the given language. +# If INSTALL_DESTINATION is given then automatically install rules will be created, +# the language subdirectory will be taken into account (by default use share/locale/). +# If ALL is specified, the po files are processed when building the all traget. +# It creates a custom target "pofiles". + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# Copyright 2007 Alexander Neundorf <neundorf@kde.org> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) +#============================================================================= +# This file got changed for Inkscape's purposes to name the .mo files installed with +# GETTEXT_PROCESS_PO_FILES ${CMAKE_PROJECT_NAME}.mo instead of <language>.mo + +find_program(GETTEXT_MSGMERGE_EXECUTABLE msgmerge) + +find_program(GETTEXT_MSGFMT_EXECUTABLE msgfmt) + +if(GETTEXT_MSGMERGE_EXECUTABLE) + execute_process(COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --version + OUTPUT_VARIABLE gettext_version + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if (gettext_version MATCHES "^msgmerge \\(.*\\) [0-9]") + string(REGEX REPLACE "^msgmerge \\([^\\)]*\\) ([0-9\\.]+[^ \n]*).*" "\\1" GETTEXT_VERSION_STRING "${gettext_version}") + endif() + unset(gettext_version) +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gettext + REQUIRED_VARS GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE + VERSION_VAR GETTEXT_VERSION_STRING) + +include(CMakeParseArguments) + +function(_GETTEXT_GET_UNIQUE_TARGET_NAME _name _unique_name) + set(propertyName "_GETTEXT_UNIQUE_COUNTER_${_name}") + get_property(currentCounter GLOBAL PROPERTY "${propertyName}") + if(NOT currentCounter) + set(currentCounter 1) + endif() + set(${_unique_name} "${_name}_${currentCounter}" PARENT_SCOPE) + math(EXPR currentCounter "${currentCounter} + 1") + set_property(GLOBAL PROPERTY ${propertyName} ${currentCounter} ) +endfunction() + +macro(GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg) + # make it a real variable, so we can modify it here + set(_firstPoFile "${_firstPoFileArg}") + + set(_gmoFiles) + get_filename_component(_potName ${_potFile} NAME) + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _potBasename ${_potName}) + get_filename_component(_absPotFile ${_potFile} ABSOLUTE) + + set(_addToAll) + if(${_firstPoFile} STREQUAL "ALL") + set(_addToAll "ALL") + set(_firstPoFile) + endif() + + foreach (_currentPoFile ${_firstPoFile} ${ARGN}) + get_filename_component(_absFile ${_currentPoFile} ABSOLUTE) + get_filename_component(_abs_PATH ${_absFile} PATH) + get_filename_component(_lang ${_absFile} NAME_WE) + set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) + + add_custom_command( + OUTPUT ${_gmoFile} + COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile} + DEPENDS ${_absPotFile} ${_absFile} + ) + + install(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) + set(_gmoFiles ${_gmoFiles} ${_gmoFile}) + + endforeach () + + if(NOT TARGET translations) + add_custom_target(translations) + endif() + + _GETTEXT_GET_UNIQUE_TARGET_NAME(translations uniqueTargetName) + + add_custom_target(${uniqueTargetName} ${_addToAll} DEPENDS ${_gmoFiles}) + + add_dependencies(translations ${uniqueTargetName}) + +endmacro() + + +function(GETTEXT_PROCESS_POT_FILE _potFile) + set(_gmoFiles) + set(_options ALL) + set(_oneValueArgs INSTALL_DESTINATION) + set(_multiValueArgs LANGUAGES) + + CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + + get_filename_component(_potName ${_potFile} NAME) + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _potBasename ${_potName}) + get_filename_component(_absPotFile ${_potFile} ABSOLUTE) + + foreach (_lang ${_parsedArguments_LANGUAGES}) + set(_poFile "${CMAKE_CURRENT_BINARY_DIR}/${_lang}.po") + set(_gmoFile "${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo") + + add_custom_command( + OUTPUT "${_poFile}" + COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_poFile} ${_absPotFile} + DEPENDS ${_absPotFile} + ) + + add_custom_command( + OUTPUT "${_gmoFile}" + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_poFile} + DEPENDS ${_absPotFile} ${_poFile} + ) + + if(_parsedArguments_INSTALL_DESTINATION) + install(FILES ${_gmoFile} DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) + endif() + list(APPEND _gmoFiles ${_gmoFile}) + endforeach () + + if(NOT TARGET potfiles) + add_custom_target(potfiles) + endif() + + _GETTEXT_GET_UNIQUE_TARGET_NAME( potfiles uniqueTargetName) + + if(_parsedArguments_ALL) + add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles}) + else() + add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles}) + endif() + + add_dependencies(potfiles ${uniqueTargetName}) + +endfunction() + + +function(GETTEXT_PROCESS_PO_FILES _lang) + set(_options ALL) + set(_oneValueArgs INSTALL_DESTINATION) + set(_multiValueArgs PO_FILES) + set(_gmoFiles) + + CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + + foreach(_current_PO_FILE ${_parsedArguments_PO_FILES}) + get_filename_component(_name ${_current_PO_FILE} NAME) + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name}) + set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo) + add_custom_command(OUTPUT ${_gmoFile} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS ${_current_PO_FILE} + ) + + if(_parsedArguments_INSTALL_DESTINATION) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES/ RENAME ${CMAKE_PROJECT_NAME}.mo) + endif() + list(APPEND _gmoFiles ${_gmoFile}) + endforeach() + + + if(NOT TARGET pofiles) + add_custom_target(pofiles) + endif() + + _GETTEXT_GET_UNIQUE_TARGET_NAME( pofiles uniqueTargetName) + + if(_parsedArguments_ALL) + add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles}) + else() + add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles}) + endif() + + add_dependencies(pofiles ${uniqueTargetName}) + +endfunction() diff --git a/CMakeScripts/Modules/FindPopplerCairo.cmake b/CMakeScripts/Modules/FindPopplerCairo.cmake index 2565e7bb2..bde884ec6 100644 --- a/CMakeScripts/Modules/FindPopplerCairo.cmake +++ b/CMakeScripts/Modules/FindPopplerCairo.cmake @@ -23,9 +23,9 @@ else (POPPLER_LIBRARIES AND POPPLER_INCLUDE_DIRS) # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig) if (PKG_CONFIG_FOUND) - INKSCAPE_PKG_CONFIG_FIND(POPPLER poppler >=0.5.9 poppler-config.h poppler poppler) + INKSCAPE_PKG_CONFIG_FIND(POPPLER poppler >=0.20.0 poppler-config.h poppler poppler) if (POPPLER_FOUND) - INKSCAPE_PKG_CONFIG_FIND(POPPLER_GLIB poppler-glib >=0.5.9 poppler/glib/poppler.h "" poppler-glib) + INKSCAPE_PKG_CONFIG_FIND(POPPLER_GLIB poppler-glib >=0.20.0 poppler/glib/poppler.h "" poppler-glib) if (POPPLER_GLIB_FOUND) list(APPEND POPPLER_INCLUDE_DIRS ${POPPLER_GLIB_INCLUDE_DIRS}) list(APPEND POPPLER_LIBRARIES ${POPPLER_GLIB_LIBRARIES}) @@ -36,7 +36,7 @@ else (POPPLER_LIBRARIES AND POPPLER_INCLUDE_DIRS) endif (CAIRO_SVG_FOUND) endif (POPPLER_GLIB_FOUND) if (ENABLE_POPPLER_CAIRO) - INKSCAPE_PKG_CONFIG_FIND(POPPLER_CAIRO poppler-cairo >=0.5.9 cairo.h cairo cairo) + INKSCAPE_PKG_CONFIG_FIND(POPPLER_CAIRO poppler-cairo >=0.20.0 cairo.h cairo cairo) if (POPPLER_GLIB_FOUND AND POPPLER_CAIRO_FOUND AND NOT CAIRO_SVG_FOUND) list(APPEND POPPLER_INCLUDE_DIRS ${POPPLER_CAIRO_INCLUDE_DIRS}) list(APPEND POPPLER_LIBRARIES ${POPPLER_CAIRO_LIBRARIES}) diff --git a/CMakeScripts/Modules/FindPotrace.cmake b/CMakeScripts/Modules/FindPotrace.cmake new file mode 100644 index 000000000..9ab995278 --- /dev/null +++ b/CMakeScripts/Modules/FindPotrace.cmake @@ -0,0 +1,62 @@ +# POTRACE_FOUND - system has Potrace +# POTRACE_INCLUDE_DIRS - the Potrace include directory +# POTRACE_LIBRARIES - The libraries needed to use Potrace + +IF (POTRACE_LIBRARIES AND POTRACE_INCLUDE_DIRS) + # in cache already + SET(POTRACE_FOUND TRUE) +ELSE (POTRACE_LIBRARIES AND POTRACE_INCLUDE_DIRS) + FIND_PATH (POTRACE_INCLUDE_DIR + NAMES + potracelib.h + PATHS + /usr/include + /usr/local/include + $ENV{DEVLIBS_PATH}/include + PATH_SUFFIXES + potrace + ) + + FIND_LIBRARY (POTRACE_LIBRARY + NAMES + potrace + libpotrace + PATHS + /usr/lib + /usr/local/lib + $ENV{DEVLIBS_PATH}/lib + ) + + if (POTRACE_LIBRARY) + set (POTRACE_FOUND TRUE) + endif (POTRACE_LIBRARY) + + set (POTRACE_INCLUDE_DIRS + ${POTRACE_INCLUDE_DIR} + ) + + if (POTRACE_FOUND) + set(POTRACE_LIBRARIES + ${POTRACE_LIBRARIES} + ${POTRACE_LIBRARY} + ) + endif (POTRACE_FOUND) + + if (POTRACE_INCLUDE_DIRS AND POTRACE_LIBRARIES) + set(POTRACE_FOUND TRUE) + endif (POTRACE_INCLUDE_DIRS AND POTRACE_LIBRARIES) + + if (POTRACE_FOUND) + if (NOT Potrace_FIND_QUIETLY) + message(STATUS "Found Potrace: ${POTRACE_LIBRARIES}") + endif (NOT Potrace_FIND_QUIETLY) + else (POTRACE_FOUND) + if (Potrace_FIND_REQUIRED) + message(FATAL_ERROR "Could not find potrace") + endif (Potrace_FIND_REQUIRED) + endif (POTRACE_FOUND) + + # show the POTRACE_INCLUDE_DIRS and POTRACE_LIBRARIES variables only in the advanced view + MARK_AS_ADVANCED(POTRACE_INCLUDE_DIRS POTRACE_LIBRARIES) + +endif (POTRACE_LIBRARIES AND POTRACE_INCLUDE_DIRS) diff --git a/CMakeScripts/Modules/FindSigC++.cmake b/CMakeScripts/Modules/FindSigC++.cmake index ed0abc545..8046410b5 100644 --- a/CMakeScripts/Modules/FindSigC++.cmake +++ b/CMakeScripts/Modules/FindSigC++.cmake @@ -13,7 +13,6 @@ # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # - if (SIGC++_LIBRARIES AND SIGC++_INCLUDE_DIRS) # in cache already set(SIGC++_FOUND TRUE) @@ -103,4 +102,25 @@ else (SIGC++_LIBRARIES AND SIGC++_INCLUDE_DIRS) endif (SIGC++_LIBRARIES AND SIGC++_INCLUDE_DIRS) +# Try to add -std=c++11 if needed - see: +# https://bugs.launchpad.net/inkscape/+bug/1488079 + +macro (sigcpp_compile extra_cppflags) + try_compile(SIGCPP_COMPILES_FINE "${CMAKE_BINARY_DIR}/sigcpp-bindir" + SOURCES "${CMAKE_SOURCE_DIR}/CMakeScripts/Modules/sigcpp_test.cpp" + COMPILE_DEFINITIONS ${_SIGC++_CFLAGS} ${extra_cppflags} + LINK_LIBRARIES ${SIGC++_LIBRARIES}) +endmacro() + + +sigcpp_compile("") +if (NOT "${SIGCPP_COMPILES_FINE}") + set (cppflag "-std=c++11") + sigcpp_compile("${cppflag}") + if ("${SIGCPP_COMPILES_FINE}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${cppflag}") + else() + message(FATAL_ERROR "Could not compile against SIGC++") + endif() +endif() diff --git a/CMakeScripts/Modules/sigcpp_test.cpp b/CMakeScripts/Modules/sigcpp_test.cpp new file mode 100644 index 000000000..b4cf2c773 --- /dev/null +++ b/CMakeScripts/Modules/sigcpp_test.cpp @@ -0,0 +1,15 @@ +/* + * Building this using: + + g++ `pkg-config --cflags sigc++-2.0` sigcpp_test.cpp + + Results in an error. + * */ +#include <stddef.h> +#include <string> +#include <sigc++/signal.h> + +int main() +{ + return 0; +} diff --git a/CMakeScripts/Pod2man.cmake b/CMakeScripts/Pod2man.cmake new file mode 100644 index 000000000..3189192de --- /dev/null +++ b/CMakeScripts/Pod2man.cmake @@ -0,0 +1,54 @@ +# Use pod2man to generate manual pages from .pod files + +# Usage: pod2man(<podfile> <release-string> <man-section> <heading-center-text>) +# +# E.g.: pod2man("/path/to/file/mypod.pod" "1.2.3" 1 "My Manual Pages") + +find_program(POD2MAN pod2man) +if(NOT POD2MAN) + message(STATUS "Could not find pod2man - man pages disabled") +endif() + +macro(pod2man PODFILE_FULL RELEASE SECTION CENTER) + get_filename_component(PODFILE ${PODFILE_FULL} NAME) + string(REPLACE "." ";" PODFILE_LIST ${PODFILE}) + list(GET PODFILE_LIST 0 NAME) + list(GET PODFILE_LIST 1 LANG) + string(TOUPPER ${NAME} NAME_UPCASE) + if(${LANG} STREQUAL "pod") + set(LANG "") + endif() + + if(NOT EXISTS ${PODFILE_FULL}) + message(FATAL ERROR "Could not find pod file ${PODFILE_FULL} to generate man page") + endif(NOT EXISTS ${PODFILE_FULL}) + + if(POD2MAN) + if(LANG) + set(MANPAGE_TARGET "man-${NAME}-${LANG}") + set(MANFILE_TEMP "${CMAKE_CURRENT_BINARY_DIR}/man/${NAME}.${LANG}.tmp") + set(MANFILE_FULL "${CMAKE_CURRENT_BINARY_DIR}/man/${NAME}.${LANG}.${SECTION}") + else() + set(MANPAGE_TARGET "man-${NAME}") + set(MANFILE_TEMP "${CMAKE_CURRENT_BINARY_DIR}/man/${NAME}.tmp") + set(MANFILE_FULL "${CMAKE_CURRENT_BINARY_DIR}/man/${NAME}.${SECTION}") + endif() + add_custom_command( + OUTPUT ${MANFILE_TEMP} + COMMAND ${POD2MAN} --utf8 --section="${SECTION}" --center="${CENTER}" + --release="${RELEASE}" --name="${NAME_UPCASE}" "${PODFILE_FULL}" "${MANFILE_TEMP}" + ) + add_custom_command( + OUTPUT ${MANFILE_FULL} + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/fix-roff-punct "${MANFILE_TEMP}" > ${MANFILE_FULL} + DEPENDS ${MANFILE_TEMP} + ) + add_custom_target(${MANPAGE_TARGET} ALL + DEPENDS ${MANFILE_FULL} + ) + install( + FILES ${MANFILE_FULL} + DESTINATION ${CMAKE_INSTALL_PREFIX}/${SHARE_INSTALL}/man/man${SECTION} + ) + endif() +endmacro(pod2man PODFILE NAME SECTION CENTER) diff --git a/CMakeScripts/UseGlibMarshal.cmake b/CMakeScripts/UseGlibMarshal.cmake index c9481a4f6..8fabcaa38 100644 --- a/CMakeScripts/UseGlibMarshal.cmake +++ b/CMakeScripts/UseGlibMarshal.cmake @@ -9,32 +9,32 @@ # GLIB_MARSHAL_OUTPUT_CPP - Result of Generation # GLIB_MARSHAL_OUTPUT_LOCATION - Where we are putting the Output -FIND_PROGRAM(GLIB_MARSHAL_EXECUTABLE NAMES glib-genmarshal PATHS /usr/local/bin ) +find_program(GLIB_MARSHAL_EXECUTABLE NAMES glib-genmarshal PATHS /usr/local/bin ) -MACRO(GLIB_MARSHAL GLIB_MARSHAL_PREFIX GLIB_MARSHAL_FILE GLIB_MARSHAL_OUTPUT_LOCATION) - IF(GLIB_MARSHAL_EXECUTABLE) - SET(GLIB_MARSHAL_OUTPUT_EXTRA_LINE "#include \"${GLIB_MARSHAL_FILE}.h\" \n" ) +macro(GLIB_MARSHAL GLIB_MARSHAL_PREFIX GLIB_MARSHAL_FILE GLIB_MARSHAL_OUTPUT_LOCATION) + if(GLIB_MARSHAL_EXECUTABLE) + set(GLIB_MARSHAL_OUTPUT_EXTRA_LINE "#include \"${GLIB_MARSHAL_FILE}.h\" \n" ) - MESSAGE(STATUS "Generating header and sourcefiles from ${GLIB_MARSHAL_FILE}.list (Glib-Marshal)") - EXECUTE_PROCESS(COMMAND ${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --header ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_FILE}.list - OUTPUT_VARIABLE GLIB_MARSHAL_OUTPUT_HEADER ) - EXECUTE_PROCESS(COMMAND ${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --body ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_FILE}.list - OUTPUT_VARIABLE GLIB_MARSHAL_OUTPUT_CPP ) + message(STATUS "Generating header and sourcefiles from ${GLIB_MARSHAL_FILE}.list (Glib-Marshal)") + execute_process(COMMAND ${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --header ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_FILE}.list + OUTPUT_VARIABLE GLIB_MARSHAL_OUTPUT_HEADER ) + execute_process(COMMAND ${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --body ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_FILE}.list + OUTPUT_VARIABLE GLIB_MARSHAL_OUTPUT_CPP ) # check whether the generated file is the same as the existing one - IF(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h) - FILE(READ ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h GLIB_MARSHAL_HEADER_OLD) - ELSE() - SET(GLIB_MARSHAL_HEADER_OLD "") - ENDIF() - IF(NOT GLIB_MARSHAL_HEADER_OLD STREQUAL GLIB_MARSHAL_OUTPUT_HEADER) - MESSAGE(STATUS "${GLIB_MARSHAL_FILE}.h changed; overwriting") - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h "${GLIB_MARSHAL_OUTPUT_HEADER}") - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.cpp "${GLIB_MARSHAL_OUTPUT_EXTRA_LINE}") - FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.cpp "${GLIB_MARSHAL_OUTPUT_CPP}") - ELSE() - MESSAGE(STATUS "${GLIB_MARSHAL_FILE}.h unchanged") - ENDIF() - ENDIF() -ENDMACRO() + if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h) + file(READ ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h GLIB_MARSHAL_HEADER_OLD) + else() + set(GLIB_MARSHAL_HEADER_OLD "") + endif() + if(NOT GLIB_MARSHAL_HEADER_OLD STREQUAL GLIB_MARSHAL_OUTPUT_HEADER) + message(STATUS "${GLIB_MARSHAL_FILE}.h changed; overwriting") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h "${GLIB_MARSHAL_OUTPUT_HEADER}") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.cpp "${GLIB_MARSHAL_OUTPUT_EXTRA_LINE}") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.cpp "${GLIB_MARSHAL_OUTPUT_CPP}") + else() + message(STATUS "${GLIB_MARSHAL_FILE}.h unchanged") + endif() + endif() +endmacro() diff --git a/CMakeScripts/UsePkgConfig.cmake b/CMakeScripts/UsePkgConfig.cmake index 2de721238..86c2425f7 100644 --- a/CMakeScripts/UsePkgConfig.cmake +++ b/CMakeScripts/UsePkgConfig.cmake @@ -23,97 +23,81 @@ # Calling PKGCONFIG_DEFINITION will fill the definition (e.g -D_REENTRANT) into the argument, # e.g. PKGCONFIG_DEFINITION(libart-2.0 LIBART_DEFINITION) -FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config PATHS /usr/local/bin ) - -MACRO(STRIP_NEWLINES _string_var) - STRING(REGEX REPLACE "[\n\r]+" "" ${_string_var} ${${_string_var}}) -ENDMACRO(STRIP_NEWLINES _string_var) - -MACRO(PKGCONFIG_FOUND _package _found) - # reset the variable at the beginning - SET(${_found}) - -# if pkg-config has been found - IF(PKGCONFIG_EXECUTABLE) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --print-errors --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) +find_program(PKGCONFIG_EXECUTABLE NAMES pkg-config PATHS /usr/local/bin ) + +macro(STRIP_NEWLINES _string_var) + string(REGEX REPLACE "[\n\r]+" "" ${_string_var} ${${_string_var}}) +endmacro(STRIP_NEWLINES _string_var) + +macro(PKGCONFIG_FOUND _package _found) + # reset the variable at the beginning + set(${_found}) + + # if pkg-config has been found + if(PKGCONFIG_EXECUTABLE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --print-errors --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) + if(${_pkgconfigDevNull}) + message(STATUS "${_pkgconfigDevNull}") + endif(${_pkgconfigDevNull}) - IF(${_pkgconfigDevNull}) - MESSAGE(STATUS "${_pkgconfigDevNull}") - ENDIF(${_pkgconfigDevNull}) - - IF(NOT _return_VALUE) - SET(${_found} "TRUE") - ENDIF(NOT _return_VALUE) - ENDIF(PKGCONFIG_EXECUTABLE) - -ENDMACRO(PKGCONFIG_FOUND _found) - -MACRO(PKGCONFIG _package _include_DIR _link_DIR _link_FLAGS _cflags) -# reset the variables at the beginning - SET(${_include_DIR}) - SET(${_link_DIR}) - SET(${_link_FLAGS}) - SET(${_cflags}) - - # if pkg-config has been found - IF(PKGCONFIG_EXECUTABLE) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) + if(NOT _return_VALUE) + set(${_found} "TRUE") + endif(NOT _return_VALUE) + endif(PKGCONFIG_EXECUTABLE) +endmacro(PKGCONFIG_FOUND _found) + +macro(PKGCONFIG _package _include_DIR _link_DIR _link_FLAGS _cflags) + # reset the variables at the beginning + set(${_include_DIR}) + set(${_link_DIR}) + set(${_link_FLAGS}) + set(${_cflags}) + + # if pkg-config has been found + if(PKGCONFIG_EXECUTABLE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) # and if the package of interest also exists for pkg-config, then get the information - IF(NOT _return_VALUE) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=includedir OUTPUT_VARIABLE ${_include_DIR} ) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=libdir OUTPUT_VARIABLE ${_link_DIR} ) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --libs OUTPUT_VARIABLE ${_link_FLAGS} ) - - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --cflags OUTPUT_VARIABLE ${_cflags} ) - - STRIP_NEWLINES(${_cflags}) - - ENDIF(NOT _return_VALUE) - - ENDIF(PKGCONFIG_EXECUTABLE) - -ENDMACRO(PKGCONFIG _include_DIR _link_DIR _link_FLAGS _cflags) - -MACRO(PKGCONFIG_VERSION _package _version) -# reset the variables at the beginning - SET(${_version}) - -# if pkg-config has been found - IF(PKGCONFIG_EXECUTABLE) - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) - -# and if the package of interest also exists for pkg-config, then get the information - IF(NOT _return_VALUE) - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --modversion OUTPUT_VARIABLE ${_version} ) - ENDIF(NOT _return_VALUE) - - ENDIF(PKGCONFIG_EXECUTABLE) - -ENDMACRO(PKGCONFIG_VERSION _package _version) - -MARK_AS_ADVANCED(PKGCONFIG_EXECUTABLE) - -MACRO(PKGCONFIG_DEFINITION _package _definition) -# reset the variables at the beginning - SET(${_definition}) - -# if pkg-config has been found - IF(PKGCONFIG_EXECUTABLE) - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) - -# and if the package of interest also exists for pkg-config, then get the information - IF(NOT _return_VALUE) - EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --cflags-only-other OUTPUT_VARIABLE ${_definition} ) - ENDIF(NOT _return_VALUE) - - ENDIF(PKGCONFIG_EXECUTABLE) - -ENDMACRO(PKGCONFIG_DEFINITION _package _definition) - -MARK_AS_ADVANCED(PKGCONFIG_EXECUTABLE) + if(NOT _return_VALUE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=includedir OUTPUT_VARIABLE ${_include_DIR} ) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=libdir OUTPUT_VARIABLE ${_link_DIR} ) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --libs OUTPUT_VARIABLE ${_link_FLAGS} ) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --cflags OUTPUT_VARIABLE ${_cflags} ) + strip_newlines(${_cflags}) + endif(NOT _return_VALUE) + endif(PKGCONFIG_EXECUTABLE) +endmacro(PKGCONFIG _include_DIR _link_DIR _link_FLAGS _cflags) + +macro(PKGCONFIG_VERSION _package _version) + # reset the variables at the beginning + set(${_version}) + + # if pkg-config has been found + if(PKGCONFIG_EXECUTABLE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) + + # and if the package of interest also exists for pkg-config, then get the information + if(NOT _return_VALUE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --modversion OUTPUT_VARIABLE ${_version} ) + endif(NOT _return_VALUE) + endif(PKGCONFIG_EXECUTABLE) +endmacro(PKGCONFIG_VERSION _package _version) + +mark_as_advanced(PKGCONFIG_EXECUTABLE) + +macro(PKGCONFIG_DEFINITION _package _definition) + # reset the variables at the beginning + set(${_definition}) + + # if pkg-config has been found + if(PKGCONFIG_EXECUTABLE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) + + # and if the package of interest also exists for pkg-config, then get the information + if(NOT _return_VALUE) + exec_program(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --cflags-only-other OUTPUT_VARIABLE ${_definition} ) + endif(NOT _return_VALUE) + endif(PKGCONFIG_EXECUTABLE) +endmacro(PKGCONFIG_DEFINITION _package _definition) + +mark_as_advanced(PKGCONFIG_EXECUTABLE) diff --git a/CMakeScripts/inkscape-version.cmake b/CMakeScripts/inkscape-version.cmake index a72946ac5..cf6cadbc4 100644 --- a/CMakeScripts/inkscape-version.cmake +++ b/CMakeScripts/inkscape-version.cmake @@ -10,25 +10,25 @@ set(INKSCAPE_REVISION "unknown") if(EXISTS ${INKSCAPE_SOURCE_DIR}/.bzr/) - execute_process(COMMAND - bzr revno --tree ${INKSCAPE_SOURCE_DIR} - OUTPUT_VARIABLE INKSCAPE_REVISION - OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND + bzr revno --tree ${INKSCAPE_SOURCE_DIR} + OUTPUT_VARIABLE INKSCAPE_REVISION + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() file(WRITE - ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.txt - # unlike autoconf, include config.h - "#ifdef HAVE_CONFIG_H\n" - "# include <config.h>\n" - "#endif\n" - "\n" - "namespace Inkscape {\n" - " char const *version_string = VERSION \" \" \"${INKSCAPE_REVISION}\";\n" - "}\n") + ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.txt + # unlike autoconf, include config.h + "#ifdef HAVE_CONFIG_H\n" + "# include <config.h>\n" + "#endif\n" + "\n" + "namespace Inkscape {\n" + " char const *version_string = VERSION \" \" \"${INKSCAPE_REVISION}\";\n" + "}\n") # Copy the file to the final header only if the version changes # and avoid needless rebuilds execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.txt - ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp) + ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.txt + ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp) |
