Changeset View
Changeset View
Standalone View
Standalone View
cmake/FindGraphviz.cmake
Show All 20 Lines | |||||
21 | # For more information, contact the authors of this software at | 21 | # For more information, contact the authors of this software at | ||
22 | # moab@sandia.gov. | 22 | # moab@sandia.gov. | ||
23 | # | 23 | # | ||
24 | # this will set the following variables: | 24 | # this will set the following variables: | ||
25 | # graphviz_LIBRARIES | 25 | # graphviz_LIBRARIES | ||
26 | # graphviz_FOUND | 26 | # graphviz_FOUND | ||
27 | # graphviz_INCLUDE_DIRECTORIES | 27 | # graphviz_INCLUDE_DIRECTORIES | ||
28 | 28 | | |||
29 | if ( NOT WIN32 ) | | |||
30 | | ||||
31 | find_package(PkgConfig) | 29 | find_package(PkgConfig) | ||
32 | pkg_check_modules( graphviz ${REQUIRED} libgvc libcdt libcgraph libpathplan ) | 30 | pkg_check_modules(pc_graphviz ${REQUIRED} libgvc libcdt libcgraph libpathplan) | ||
33 | if ( graphviz_FOUND ) | | |||
34 | set ( graphviz_INCLUDE_DIRECTORIES ${graphviz_INCLUDE_DIRS} ) | | |||
35 | endif ( graphviz_FOUND ) | | |||
36 | | ||||
37 | endif ( NOT WIN32 ) | | |||
38 | 31 | | |||
39 | find_path( graphviz_INCLUDE_DIRECTORIES | 32 | find_path(graphviz_INCLUDE_DIRECTORIES | ||
40 | NAMES gvc.h | 33 | NAMES gvc.h | ||
41 | PATHS | 34 | HINTS ${pc_graphviz_INCLUDEDIR} | ||
42 | ${graphviz_INCLUDE_DIRS} | 35 | ${pc_graphviz_INCLUDE_DIRS} | ||
43 | /usr/local/include | | |||
44 | /usr/include | | |||
45 | PATH_SUFFIXES graphviz | | |||
46 | ) | 36 | ) | ||
47 | 37 | | |||
48 | find_library( graphviz_GVC_LIBRARY | 38 | find_library(graphviz_GVC_LIBRARY | ||
49 | NAMES gvc | 39 | NAMES gvc | ||
50 | PATHS | 40 | HINTS ${pc_graphviz_LIBDIR} | ||
51 | ${graphviz_LIBRARY_DIRS} | 41 | ${pc_graphviz_LIBRARY_DIRS} | ||
52 | /usr/local/lib64 | | |||
53 | /usr/lib64 | | |||
54 | /usr/local/lib | | |||
55 | /usr/lib | | |||
56 | ) | 42 | ) | ||
57 | 43 | | |||
58 | find_library( graphviz_CDT_LIBRARY | 44 | find_library(graphviz_CDT_LIBRARY | ||
59 | NAMES cdt | 45 | NAMES cdt | ||
60 | PATHS | 46 | HINTS ${pc_graphviz_LIBDIR} | ||
61 | ${graphviz_LIBRARY_DIRS} | 47 | ${pc_graphviz_LIBRARY_DIRS} | ||
62 | /usr/local/lib64 | | |||
63 | /usr/lib64 | | |||
64 | /usr/local/lib | | |||
65 | /usr/lib | | |||
66 | ) | 48 | ) | ||
67 | 49 | | |||
68 | find_library( graphviz_GRAPH_LIBRARY | 50 | find_library(graphviz_GRAPH_LIBRARY | ||
69 | NAMES cgraph | 51 | NAMES cgraph | ||
70 | PATHS | 52 | HINTS ${pc_graphviz_LIBDIR} | ||
71 | ${graphviz_LIBRARY_DIRS} | 53 | ${pc_graphviz_LIBRARY_DIRS} | ||
72 | /usr/local/lib64 | | |||
73 | /usr/lib64 | | |||
74 | /usr/local/lib | | |||
75 | /usr/lib | | |||
76 | ) | 54 | ) | ||
77 | 55 | | |||
78 | find_library( graphviz_PATHPLAN_LIBRARY | 56 | find_library(graphviz_PATHPLAN_LIBRARY | ||
79 | NAMES pathplan | 57 | NAMES pathplan | ||
80 | PATHS | 58 | HINTS ${pc_graphviz_LIBDIR} | ||
81 | ${graphviz_LIBRARY_DIRS} | 59 | ${pc_graphviz_LIBRARY_DIRS} | ||
82 | /usr/local/lib64 | | |||
83 | /usr/lib64 | | |||
84 | /usr/local/lib | | |||
85 | /usr/lib | | |||
86 | ) | 60 | ) | ||
87 | 61 | | |||
88 | if ( graphviz_INCLUDE_DIRECTORIES AND | | |||
89 | graphviz_GVC_LIBRARY AND graphviz_CDT_LIBRARY AND | | |||
90 | graphviz_GRAPH_LIBRARY AND graphviz_PATHPLAN_LIBRARY ) | | |||
91 | set ( graphviz_FOUND 1 ) | | |||
92 | set ( graphviz_LIBRARIES | 62 | set(graphviz_LIBRARIES | ||
93 | "${graphviz_GVC_LIBRARY};${graphviz_GRAPH_LIBRARY};" | 63 | "${graphviz_GVC_LIBRARY}" "${graphviz_CDT_LIBRARY}" | ||
94 | "${graphviz_CDT_LIBRARY};${graphviz_PATHPLAN_LIBRARY}" | 64 | "${graphviz_GRAPH_LIBRARY}" "${graphviz_PATHPLAN_LIBRARY}") | ||
95 | CACHE FILEPATH "Libraries for graphviz" ) | | |||
96 | else ( graphviz_INCLUDE_DIRECTORIES AND | | |||
97 | graphviz_GVC_LIBRARY AND graphviz_CDT_LIBRARY AND | | |||
98 | graphviz_GRAPH_LIBRARY AND graphviz_PATHPLAN_LIBRARY ) | | |||
99 | set ( graphviz_FOUND 0 ) | | |||
100 | endif ( graphviz_INCLUDE_DIRECTORIES AND | | |||
101 | graphviz_GVC_LIBRARY AND graphviz_CDT_LIBRARY AND | | |||
102 | graphviz_GRAPH_LIBRARY AND graphviz_PATHPLAN_LIBRARY ) | | |||
103 | | ||||
104 | | ||||
105 | find_program(DOT dot) | | |||
106 | | ||||
107 | if (DOT) | | |||
108 | | ||||
109 | EXECUTE_PROCESS(COMMAND dot -V | | |||
110 | OUTPUT_VARIABLE _dot_query_output | | |||
111 | RESULT_VARIABLE _dot_result | | |||
112 | ERROR_VARIABLE _dot_query_output ) | | |||
113 | | ||||
114 | IF(_dot_result MATCHES 0) | | |||
115 | STRING(REGEX REPLACE ".*([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" GRAPHVIZVERSION "${_dot_query_output}" ) | | |||
116 | ELSE(_dot_result MATCHES 0) | | |||
117 | SET(_dot_query_output) | | |||
118 | ENDIF(_dot_result MATCHES 0) | | |||
119 | IF (GRAPHVIZVERSION) | | |||
120 | | ||||
121 | # we need at least version 2.30.0 | | |||
122 | IF (NOT GRAPHVIZ_MIN_VERSION) | | |||
123 | SET(GRAPHVIZ_MIN_VERSION "2.30.0") | | |||
124 | ENDIF (NOT GRAPHVIZ_MIN_VERSION) | | |||
125 | | ||||
126 | #now parse the parts of the user given version string into variables | | |||
127 | STRING(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" req_graphviz_major_vers "${GRAPHVIZ_MIN_VERSION}") | | |||
128 | IF (NOT req_graphviz_major_vers) | | |||
129 | MESSAGE( FATAL_ERROR "Invalid GraphViz version string given: \"${GRAPHVIZ_MIN_VERSION}\", expected e.g. \"2.30.0\"") | | |||
130 | ENDIF (NOT req_graphviz_major_vers) | | |||
131 | | ||||
132 | # now parse the parts of the user given version string into variables | | |||
133 | STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_graphviz_major_vers "${GRAPHVIZ_MIN_VERSION}") | | |||
134 | STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" req_graphviz_minor_vers "${GRAPHVIZ_MIN_VERSION}") | | |||
135 | STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_graphviz_patch_vers "${GRAPHVIZ_MIN_VERSION}") | | |||
136 | | ||||
137 | IF (NOT req_graphviz_major_vers EQUAL 2) | | |||
138 | MESSAGE( FATAL_ERROR "Invalid GraphViz version string given: \"${GRAPHVIZ_MIN_VERSION}\", major version 4 is required, e.g. \"2.30.0\"") | | |||
139 | ENDIF (NOT req_graphviz_major_vers EQUAL 2) | | |||
140 | | ||||
141 | # and now the version string given by qmake | | |||
142 | STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" GRAPHVIZ_VERSION_MAJOR "${GRAPHVIZVERSION}") | | |||
143 | STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1" GRAPHVIZ_VERSION_MINOR "${GRAPHVIZVERSION}") | | |||
144 | STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" GRAPHVIZ_VERSION_PATCH "${GRAPHVIZVERSION}") | | |||
145 | | ||||
146 | # compute an overall version number which can be compared at once | | |||
147 | MATH(EXPR req_vers "${req_graphviz_major_vers}*10000 + ${req_graphviz_minor_vers}*100 + ${req_graphviz_patch_vers}") | | |||
148 | MATH(EXPR found_vers "${GRAPHVIZ_VERSION_MAJOR}*10000 + ${GRAPHVIZ_VERSION_MINOR}*100 + ${GRAPHVIZ_VERSION_PATCH}") | | |||
149 | | ||||
150 | IF (found_vers LESS req_vers) | | |||
151 | SET(graphviz_FOUND FALSE) | | |||
152 | SET(GRAPHVIZ_INSTALLED_VERSION_TOO_OLD TRUE) | | |||
153 | ELSE (found_vers LESS req_vers) | | |||
154 | SET(graphviz_FOUND TRUE) | | |||
155 | ENDIF (found_vers LESS req_vers) | | |||
156 | ENDIF (GRAPHVIZVERSION) | | |||
157 | 65 | | |||
158 | 66 | if (EXISTS "${graphviz_INCLUDE_DIRECTORIES}/graphviz_version.h") | |||
159 | endif (DOT) | 67 | file(READ "${graphviz_INCLUDE_DIRECTORIES}/graphviz_version.h" _graphviz_version_content) | ||
68 | string(REGEX MATCH "#define +PACKAGE_VERSION +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_graphviz_version_content}") | ||||
69 | set(graphviz_VERSION "${CMAKE_MATCH_1}") | ||||
70 | endif () | ||||
71 | | ||||
72 | if ("${Graphviz_FIND_VERSION}" VERSION_GREATER "${graphviz_VERSION}") | ||||
73 | message(FATAL_ERROR "Required version (" ${Graphviz_FIND_VERSION} ") is higher than found version (" ${graphviz_VERSION} ")") | ||||
74 | endif () | ||||
160 | 75 | | |||
161 | include(FindPackageHandleStandardArgs) | 76 | include(FindPackageHandleStandardArgs) | ||
162 | 77 | find_package_handle_standard_args(GraphViz | |||
163 | # handle the QUIETLY and REQUIRED arguments and set GRAPHVIZ_FOUND to TRUE if | 78 | REQUIRED_VARS graphviz_LIBRARIES graphviz_INCLUDE_DIRECTORIES | ||
164 | # all listed variables are TRUE | 79 | VERSION_VAR graphviz_VERSION) | ||
165 | find_package_handle_standard_args(GraphViz DEFAULT_MSG graphviz_LIBRARIES graphviz_INCLUDE_DIRECTORIES) | |