summaryrefslogtreecommitdiff
path: root/os/emscripten/README.md
blob: 4c5d7508cc1292bda785f6cb97ce53cfcf96b063 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
## How to build with Emscripten

Building with Emscripten works with emsdk 2.0.10 and above.

Currently there is no LibLZMA support upstream; for this we suggest to apply
the provided patch in this folder to your emsdk installation.

For convenience, a Dockerfile is supplied that does this patches for you
against upstream emsdk docker. Best way to use it:

Build the docker image:
```
  docker build -t emsdk-lzma .
```

Build the host tools first:
```
  mkdir build-host
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build-host emsdk-lzma cmake .. -DOPTION_TOOLS_ONLY=ON
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build-host emsdk-lzma make -j5 tools
```

Next, build the game with emscripten:

```
  mkdir build
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build emsdk-lzma emcmake cmake .. -DHOST_BINARY_DIR=$(pwd)/build-host -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPTION_USE_ASSERTS=OFF
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build emsdk-lzma emmake make -j5
```

And now you have in your build folder files like "openttd.html".

To run it locally, you would have to start a local webserver, like:

```
  cd build
  python3 -m http.server
````

Now you can play the game via http://127.0.0.1:8000/openttd.html .