diff --git a/3party/osrm/osrm-backend/CMakeLists.txt b/3party/osrm/osrm-backend/CMakeLists.txt index cf671d6345..ad438ae1de 100755 --- a/3party/osrm/osrm-backend/CMakeLists.txt +++ b/3party/osrm/osrm-backend/CMakeLists.txt @@ -150,6 +150,11 @@ if(CMAKE_BUILD_TYPE MATCHES Release) endif() endif() +if (UNIX) + message("Multithreaded OSRM structures build!") + add_definitions(-DMT_STRUCTURES) # Unlocks multithreaded structs are not availible on mobile devices. +endif() + # Configuring compilers if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") # using Clang diff --git a/3party/osrm/osrm-backend/data_structures/search_engine_data.hpp b/3party/osrm/osrm-backend/data_structures/search_engine_data.hpp index a1c07fbb10..2d5c57b63a 100755 --- a/3party/osrm/osrm-backend/data_structures/search_engine_data.hpp +++ b/3party/osrm/osrm-backend/data_structures/search_engine_data.hpp @@ -28,7 +28,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef SEARCH_ENGINE_DATA_HPP #define SEARCH_ENGINE_DATA_HPP -#ifdef LINUX +// Unlock multithread local storage for online osrm engine. +#ifdef MT_STRUCTURES #include #else #include @@ -46,7 +47,7 @@ struct HeapData struct SearchEngineData { using QueryHeap = BinaryHeap>; -#ifdef LINUX +#ifdef MT_STRUCTURES using SearchEngineHeapPtr = boost::thread_specific_ptr; #else using SearchEngineHeapPtr = boost::scoped_ptr; diff --git a/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp b/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp index d310f6cea9..eb255a7643 100644 --- a/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp +++ b/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp @@ -62,6 +62,9 @@ public: : m_descriptorString("mapsme"), m_facade(facade), m_reader(baseDir + '/' + PACKED_POLYGONS_FILE) { +#ifndef MT_STRUCTURES + SimpleLogger().Write(logWARNING) << "Multitreaded storage was not set on compile time!!! Do not use osrm-routed in several threads." +#endif if (!osrm::LoadNodeDataFromFile(nodeDataFile, m_nodeData)) { SimpleLogger().Write(logDEBUG) << "Can't load node data";