]> granicus.if.org Git - graphviz/commitdiff
Add lib/mingle to CMake build
authorErwin Janssen <erwinjanssen@outlook.com>
Sun, 29 Jan 2017 11:30:48 +0000 (12:30 +0100)
committerErwin Janssen <erwinjanssen@outlook.com>
Thu, 6 Apr 2017 19:38:02 +0000 (21:38 +0200)
The static library 'libmingle' has no dependencies, but a check for the
ANN library had to be added. For this a cmake find module was added.

CMakeLists.txt
cmake/FindANN.cmake [new file with mode: 0644]
cmake/config_checks.cmake
config-cmake.h.in
lib/CMakeLists.txt
lib/mingle/CMakeLists.txt [new file with mode: 0644]

index e88d0a3e64b8274afb72b50faaf61719bb1a66fb..a5c1d124564f362c31ef0f82ee578e732040d693 100644 (file)
@@ -38,14 +38,25 @@ find_package(BISON REQUIRED)
 find_package(FLEX REQUIRED)
 
 # ================== Convenient values for CMake configuration =================
-set(BINARY_INSTALL_DIR  bin)
-set(LIBRARY_INSTALL_DIR lib)
-set(HEADER_INSTALL_DIR  include/graphviz)
-set(MAN_INSTALL_DIR     share/man/man3)
+set(BINARY_INSTALL_DIR      bin)
+set(LIBRARY_INSTALL_DIR     lib)
+set(HEADER_INSTALL_DIR      include/graphviz)
+set(MAN_INSTALL_DIR         share/man/man3)
 # TODO: Find a way to check for groff and ps2pdf for manpage pdf generation
 # set(MAN_PDF_INSTALL_DIR share/graphviz/doc/pdf)
-set(TOP_SOURCE_DIR      "${CMAKE_SOURCE_DIR}")
-set(GRAPHVIZ_LIB_DIR    "${CMAKE_CURRENT_SOURCE_DIR}/lib")
+set(TOP_SOURCE_DIR          "${CMAKE_SOURCE_DIR}")
+set(GRAPHVIZ_LIB_DIR        "${CMAKE_CURRENT_SOURCE_DIR}/lib")
+set(WINDOWS_DEPENDENCY_DIR  "${CMAKE_CURRENT_SOURCE_DIR}/windows/dependencies/libraries")
+
+# ============================ Library dependencies ============================
+if (WIN32)
+    list(APPEND CMAKE_LIBRARY_PATH ${WINDOWS_DEPENDENCY_DIR}/lib)
+    list(APPEND CMAKE_INCLUDE_PATH ${WINDOWS_DEPENDENCY_DIR}/include ${WINDOWS_DEPENDENCY_DIR}/bin)
+else()
+    list(APPEND CMAKE_INCLUDE_PATH /usr/lib /usr/local/lib)
+endif()
+
+find_package(ANN)
 
 # ============================ Set Graphviz version ============================
 set(GRAPHVIZ_VERSION_MAJROR 2)
diff --git a/cmake/FindANN.cmake b/cmake/FindANN.cmake
new file mode 100644 (file)
index 0000000..fa9dcf2
--- /dev/null
@@ -0,0 +1,18 @@
+find_path(ANN_INCLUDE_DIR ANN/ANN.h)
+find_library(ANN_LIBRARY NAMES ANN ann libann)
+find_file(ANN_RUNTIME_LIBRARY ANN.dll)
+
+include(FindPackageHandleStandardArgs)
+if (WIN32)
+    find_package_handle_standard_args(ANN DEFAULT_MSG
+                                      ANN_LIBRARY ANN_INCLUDE_DIR ANN_RUNTIME_LIBRARY)
+else()
+    find_package_handle_standard_args(ANN DEFAULT_MSG
+                                      ANN_LIBRARY ANN_INCLUDE_DIR)
+endif()
+
+mark_as_advanced(ANN_INCLUDE_DIR ANN_LIBRARY ANN_RUNTIME_LIBRARY)
+
+set(ANN_INCLUDE_DIRS ${ANN_INCLUDE_DIR})
+set(ANN_LIBRARIES ${ANN_LIBRARY})
+set(ANN_RUNTIME_LIBRARIES ${ANN_RUNTIME_LIBRARY})
index 8d658ea7e7c5f5eed3230da10cd008611db29d1b..def19dc52ab438431e63ed330713968bff3afa17 100644 (file)
@@ -26,5 +26,10 @@ include(CheckTypeSize)
 check_type_size( ssize_t     SSIZE_T     )
 check_type_size( intptr_t    INTPTR_T    )
 
+# Library checks
+if (ANN_FOUND)
+    set(HAVE_ANN 1)
+endif()
+
 # Write check results to config.h header
 configure_file(config-cmake.h.in config.h)
index 5a58d653924785ed213c9cc5bac55c552406ea0b..4d7f35de8cc20e0a7f2166edf8778076a781e21d 100644 (file)
@@ -25,3 +25,6 @@
 #ifndef HAVE_SSIZE_T
 typedef int ssize_t;
 #endif
+
+// Libraries
+#cmakedefine HAVE_ANN
index 2f5ca931dce7aecd5a680cc05d20295a91489fb7..57434efd7c9088c01a3d46829dd514098d48f0af 100644 (file)
@@ -5,6 +5,7 @@ add_subdirectory(dotgen)
 add_subdirectory(fdpgen)
 add_subdirectory(ingraphs)
 add_subdirectory(label)
+add_subdirectory(mingle)
 add_subdirectory(neatogen)
 add_subdirectory(ortho)
 add_subdirectory(osage)
diff --git a/lib/mingle/CMakeLists.txt b/lib/mingle/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9aa9726
--- /dev/null
@@ -0,0 +1,31 @@
+if (ANN_FOUND)
+
+include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${GRAPHVIZ_LIB_DIR}/cdt
+    ${GRAPHVIZ_LIB_DIR}/cgraph
+    ${GRAPHVIZ_LIB_DIR}/common
+    ${GRAPHVIZ_LIB_DIR}/gvc
+    ${GRAPHVIZ_LIB_DIR}/pathplan
+    ${GRAPHVIZ_LIB_DIR}/sfdpgen
+    ${GRAPHVIZ_LIB_DIR}/sparse
+    ${ANN_INCLUDE_DIR}
+)
+
+add_library(libmingle STATIC
+    # Header files
+    agglomerative_bundling.h
+    edge_bundling.h
+    ink.h
+    nearest_neighbor_graph.h
+    nearest_neighbor_graph_ann.h
+
+    # Source files
+    agglomerative_bundling.c
+    edge_bundling.c
+    ink.c
+    nearest_neighbor_graph.c
+    nearest_neighbor_graph_ann.cpp
+)
+
+endif (ANN_FOUND)