mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
cmake: test reverse_graph instead of using version
It seems that some distros are using a patched Boost 1.62.0 which means our workaround in reverse_graph has a conflict. Add a CMake test to see if we need to use the patched reverse_graph.
This commit is contained in:
parent
cacf07fe9b
commit
8c2e033540
@ -84,6 +84,7 @@ if(NOT Boost_FOUND)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include (${CMAKE_MODULE_PATH}/boost.cmake)
|
||||
|
||||
# -- make this work? set(python_ADDITIONAL_VERSIONS 2.7 2.6)
|
||||
find_package(PythonInterp)
|
||||
|
41
cmake/boost.cmake
Normal file
41
cmake/boost.cmake
Normal file
@ -0,0 +1,41 @@
|
||||
# Boost 1.62 has a bug that we've patched around, check if it is required
|
||||
if (Boost_VERSION EQUAL 106200)
|
||||
set (CMAKE_REQUIRED_INCLUDES ${BOOST_INCLUDEDIR} "${PROJECT_SOURCE_DIR}/include")
|
||||
set (BOOST_REV_TEST "
|
||||
#include <boost/graph/graph_concepts.hpp>
|
||||
#include <boost/graph/adjacency_list.hpp>
|
||||
#include <boost/graph/reverse_graph.hpp>
|
||||
#include <boost/concept/assert.hpp>
|
||||
|
||||
int main(int,char*[])
|
||||
{
|
||||
using namespace boost;
|
||||
// Check const reverse_graph
|
||||
{
|
||||
typedef adjacency_list< vecS, vecS, bidirectionalS,
|
||||
property<vertex_color_t, int>,
|
||||
property<edge_weight_t, int>,
|
||||
property<graph_name_t, std::string>
|
||||
> AdjList;
|
||||
typedef reverse_graph<AdjList> Graph;
|
||||
BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
")
|
||||
|
||||
CHECK_CXX_SOURCE_COMPILES("${BOOST_REV_TEST}" BOOST_REVGRAPH_OK)
|
||||
|
||||
if (NOT BOOST_REVGRAPH_OK)
|
||||
message(STATUS "trying patched")
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <boost-patched/graph/reverse_graph.hpp>
|
||||
${BOOST_REV_TEST}" BOOST_REVGRAPH_PATCH)
|
||||
endif()
|
||||
|
||||
if (NOT BOOST_REVGRAPH_OK AND NOT BOOST_REVGRAPH_PATCH)
|
||||
message(FATAL_ERROR "Something is wrong with this copy of boost::reverse_graph")
|
||||
endif()
|
||||
|
||||
unset (CMAKE_REQUIRED_INCLUDES)
|
||||
endif () # Boost 1.62.0
|
@ -89,3 +89,5 @@
|
||||
/* define if this is a release build. */
|
||||
#cmakedefine RELEASE_BUILD
|
||||
|
||||
/* define if reverse_graph requires patch for boost 1.62.0 */
|
||||
#cmakedefine BOOST_REVGRAPH_PATCH
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/graph/reverse_graph.hpp>
|
||||
|
||||
#if (BOOST_VERSION == 106200)
|
||||
#if defined(BOOST_REVGRAPH_PATCH)
|
||||
|
||||
// Boost 1.62.0 does not implement degree() in reverse_graph which is required
|
||||
// by BidirectionalGraph, so add it.
|
||||
|
Loading…
x
Reference in New Issue
Block a user