Open Source Routing Machine - C++ backend
c-plus-pluscppcpp17isochronesmap-matchingopenstreetmaposmosrmroutingrouting-enginetraveling-salesman
This refines the last commit of parallelizing lto. Discussion: this is ugly as hell, dispatching 1/ on the availability of the `-flto` flag, then 2/ on the compiler since GCC allows `-flto=n` whereas Clang for example does not. I tried setting the CMake property `INTERPROCEDURAL_OPTIMIZATION`, without any effect. All I could see was some lto related utilities in the cmake debug output, but not in the actual compiler or linker invocation. This would eliminate the need for our hacks, with 1/ using an option `WITH_LTO` setting `ON` by default, and based on this value setting the `INTERPROCEDURAL_OPTIMIZATION` flag with CMake doing the actual work of selecting the best LTO method on the target platform. By the way, this also fixes a bug where we reset the `CMAKE_CXX_FLAGS` to a variable that was never defined, resulting in setting the flags to an empty string. Yay CMake, as usual. References: - http://www.cmake.org/cmake/help/v3.0/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.html |
||
---|---|---|
algorithms | ||
benchmarks | ||
cmake | ||
config | ||
contractor | ||
data_structures | ||
descriptors | ||
docker | ||
extractor | ||
features | ||
include/osrm | ||
library | ||
plugins | ||
profiles | ||
routing_algorithms | ||
scripts | ||
server | ||
test | ||
third_party | ||
tools | ||
unit_tests | ||
util | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
appveyor-build.bat | ||
appveyor.yml | ||
build-local.bat | ||
CMakeLists.txt | ||
datastore.cpp | ||
Doxyfile.in | ||
extract.cpp | ||
Gemfile | ||
Gemfile.lock | ||
LICENCE.TXT | ||
prepare.cpp | ||
profile.lua | ||
Rakefile | ||
README.md | ||
routed.cpp | ||
taginfo.json | ||
typedefs.h |
About
The Open Source Routing Machine is a high performance routing engine written in C++11 designed to run on OpenStreetMap data.
Current build status
build config | branch | status |
---|---|---|
Linux | master | ![]() |
Linux | develop | ![]() |
Windows | master/develop | |
LUAbind fork | master | ![]() |
Building
For instructions on how to build and run OSRM, please consult the Wiki.
To quickly try OSRM use our free and daily updated online service
Documentation
See the Wiki's server API documentation as well as the library API documentation
References in publications
When using the code in a (scientific) publication, please cite
@inproceedings{luxen-vetter-2011,
author = {Luxen, Dennis and Vetter, Christian},
title = {Real-time routing with OpenStreetMap data},
booktitle = {Proceedings of the 19th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems},
series = {GIS '11},
year = {2011},
isbn = {978-1-4503-1031-4},
location = {Chicago, Illinois},
pages = {513--516},
numpages = {4},
url = {http://doi.acm.org/10.1145/2093973.2094062},
doi = {10.1145/2093973.2094062},
acmid = {2094062},
publisher = {ACM},
address = {New York, NY, USA},
}