From b7a4f23ed217a36eaaefe8f707bcc1b968d1e562 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 13 Jun 2011 05:39:42 +0000 Subject: cmake: - group source/headers per library (for some IDE's) - include headers with source listing (also for IDE's) - remove unneeded Find modules (bzr r10281) --- CMakeScripts/ConfigChecks.cmake | 17 ++--- CMakeScripts/DefineDependsandFlags.cmake | 121 ++++++++++++++++++++----------- CMakeScripts/FindSSL.cmake | 89 ----------------------- CMakeScripts/FindXML2.cmake | 90 ----------------------- CMakeScripts/FindXSLT.cmake | 90 ----------------------- CMakeScripts/HelperMacros.cmake | 76 ++++++++++++++++--- 6 files changed, 151 insertions(+), 332 deletions(-) delete mode 100644 CMakeScripts/FindSSL.cmake delete mode 100644 CMakeScripts/FindXML2.cmake delete mode 100644 CMakeScripts/FindXSLT.cmake (limited to 'CMakeScripts') diff --git a/CMakeScripts/ConfigChecks.cmake b/CMakeScripts/ConfigChecks.cmake index d20868767..a1c93b374 100644 --- a/CMakeScripts/ConfigChecks.cmake +++ b/CMakeScripts/ConfigChecks.cmake @@ -2,9 +2,9 @@ # From here on: # Set all HAVE_XXX variables, to correctly set all defines in config.h #SET(CMAKE_REQUIRED_INCLUDES ${INK_INCLUDES}) -INCLUDE (CheckIncludeFiles) -INCLUDE (CheckFunctionExists) -INCLUDE (CheckStructMember) +include(CheckIncludeFiles) +include(CheckFunctionExists) +include(CheckStructMember) # usage: CHECK_INCLUDE_FILES (
) # usage: CHECK_FUNCTION_EXISTS ( ) # usage: CHECK_STRUCT_MEMBER (
) @@ -59,13 +59,12 @@ CHECK_INCLUDE_FILES(zlib.h HAVE_ZLIB_H) #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) - SET(RENDER_WITH_PANGO_CAIRO TRUE) -ENDIF(HAVE_CAIRO_PDF) +if(HAVE_CAIRO_PDF) + set(PANGO_ENABLE_ENGINE TRUE) + set(RENDER_WITH_PANGO_CAIRO TRUE) +endif() # Create the two configuration files: config.h and inkscape_version.h # Create them in the binary root dir -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) -FILE(WRITE ${CMAKE_BINARY_DIR}/inkscape_version.h "#define INKSCAPE_VERSION \"${INKSCAPE_VERSION}\"\n") +configure_file(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) add_definitions(-DHAVE_CONFIG_H) diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index 89f33114d..00753e980 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -1,60 +1,97 @@ +# ---------------------------------------------------------------------------- +# Files we include +# ---------------------------------------------------------------------------- + # Include dependencies: find_package(GTK2 COMPONENTS gtk gtkmm REQUIRED) #find_package(GtkMM REQUIRED) find_package(SigC++ REQUIRED) -find_package(XML2 REQUIRED) -find_package(XSLT REQUIRED) find_package(GSL REQUIRED) find_package(ImageMagick++ REQUIRED) -find_package(Freetype2 REQUIRED) +find_package(Freetype2 REQUIRED) # our own find_package(GnomeVFS2) -find_package(Boost REQUIRED) + find_package(BoehmGC REQUIRED) +add_definitions(${BOEHMGC_DEFINITIONS}) + find_package(LibWPG) -find_package(PNG REQUIRED) +find_package(PNG REQUIRED) + find_package(Popt REQUIRED) +add_definitions(${POPT_DEFINITIONS}) + +# ---------------------------------------------------------------------------- +# CMake's builtin +# ---------------------------------------------------------------------------- + +find_package(Boost REQUIRED) + +find_package(ASPELL) +add_definitions(${ASPELL_DEFINITIONS}) + find_package(OpenSSL) -INCLUDE(IncludeJava) + +find_package(LibXslt REQUIRED) +add_definitions(${LIBXSLT_DEFINITIONS}) + +find_package(LibXml2 REQUIRED) +add_definitions(${LIBXML2_DEFINITIONS}) + +find_package(OpenMP REQUIRED) # cmake's +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) + +include(IncludeJava) # end Dependencies -#Linking -LIST(APPEND INKSCAPE_LIBS -# ${GTK2_LIBRARIES} -# ${SIGC++_LIBRARIES} -# ${GSL_LIBRARIES} -# ${XML2_LIBRARIES} -# ${XSLT_LIBRARIES} -# ${IMAGEMAGICK++_LIBRARIES} -# ${FREETYPE2_LIBRARIES} -# ${GNOMEVFS2_LIBRARIES} -# ${BOOST_LIBRARIES} -# ${BOEHMGC_LIBRARIES} -# ${PNG_LIBRARIES} -# ${POPT_LIBRARIES} -# ${OPENSSL_LIBRARIES} + +# Linking +list(APPEND INKSCAPE_LIBS + # ${GTK2_LIBRARIES} + # ${SIGC++_LIBRARIES} + # ${GSL_LIBRARIES} + ${LIBXML2_LIBRARIES} + ${LIBXSLT_LIBRARIES} + # ${IMAGEMAGICK++_LIBRARIES} + ${FREETYPE2_LIBRARIES} + # ${GNOMEVFS2_LIBRARIES} + ${Boost_LIBRARIES} + ${BOEHMGC_LIBRARIES} + ${PNG_LIBRARIES} + ${POPT_LIBRARIES} + ${OPENSSL_LIBRARIES} + ${ASPELL_LIBRARIES} ) -#Includes -SET(INK_INCLUDES -${CMAKE_BINARY_DIR} -${PROJECT_SOURCE_DIR} -${PROJECT_SOURCE_DIR}/src -${GTK2_INCLUDE_DIRS} -${SIGC++_INCLUDE_DIRS} -${GSL_INCLUDE_DIRS} -${XML2_INCLUDE_DIRS} -${XSLT_INCLUDE_DIRS} -${IMAGEMAGICK++_INCLUDE_DIRS} -${FREETYPE2_INCLUDE_DIRS} -${GNOMEVFS2_INCLUDE_DIRS} -${BOOST_INCLUDE_DIRS} -${BOEHMGC_INCLUDE_DIRS} -${PNG_INCLUDE_DIRS} -${POPT_INCLUDE_DIRS} -${OPENSSL_INCLUDE_DIRS} + +# Includes +set(INK_INCLUDES + ${CMAKE_BINARY_DIR} + ${PROJECT_SOURCE_DIR} + ${PROJECT_SOURCE_DIR}/src + ${GTK2_INCLUDE_DIRS} + ${SIGC++_INCLUDE_DIRS} + ${GSL_INCLUDE_DIRS} + ${LIBXML2_INCLUDE_DIR} + ${LIBXSLT_INCLUDE_DIR} + ${IMAGEMAGICK++_INCLUDE_DIRS} + ${FREETYPE2_INCLUDE_DIRS} + ${GNOMEVFS2_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} + ${BOEHMGC_INCLUDE_DIRS} + ${PNG_INCLUDE_DIR} + ${POPT_INCLUDE_DIRS} + ${OPENSSL_INCLUDE_DIR} + ${ASPELL_INCLUDE_DIR} ) -#C/C++ Flags -INCLUDE_DIRECTORIES(${INK_INCLUDES}) -INCLUDE(ConfigChecks) +# C/C++ Flags +include_directories(${INK_INCLUDES}) + +include(ConfigChecks) diff --git a/CMakeScripts/FindSSL.cmake b/CMakeScripts/FindSSL.cmake deleted file mode 100644 index 7a2671699..000000000 --- a/CMakeScripts/FindSSL.cmake +++ /dev/null @@ -1,89 +0,0 @@ -# - Try to find SSL -# Once done this will define -# -# SSL_FOUND - system has SSL -# SSL_INCLUDE_DIRS - the SSL include directory -# SSL_LIBRARIES - Link these to use SSL -# SSL_DEFINITIONS - Compiler switches required for using SSL -# -# Copyright (c) 2008 Joshua L. Blocher -# -# Redistribution and use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -# - - -if (SSL_LIBRARIES AND SSL_INCLUDE_DIRS) - # in cache already - set(SSL_FOUND TRUE) -else (SSL_LIBRARIES AND SSL_INCLUDE_DIRS) - # use pkg-config to get the directories and then use these values - # in the FIND_PATH() and FIND_LIBRARY() calls - if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - include(UsePkgConfig) - pkgconfig(libssl _SSL_INCLUDEDIR _SSL_LIBDIR _SSL_LDFLAGS _SSL_CFLAGS) - else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(_SSL libssl) - endif (PKG_CONFIG_FOUND) - endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_path(SSL_INCLUDE_DIR - NAMES - ssl.h - PATHS - ${_SSL_INCLUDEDIR} - /usr/include - /usr/local/include - /opt/local/include - /sw/include - PATH_SUFFIXES - openssl - ) - - find_library(SSL_LIBRARY - NAMES - ssl - PATHS - ${_SSL_LIBDIR} - /usr/lib - /usr/local/lib - /opt/local/lib - /sw/lib - ) - - if (SSL_LIBRARY) - set(SSL_FOUND TRUE) - endif (SSL_LIBRARY) - - set(SSL_INCLUDE_DIRS - ${SSL_INCLUDE_DIR} - ) - - if (SSL_FOUND) - set(SSL_LIBRARIES - ${SSL_LIBRARIES} - ${SSL_LIBRARY} - ) - endif (SSL_FOUND) - - if (SSL_INCLUDE_DIRS AND SSL_LIBRARIES) - set(SSL_FOUND TRUE) - endif (SSL_INCLUDE_DIRS AND SSL_LIBRARIES) - - if (SSL_FOUND) - if (NOT SSL_FIND_QUIETLY) - message(STATUS "Found SSL: ${SSL_LIBRARIES}") - endif (NOT SSL_FIND_QUIETLY) - else (SSL_FOUND) - if (SSL_FIND_REQUIRED) - message(FATAL_ERROR "Could not find SSL") - endif (SSL_FIND_REQUIRED) - endif (SSL_FOUND) - - # show the SSL_INCLUDE_DIRS and SSL_LIBRARIES variables only in the advanced view - mark_as_advanced(SSL_INCLUDE_DIRS SSL_LIBRARIES) - -endif (SSL_LIBRARIES AND SSL_INCLUDE_DIRS) - diff --git a/CMakeScripts/FindXML2.cmake b/CMakeScripts/FindXML2.cmake deleted file mode 100644 index 1e2b0d3af..000000000 --- a/CMakeScripts/FindXML2.cmake +++ /dev/null @@ -1,90 +0,0 @@ -# - Try to find XML2 -# Once done this will define -# -# XML2_FOUND - system has XML2 -# XML2_INCLUDE_DIRS - the XML2 include directory -# XML2_LIBRARIES - Link these to use XML2 -# XML2_DEFINITIONS - Compiler switches required for using XML2 -# -# Copyright (c) 2008 Joshua L. Blocher -# -# Redistribution and use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -# - - -if (XML2_LIBRARIES AND XML2_INCLUDE_DIRS) - # in cache already - set(XML2_FOUND TRUE) -else (XML2_LIBRARIES AND XML2_INCLUDE_DIRS) - # use pkg-config to get the directories and then use these values - # in the FIND_PATH() and FIND_LIBRARY() calls - if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - include(UsePkgConfig) - pkgconfig(libxml-2.0 _XML2_INCLUDEDIR _XML2_LIBDIR _XML2_LDFLAGS _XML2_CFLAGS) - else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(_XML2 libxml-2.0) - endif (PKG_CONFIG_FOUND) - endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_path(XML2_INCLUDE_DIR - NAMES - libxml/xmlunicode.h - PATHS - ${_XML2_INCLUDEDIR} - /usr/include - /usr/local/include - /opt/local/include - /sw/include - $ENV{DEVLIBS_PATH}//include// - PATH_SUFFIXES - libxml2 - ) - - find_library(XML2_LIBRARY - NAMES - xml2 - PATHS - ${_XML2_LIBDIR} - /usr/lib - /usr/local/lib - /opt/local/lib - /sw/lib - ) - - if (XML2_LIBRARY) - set(XML2_FOUND TRUE) - endif (XML2_LIBRARY) - - set(XML2_INCLUDE_DIRS - ${XML2_INCLUDE_DIR} - ) - - if (XML2_FOUND) - set(XML2_LIBRARIES - ${XML2_LIBRARIES} - ${XML2_LIBRARY} - ) - endif (XML2_FOUND) - - if (XML2_INCLUDE_DIRS AND XML2_LIBRARIES) - set(XML2_FOUND TRUE) - endif (XML2_INCLUDE_DIRS AND XML2_LIBRARIES) - - if (XML2_FOUND) - if (NOT XML2_FIND_QUIETLY) - message(STATUS "Found XML2: ${XML2_LIBRARIES}") - endif (NOT XML2_FIND_QUIETLY) - else (XML2_FOUND) - if (XML2_FIND_REQUIRED) - message(FATAL_ERROR "Could not find XML2") - endif (XML2_FIND_REQUIRED) - endif (XML2_FOUND) - - # show the XML2_INCLUDE_DIRS and XML2_LIBRARIES variables only in the advanced view - mark_as_advanced(XML2_INCLUDE_DIRS XML2_LIBRARIES) - -endif (XML2_LIBRARIES AND XML2_INCLUDE_DIRS) - diff --git a/CMakeScripts/FindXSLT.cmake b/CMakeScripts/FindXSLT.cmake deleted file mode 100644 index bda46e640..000000000 --- a/CMakeScripts/FindXSLT.cmake +++ /dev/null @@ -1,90 +0,0 @@ -# - Try to find XSLT -# Once done this will define -# -# XSLT_FOUND - system has XSLT -# XSLT_INCLUDE_DIRS - the XSLT include directory -# XSLT_LIBRARIES - Link these to use XSLT -# XSLT_DEFINITIONS - Compiler switches required for using XSLT -# -# Copyright (c) 2008 Joshua L. Blocher -# -# Redistribution and use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -# - - -if (XSLT_LIBRARIES AND XSLT_INCLUDE_DIRS) - # in cache already - set(XSLT_FOUND TRUE) -else (XSLT_LIBRARIES AND XSLT_INCLUDE_DIRS) - # use pkg-config to get the directories and then use these values - # in the FIND_PATH() and FIND_LIBRARY() calls - if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - include(UsePkgConfig) - pkgconfig(libxslt _XSLT_INCLUDEDIR _XSLT_LIBDIR _XSLT_LDFLAGS _XSLT_CFLAGS) - else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(_XSLT libxslt) - endif (PKG_CONFIG_FOUND) - endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_path(XSLT_INCLUDE_DIR - NAMES - xslt.h - PATHS - ${_XSLT_INCLUDEDIR} - /usr/include - /usr/local/include - /opt/local/include - /sw/include - $ENV{DEVLIBS_PATH}//include// - PATH_SUFFIXES - libxslt - ) - - find_library(XSLT_LIBRARY - NAMES - xslt - PATHS - ${_XSLT_LIBDIR} - /usr/lib - /usr/local/lib - /opt/local/lib - /sw/lib - ) - - if (XSLT_LIBRARY) - set(XSLT_FOUND TRUE) - endif (XSLT_LIBRARY) - - set(XSLT_INCLUDE_DIRS - ${XSLT_INCLUDE_DIR} - ) - - if (XSLT_FOUND) - set(XSLT_LIBRARIES - ${XSLT_LIBRARIES} - ${XSLT_LIBRARY} - ) - endif (XSLT_FOUND) - - if (XSLT_INCLUDE_DIRS AND XSLT_LIBRARIES) - set(XSLT_FOUND TRUE) - endif (XSLT_INCLUDE_DIRS AND XSLT_LIBRARIES) - - if (XSLT_FOUND) - if (NOT XSLT_FIND_QUIETLY) - message(STATUS "Found XSLT: ${XSLT_LIBRARIES}") - endif (NOT XSLT_FIND_QUIETLY) - else (XSLT_FOUND) - if (XSLT_FIND_REQUIRED) - message(FATAL_ERROR "Could not find XSLT") - endif (XSLT_FIND_REQUIRED) - endif (XSLT_FOUND) - - # show the XSLT_INCLUDE_DIRS and XSLT_LIBRARIES variables only in the advanced view - mark_as_advanced(XSLT_INCLUDE_DIRS XSLT_LIBRARIES) - -endif (XSLT_LIBRARIES AND XSLT_INCLUDE_DIRS) - diff --git a/CMakeScripts/HelperMacros.cmake b/CMakeScripts/HelperMacros.cmake index dd8c25f00..592e962c7 100644 --- a/CMakeScripts/HelperMacros.cmake +++ b/CMakeScripts/HelperMacros.cmake @@ -1,13 +1,65 @@ # A macro to replace slashes and spaces in a string with underscores -MACRO(SANITIZE_PATH _string_var) - STRING(REGEX REPLACE "[\\/ ]+" "_" ${_string_var} ${${_string_var}}) -ENDMACRO(SANITIZE_PATH _string_var) - -# A macro to prepend a given string onto the beginning of each string in a list -MACRO(PREPEND _list _str) - SET(_temp_list ${${_list}}) - SET(${_list}) - FOREACH(x ${_temp_list}) - SET(${_list} ${${_list}} ${_str}${x}) - ENDFOREACH(x) -ENDMACRO(PREPEND _list _str) +macro(SANITIZE_PATH _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) + + 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) +endmacro() + + +# only MSVC uses SOURCE_GROUP +macro(add_inkscape_lib + name + sources) + + add_library(${name} ${sources}) + + # works fine without having the includes + # listed is helpful for IDE's (QtCreator/MSVC) + inkscape_source_group("${sources}") + +endmacro() + + +# A macro to append to the global source property +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) +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) +endmacro() -- cgit v1.2.3