From 4b023961d829dac3179b8afe0c35d7f8751c0b9f Mon Sep 17 00:00:00 2001 From: Erwin Janssen Date: Sun, 29 Jan 2017 12:30:48 +0100 Subject: [PATCH] Add lib/mingle to CMake build 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 | 23 +++++++++++++++++------ cmake/FindANN.cmake | 18 ++++++++++++++++++ cmake/config_checks.cmake | 5 +++++ config-cmake.h.in | 3 +++ lib/CMakeLists.txt | 1 + lib/mingle/CMakeLists.txt | 31 +++++++++++++++++++++++++++++++ 6 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 cmake/FindANN.cmake create mode 100644 lib/mingle/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index e88d0a3e6..a5c1d1245 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 index 000000000..fa9dcf294 --- /dev/null +++ b/cmake/FindANN.cmake @@ -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}) diff --git a/cmake/config_checks.cmake b/cmake/config_checks.cmake index 8d658ea7e..def19dc52 100644 --- a/cmake/config_checks.cmake +++ b/cmake/config_checks.cmake @@ -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) diff --git a/config-cmake.h.in b/config-cmake.h.in index 5a58d6539..4d7f35de8 100644 --- a/config-cmake.h.in +++ b/config-cmake.h.in @@ -25,3 +25,6 @@ #ifndef HAVE_SSIZE_T typedef int ssize_t; #endif + +// Libraries +#cmakedefine HAVE_ANN diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 2f5ca931d..57434efd7 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -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 index 000000000..9aa9726f9 --- /dev/null +++ b/lib/mingle/CMakeLists.txt @@ -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) -- 2.40.0