[kgraphviewer-devel] extragear/graphics/kgraphviewer
Milian Wolff
mail at milianw.de
Wed Jul 7 23:52:50 CEST 2010
SVN commit 1147323 by mwolff:
use better FindGraphViz and adapt cmake to it
M +3 -3 CMakeLists.txt
M +134 -41 cmake/FindGraphViz.cmake
M +2 -2 src/part/CMakeLists.txt
--- trunk/extragear/graphics/kgraphviewer/CMakeLists.txt #1147322:1147323
@@ -16,15 +16,15 @@
find_package(Boost 1.36 REQUIRED)
find_package(GraphViz REQUIRED)
-if(NOT GRAPHVIZ_DOT_EXECUTABLE)
+if(NOT DOT)
MESSAGE(STATUS "GraphViz not found. You will need it at runtime")
-endif(NOT GRAPHVIZ_DOT_EXECUTABLE)
+endif(NOT DOT)
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS} -DQT3_SUPPORT)
remove_definitions(-DQT_NO_STL)
-include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${Boost_INCLUDE_DIR})
+include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES})
configure_file (config-kgraphviewer.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kgraphviewer.h )
--- trunk/extragear/graphics/kgraphviewer/cmake/FindGraphViz.cmake #1147322:1147323
@@ -1,56 +1,149 @@
-# - Try to find GraphViz
-# Once done this will define
+# This cmake file comes from MOAB:
+# MOAB, a Mesh-Oriented datABase, is a software component for creating,
+# storing and accessing finite element mesh data.
#
-# GRAPHVIZ_FOUND - System has GraphViz
-# GRAPHVIZ_INCLUDE_DIR - The GraphViz include directory
-# GRAPHVIZ_LIBRARIES - The libraries needed to use GraphViz
-# GRAPHVIZ_DEFINITIONS - Compiler switches required for using GraphViz
-# GRAPHVIZ_DOT_EXECUTABLE - The Dot executable
-
-# Copyright (c) 2010, Milian Wolff <mail at milianw.de>
+# Copyright 2004 Sandia Corporation. Under the terms of Contract
+# DE-AC04-94AL85000 with Sandia Coroporation, the U.S. Government
+# retains certain rights in this software.
#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details. A copy of the full
+# GNU Lesser General Public License can be found at
+# http://www.gnu.org/copyleft/lesser.html.
+#
+# For more information, contact the authors of this software at
+# moab at sandia.gov.
+if ( NOT WIN32 )
-IF (GRAPHVIZ_INCLUDE_DIR AND GRAPHVIZ_LIBRARIES)
- # in cache already
- SET(GraphViz_FIND_QUIETLY TRUE)
-ENDIF (GRAPHVIZ_INCLUDE_DIR AND GRAPHVIZ_LIBRARIES)
+ find_package(PkgConfig)
+ pkg_check_modules( graphviz ${REQUIRED} libgvc libcdt libgraph libpathplan )
+ if ( graphviz_FOUND )
+ set ( graphviz_INCLUDE_DIRECTORIES ${graphviz_INCLUDE_DIRS} )
+ endif ( graphviz_FOUND )
-IF (NOT WIN32)
- # use pkg-config to get the directories and then use these values
- # in the FIND_PATH() and FIND_LIBRARY() calls
- FIND_PACKAGE(PkgConfig)
- PKG_CHECK_MODULES(PC_GRAPHVIZ QUIET libgraph)
- SET(GRAPHVIZ_DEFINITIONS ${PC_GRAPHVIZ_CFLAGS_OTHER})
-ENDIF (NOT WIN32)
+endif ( NOT WIN32 )
-FIND_PATH(GRAPHVIZ_INCLUDE_DIR graphviz/graph.h
- HINTS
- ${PC_GRAPHVIZ_INCLUDEDIR}
- ${PC_GRAPHVIZ_INCLUDE_DIRS}
- PATH_SUFFIXES graphviz
+find_path( graphviz_INCLUDE_DIRECTORIES
+ NAMES gvc.h
+ PATHS
+ ${graphviz_INCLUDE_DIRS}
+ /usr/local/include
+ /usr/include
)
-FOREACH(LIB gvc graph pathplan cdt)
- FIND_LIBRARY(temp_${LIB} NAMES ${LIB}
- HINTS
- ${PC_GRAPHVIZ_LIBDIR}
- ${PC_GRAPHVIZ_LIBRARY_DIRS}
+ find_library( graphviz_GVC_LIBRARY
+ NAMES gvc
+ PATHS
+ ${graphviz_LIBRARY_DIRS}
+ /usr/local/lib64
+ /usr/lib64
+ /usr/local/lib
+ /usr/lib
)
- list(APPEND GRAPHVIZ_LIBRARIES ${temp_${LIB}})
-ENDFOREACH(LIB gvc graph pathplan cdt)
+ find_library( graphviz_CDT_LIBRARY
+ NAMES cdt
+ PATHS
+ ${graphviz_LIBRARY_DIRS}
+ /usr/local/lib64
+ /usr/lib64
+ /usr/local/lib
+ /usr/lib
+ )
+ find_library( graphviz_GRAPH_LIBRARY
+ NAMES graph
+ PATHS
+ ${graphviz_LIBRARY_DIRS}
+ /usr/local/lib64
+ /usr/lib64
+ /usr/local/lib
+ /usr/lib
+ )
+ find_library( graphviz_PATHPLAN_LIBRARY
+ NAMES pathplan
+ PATHS
+ ${graphviz_LIBRARY_DIRS}
+ /usr/local/lib64
+ /usr/lib64
+ /usr/local/lib
+ /usr/lib
+ )
+ if ( graphviz_INCLUDE_DIRECTORIES AND
+ graphviz_GVC_LIBRARY AND graphviz_CDT_LIBRARY AND
+ graphviz_GRAPH_LIBRARY AND graphviz_PATHPLAN_LIBRARY )
+ set ( graphviz_FOUND 1 )
+ set ( graphviz_LIBRARIES
+ "${graphviz_GVC_LIBRARY};${graphviz_GRAPH_LIBRARY};"
+ "${graphviz_CDT_LIBRARY};${graphviz_PATHPLAN_LIBRARY}"
+ CACHE FILEPATH "Libraries for graphviz" )
+ else ( graphviz_INCLUDE_DIRECTORIES AND
+ graphviz_GVC_LIBRARY AND graphviz_CDT_LIBRARY AND
+ graphviz_GRAPH_LIBRARY AND graphviz_PATHPLAN_LIBRARY )
+ set ( graphviz_FOUND 0 )
+ endif ( graphviz_INCLUDE_DIRECTORIES AND
+ graphviz_GVC_LIBRARY AND graphviz_CDT_LIBRARY AND
+ graphviz_GRAPH_LIBRARY AND graphviz_PATHPLAN_LIBRARY )
-MESSAGE(STATUS ${GRAPHVIZ_LIBRARIES})
-FIND_PROGRAM(GRAPHVIZ_DOT_EXECUTABLE dot )
+find_program(DOT dot)
-INCLUDE(FindPackageHandleStandardArgs)
+if (DOT)
-# handle the QUIETLY and REQUIRED arguments and set GRAPHVIZ_FOUND to TRUE if
-# all listed variables are TRUE
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GraphViz DEFAULT_MSG GRAPHVIZ_LIBRARIES GRAPHVIZ_INCLUDE_DIR)
+EXECUTE_PROCESS(COMMAND dot -V
+ OUTPUT_VARIABLE _dot_query_output
+ RESULT_VARIABLE _dot_result
+ ERROR_VARIABLE _dot_query_output )
-MARK_AS_ADVANCED(GRAPHVIZ_INCLUDE_DIR GRAPHVIZ_LIBRARIES GRAPHVIZ_XMLLINT_EXECUTABLE)
+IF(_dot_result MATCHES 0)
+ STRING(REGEX REPLACE ".*([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" GRAPHVIZVERSION "${_dot_query_output}" )
+ELSE(_dot_result MATCHES 0)
+ SET(_dot_query_output)
+ENDIF(_dot_result MATCHES 0)
+IF (GRAPHVIZVERSION)
+# we need at least version 2.22.0
+IF (NOT GRAPHVIZ_MIN_VERSION)
+SET(GRAPHVIZ_MIN_VERSION "2.22.0")
+ENDIF (NOT GRAPHVIZ_MIN_VERSION)
+
+#now parse the parts of the user given version string into variables
+STRING(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" req_graphviz_major_vers "${GRAPHVIZ_MIN_VERSION}")
+IF (NOT req_graphviz_major_vers)
+MESSAGE( FATAL_ERROR "Invalid GraphViz version string given: \"${GRAPHVIZ_MIN_VERSION}\", expected e.g. \"2.22.0\"")
+ENDIF (NOT req_graphviz_major_vers)
+
+# now parse the parts of the user given version string into variables
+STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_graphviz_major_vers "${GRAPHVIZ_MIN_VERSION}")
+STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" req_graphviz_minor_vers "${GRAPHVIZ_MIN_VERSION}")
+STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_graphviz_patch_vers "${GRAPHVIZ_MIN_VERSION}")
+
+IF (NOT req_graphviz_major_vers EQUAL 2)
+MESSAGE( FATAL_ERROR "Invalid GraphViz version string given: \"${GRAPHVIZ_MIN_VERSION}\", major version 4 is required, e.g. \"2.22.0\"")
+ENDIF (NOT req_graphviz_major_vers EQUAL 2)
+
+# and now the version string given by qmake
+STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" GRAPHVIZ_VERSION_MAJOR "${GRAPHVIZVERSION}")
+STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1" GRAPHVIZ_VERSION_MINOR "${GRAPHVIZVERSION}")
+STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" GRAPHVIZ_VERSION_PATCH "${GRAPHVIZVERSION}")
+
+# compute an overall version number which can be compared at once
+MATH(EXPR req_vers "${req_graphviz_major_vers}*10000 + ${req_graphviz_minor_vers}*100 + ${req_graphviz_patch_vers}")
+MATH(EXPR found_vers "${GRAPHVIZ_VERSION_MAJOR}*10000 + ${GRAPHVIZ_VERSION_MINOR}*100 + ${GRAPHVIZ_VERSION_PATCH}")
+
+IF (found_vers LESS req_vers)
+SET(graphviz_FOUND FALSE)
+SET(GRAPHVIZ_INSTALLED_VERSION_TOO_OLD TRUE)
+ELSE (found_vers LESS req_vers)
+SET(graphviz_FOUND TRUE)
+ENDIF (found_vers LESS req_vers)
+ENDIF (GRAPHVIZVERSION)
+
+
+endif (DOT)
--- trunk/extragear/graphics/kgraphviewer/src/part/CMakeLists.txt #1147322:1147323
@@ -1,4 +1,4 @@
-include_directories( ../ ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS} )
+include_directories( ../ ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS} ${graphviz_INCLUDE_DIRECTORIES} )
link_directories(${CMAKE_BINARY_DIR}/lib)
@@ -16,7 +16,7 @@
kde4_add_library(kgraphviewerlib SHARED ${kgraphviewerlib_LIB_SRCS})
add_definitions(-DQT_STL)
-target_link_libraries(kgraphviewerlib ${QT_QTXML_LIBRARY} ${QT_QTSVG_LIBRARY} ${KDE4_KDE3SUPPORT_LIBS} ${KDE4_KHTML_LIBS} ${KDE4_KWALLETCLIENT_LIBS} ${KDE4_KDESU_LIBS} ${GRAPHVIZ_LIBRARIES})
+target_link_libraries(kgraphviewerlib ${QT_QTXML_LIBRARY} ${QT_QTSVG_LIBRARY} ${KDE4_KDE3SUPPORT_LIBS} ${KDE4_KHTML_LIBS} ${KDE4_KWALLETCLIENT_LIBS} ${KDE4_KDESU_LIBS} ${graphviz_LIBRARIES})
set_target_properties(kgraphviewerlib PROPERTIES VERSION 2.0.90
SOVERSION 3 )
More information about the kgraphviewer-devel
mailing list