From 1560f84aebda0e416f757e80f8089222d89b79c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Cser=C3=A9p?= Date: Mon, 2 Oct 2023 02:32:48 +0200 Subject: [PATCH] Making codebase macOS compatible. --- CMakeLists.txt | 11 ++-- FindGraphviz.cmake | 83 ++++++++++++++++++++++++++++++ logger/src/ldlogger-util.h | 2 + model/include/model/buildaction.h | 1 + plugins/cpp/service/CMakeLists.txt | 2 +- util/CMakeLists.txt | 16 +++--- 6 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 FindGraphviz.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c0dab90c6..f42b0795b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,11 +10,12 @@ include(Functions.cmake) # Do some sanity check on the testing setup and enable testing if applicable. include(Testing.cmake) -find_package(Boost REQUIRED COMPONENTS filesystem log program_options regex system thread) -find_package(Java REQUIRED) -find_package(Odb REQUIRED) -find_package(Threads REQUIRED) -find_package(Thrift REQUIRED) +find_package(Boost REQUIRED COMPONENTS filesystem log program_options regex system thread) +find_package(Java REQUIRED) +find_package(Odb REQUIRED) +find_package(Threads REQUIRED) +find_package(Thrift REQUIRED) +find_package(Graphviz REQUIRED) find_package(GTest) include(UseJava) diff --git a/FindGraphviz.cmake b/FindGraphviz.cmake new file mode 100644 index 000000000..ed3bebabd --- /dev/null +++ b/FindGraphviz.cmake @@ -0,0 +1,83 @@ +# - Try to find Graphviz +# Once done this will define +# +# GRAPHVIZ_FOUND - system has Graphviz +# GRAPHVIZ_INCLUDE_DIRS - Graphviz include directories +# GRAPHVIZ_CDT_LIBRARY - Graphviz CDT library +# GRAPHVIZ_GVC_LIBRARY - Graphviz GVC library +# GRAPHVIZ_CGRAPH_LIBRARY - Graphviz CGRAPH library +# GRAPHVIZ_PATHPLAN_LIBRARY - Graphviz PATHPLAN library +# GRAPHVIZ_VERSION - Graphviz version +# +# This module reads hints about search locations from the following cmake variables: +# GRAPHVIZ_ROOT - Graphviz installation prefix +# (containing bin/, include/, etc.) + +# Copyright (c) 2009, Adrien Bustany, +# Copyright (c) 2013-2014 Kevin Funk + +# Version computation and some cleanups by Allen Winter +# Copyright (c) 2012-2014 Klarälvdalens Datakonsult AB, a KDAB Group company + +# Simplified script by Dogan Can +# Copyright (c) 2014 University of Southern California + +# Redistribution and use is allowed according to the terms of the GPLv3+ license. +# Source: https://github.com/usc-sail/barista/blob/master/cmake/FindGraphviz.cmake + +if(GRAPHVIZ_ROOT) + set(_GRAPHVIZ_INCLUDE_DIR ${GRAPHVIZ_ROOT}/include) + set(_GRAPHVIZ_LIBRARY_DIR ${GRAPHVIZ_ROOT}/lib) +endif() + +find_path(GRAPHVIZ_INCLUDE_DIR NAMES graphviz/cgraph.h + HINTS ${_GRAPHVIZ_INCLUDE_DIR}) +find_library(GRAPHVIZ_CDT_LIBRARY NAMES cdt + HINTS ${_GRAPHVIZ_LIBRARY_DIR}) +find_library(GRAPHVIZ_GVC_LIBRARY NAMES gvc + HINTS ${_GRAPHVIZ_LIBRARY_DIR}) +find_library(GRAPHVIZ_CGRAPH_LIBRARY NAMES cgraph + HINTS ${_GRAPHVIZ_LIBRARY_DIR}) +find_library(GRAPHVIZ_PATHPLAN_LIBRARY NAMES pathplan + HINTS ${_GRAPHVIZ_LIBRARY_DIR}) + +if(GRAPHVIZ_INCLUDE_DIR AND GRAPHVIZ_CDT_LIBRARY AND GRAPHVIZ_GVC_LIBRARY + AND GRAPHVIZ_CGRAPH_LIBRARY AND GRAPHVIZ_PATHPLAN_LIBRARY) + set(GRAPHVIZ_FOUND TRUE) +else() + set(GRAPHVIZ_FOUND FALSE) +endif() + +# Ok, now compute the version +if(GRAPHVIZ_FOUND) + set(FIND_GRAPHVIZ_VERSION_SOURCE + "#include \n#include \n int main()\n {\n printf(\"%s\",PACKAGE_VERSION);return 1;\n }\n") + set(FIND_GRAPHVIZ_VERSION_SOURCE_FILE ${CMAKE_BINARY_DIR}/CMakeTmp/FindGRAPHVIZ.cxx) + file(WRITE "${FIND_GRAPHVIZ_VERSION_SOURCE_FILE}" "${FIND_GRAPHVIZ_VERSION_SOURCE}") + + set(FIND_GRAPHVIZ_VERSION_ADD_INCLUDES + "-DINCLUDE_DIRECTORIES:STRING=${GRAPHVIZ_INCLUDE_DIR}") + + try_run(RUN_RESULT COMPILE_RESULT + ${CMAKE_BINARY_DIR} + ${FIND_GRAPHVIZ_VERSION_SOURCE_FILE} + CMAKE_FLAGS "${FIND_GRAPHVIZ_VERSION_ADD_INCLUDES}" + RUN_OUTPUT_VARIABLE GRAPHVIZ_VERSION) + + if(COMPILE_RESULT AND RUN_RESULT EQUAL 1) + message(STATUS "Graphviz version: ${GRAPHVIZ_VERSION}") + else() + message(FATAL_ERROR "Unable to compile or run the graphviz version detection program.") + endif() + + set(GRAPHVIZ_INCLUDE_DIRS ${GRAPHVIZ_INCLUDE_DIR} ${GRAPHVIZ_INCLUDE_DIR}/graphviz) + + if(NOT Graphviz_FIND_QUIETLY) + message(STATUS "Graphviz include: ${GRAPHVIZ_INCLUDE_DIRS}") + message(STATUS "Graphviz libraries: ${GRAPHVIZ_CDT_LIBRARY} ${GRAPHVIZ_GVC_LIBRARY} ${GRAPHVIZ_CGRAPH_LIBRARY} ${GRAPHVIZ_PATHPLAN_LIBRARY}") + endif() +endif() + +if(Graphviz_FIND_REQUIRED AND NOT GRAPHVIZ_FOUND) + message(FATAL_ERROR "Could not find GraphViz.") +endif() diff --git a/logger/src/ldlogger-util.h b/logger/src/ldlogger-util.h index 47952178c..aa8fcabdb 100644 --- a/logger/src/ldlogger-util.h +++ b/logger/src/ldlogger-util.h @@ -2,7 +2,9 @@ #define CC_LOGGER_UTIL_H #include +#ifdef __linux__ #include +#endif #include /** diff --git a/model/include/model/buildaction.h b/model/include/model/buildaction.h index 382ca817a..cc42ed562 100644 --- a/model/include/model/buildaction.h +++ b/model/include/model/buildaction.h @@ -1,6 +1,7 @@ #ifndef CC_MODEL_BUILDACTION_H #define CC_MODEL_BUILDACTION_H +#include #include #include #include diff --git a/plugins/cpp/service/CMakeLists.txt b/plugins/cpp/service/CMakeLists.txt index f5d7f9e13..e70736d10 100644 --- a/plugins/cpp/service/CMakeLists.txt +++ b/plugins/cpp/service/CMakeLists.txt @@ -26,7 +26,7 @@ target_link_libraries(cppservice mongoose projectservice languagethrift - gvc + ${GRAPHVIZ_GVC_LIBRARY} ${THRIFT_LIBTHRIFT_LIBRARIES}) install(TARGETS cppservice DESTINATION ${INSTALL_SERVICE_DIR}) diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt index 7bf221ae3..e80ce6b68 100644 --- a/util/CMakeLists.txt +++ b/util/CMakeLists.txt @@ -1,10 +1,11 @@ include_directories( ${PROJECT_SOURCE_DIR}/util/include - ${PROJECT_SOURCE_DIR}/model/include - ${BOOST_INCLUDE_DIRS}) + ${PROJECT_SOURCE_DIR}/model/include) include_directories(SYSTEM - ${ODB_INCLUDE_DIRS}) + ${Boost_INCLUDE_DIRS} + ${ODB_INCLUDE_DIRS} + ${GRAPHVIZ_INCLUDE_DIRS}) add_library(util SHARED src/dbutil.cpp @@ -18,13 +19,16 @@ add_library(util SHARED src/util.cpp) target_link_libraries(util - gvc - ${Boost_LIBRARIES}) + ${Boost_LIBRARIES} + ${ODB_LIBRARIES} + ${GRAPHVIZ_GVC_LIBRARY} + ${GRAPHVIZ_CGRAPH_LIBRARY}) string(TOLOWER "${DATABASE}" _database) if (${_database} STREQUAL "sqlite") + find_package(SQLite3) target_link_libraries(util - sqlite3) + ${SQLite3_LIBRARIES}) endif() install(TARGETS util DESTINATION ${INSTALL_LIB_DIR})