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)
--- /dev/null
+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})
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)
#ifndef HAVE_SSIZE_T
typedef int ssize_t;
#endif
+
+// Libraries
+#cmakedefine HAVE_ANN
add_subdirectory(fdpgen)
add_subdirectory(ingraphs)
add_subdirectory(label)
+add_subdirectory(mingle)
add_subdirectory(neatogen)
add_subdirectory(ortho)
add_subdirectory(osage)
--- /dev/null
+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)