|
1 | 1 | # Building OSRM for Windows
|
2 | 2 |
|
3 |
| -## Dependencies |
4 |
| - |
5 |
| -Get a decent Windows with decent Visual Studio (14 at least for C++11 support). The published binaries are build with |
6 |
| -VS2019 and Windows SDK8.1. |
7 |
| - |
8 |
| -In case you are using [prepacked Windows VM with VS2019](https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/), you |
9 |
| -have to install [Windows SDK 8.1](https://go.microsoft.com/fwlink/p/?LinkId=323507) |
10 |
| - |
11 |
| -Prepare directories for dependencies, build and target file location.Target directory ($target starting from that moment) should have /include and /lib subdirectories. |
| 3 | +There is experimental support for building OSRM on Windows. |
12 | 4 |
|
13 |
| -### Bzip2 |
14 |
| - |
15 |
| -1. Download from https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz |
16 |
| -2. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
17 |
| -3. Issue `nmake /f makefile.msc` |
18 |
| -4. Copy bzlib.h to $target\include and libbz2.lib to $target\lib |
19 |
| - |
20 |
| -### ZLib |
21 |
| - |
22 |
| -1. Download https://www.zlib.net/zlib-1.2.11.tar.gz |
23 |
| -2. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
24 |
| -3. Switch to `contrib\vstudio\vc14` |
25 |
| -4. If needed, open `zlibvc.sln` with Visual Studio and retarget to your version of compiler and SDK. |
26 |
| -5. Issue `msbuild zlibvc.sln /p:BuildInParallel=true /p:Configuration=Release /p:Platform=x64 /m:<Number of cpu cores>` |
27 |
| -6. Copy x64\ZlibStatRelease\zlibstat.lib to $target\lib\libz.lib, copy zlib.h and zconf.h to $target\include |
| 5 | +## Dependencies |
28 | 6 |
|
29 |
| -### ICU |
| 7 | +You will need a modern Windows development stack (e.g. Visual Studio 17). The published binaries are built with |
| 8 | +[Windows Server 2022](https://github.com/actions/runner-images/blob/main/images/win/Windows2022-Readme.md) Github hosted runners. |
30 | 9 |
|
31 |
| -1. Download and unpack. |
32 |
| - * https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-src.zip |
33 |
| - * https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-data.zip |
34 |
| -2. Do retarget if neededby openinig .\source\allinone\allinone.sln and editing projects |
35 |
| -3. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
36 |
| -4. Run build: |
37 |
| - msbuild .\source\allinone\allinone.sln /nologo /p:BuildInParallel=true /p:Configuration=Release /p:Platform=x64 /m:<Number of cpu cores> |
38 |
| -5. Copy lib64\*.lib to $target\lib, copy include contents to $target\include |
39 |
| -6. Copy bin64\*dll to any dir withing your $PATH. At the same time copy them to $target\lib |
| 10 | +Dependencies are managed via [Conan](https://conan.io/) and built with [CMake](https://cmake.org/). |
40 | 11 |
|
41 |
| -### Boost |
| 12 | +## Building |
42 | 13 |
|
43 |
| -1. Download and unpack https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.zip |
44 |
| -2. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
45 |
| -3. Build b2: |
46 |
| - bootstrap.bat --with-toolset=msvc-14.2 |
47 |
| -4. Build boost: |
48 |
| - b2 -a -d release state --build-type=minimal toolset=msvc-14.2 -q runtime-link=shared link=static address-model=64 --with-iostreams --with-test --with-thread --with-filesystem --with-date_time --with-system --with-program_options --with-regex --disable-filesystem2 -sHAVE_ICU=1 include=<target>\include library-path=<target>\lib -sZLIB_SOURCE=<builddir>/zlib -zBZIP2_BINARY=libbz2 -sBZIP2_INCLUDE=<target>\include -sBZIP2_LIBPATH=<target>\lib -sICU_ICUUC_NAME=icuuc -sICU_ICUDT_NAME=icudt -sICU_ICUIN_NAME=icuin -sBUILD=boost_unit_test_framework -j<number of cpu cores> |
49 |
| -5. Copy `boost` subdirectory to <target>\include and contents of `stage` to <target>\lib |
| 14 | +```bat |
| 15 | +cmake -DENABLE_CONAN=ON -DENABLE_NODE_BINDINGS=ON -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "Visual Studio 17 2022" .. |
50 | 16 |
|
51 |
| -### Expat |
| 17 | +msbuild OSRM.sln ^ |
| 18 | +/p:Configuration=%CONFIGURATION% ^ |
| 19 | +/p:Platform=x64 ^ |
| 20 | +/t:rebuild ^ |
| 21 | +/p:BuildInParallel=true ^ |
| 22 | +/m:%NUMBER_OF_PROCESSORS% ^ |
| 23 | +/toolsversion:Current ^ |
| 24 | +/clp:Verbosity=normal ^ |
| 25 | +/nologo |
| 26 | +``` |
52 | 27 |
|
53 |
| -1. Download and unpack https://github.com/libexpat/libexpat/archive/R_2_2_9.zip |
54 |
| -2. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
55 |
| -3. Configure build my calling cmake: |
56 |
| - mkdir expat\build |
57 |
| - cd expat\build |
58 |
| - cmake -G"Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_SHARED_LIBS=OFF .. |
59 |
| -4. Build expat: `msbuild expat.sln /nologo /p:Configuration=Release /p:Platform=x64` |
60 |
| -5. Copy `Release\libexpat.*` to <target>/lib. Copy `expat/lib/expat.h` and `expat/lib/expat_external.h` to <target>/include |
61 | 28 |
|
62 |
| -### LUA |
63 | 29 |
|
64 |
| -1. Download and unpack https://www.lua.org/ftp/lua-5.3.5.tar.gz |
65 |
| -2. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
66 |
| -3. Lua doesn't have native MSVC support, so you have to compile it by hand: |
67 |
| - cd src |
68 |
| - cl /MD /O2 /c /DLUA_COMPAT_5_2 *.c |
69 |
| - ren lua.obj lua.o |
70 |
| - ren luac.obj luac.o |
71 |
| - link /LIB /OUT:lua5.3.5.dll *.obj |
72 |
| -4. Copy `lua5.3.5.lib` to <target>/lib. Copy `lua.h`,`lauxlib,h`,`lua.hpp`,`lualib.h`,`luaconf.h` to <target>/include |
73 | 30 |
|
74 |
| -### TBB |
75 | 31 |
|
76 |
| -1. Download and unpack https://github.com/oneapi-src/oneTBB/archive/v2020.2.zip |
77 |
| -2. Retarget by opening build\vs2013\makefile.sln |
78 |
| -3. Start 'x64 Native Tools Command Prompt for VS2019' and change directory to unpacked source tree. |
79 |
| -4. Switch to build\vs2013 and build: `msbuild makefle.sln /nologo /p:Configuration=Release /p:Platform=x64` |
80 |
| -5. Copy x64/Release/*.{dll,lib} files to <target>/lib and copy contents of include directory to <target>/include |
0 commit comments