OpenTTD-patches/os/emscripten
Patric Stout 04a3bf76e8
Codechange: upgrade Emscripten to 3.1.57 (#12526)
This also upgrades liblzma to 5.4.6, and uses the new ports.contrib
system Emscripten 3.1.56 introduced.
2024-04-18 19:37:33 +02:00
..
cmake Codechange: upgrade Emscripten to 3.1.57 (#12526) 2024-04-18 19:37:33 +02:00
ports Codechange: upgrade Emscripten to 3.1.57 (#12526) 2024-04-18 19:37:33 +02:00
Dockerfile Codechange: upgrade Emscripten to 3.1.57 (#12526) 2024-04-18 19:37:33 +02:00
loading.png
pre.js Add: [Emscripten] Support for bootstrapping 2023-08-31 12:59:12 +02:00
README.md Codechange: upgrade Emscripten to 3.1.57 (#12526) 2024-04-18 19:37:33 +02:00
shell.html Add: [Emscripten] Support for bootstrapping 2023-08-31 12:59:12 +02:00

How to build with Emscripten

Please use docker with the supplied Dockerfile to build for emscripten. It takes care of a few things:

  • Use a version of emscripten we know works.
  • Add LibLZMA library under contrib ports.

First, build the docker image by navigating in the folder this README.md is in, and executing:

  docker build -t emsdk-openttd .

Next, navigate back to the root folder of this project.

Now we 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-openttd cmake .. -DOPTION_TOOLS_ONLY=ON
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build-host emsdk-openttd make -j$(nproc) tools

Finally, we build the actual game:

  mkdir build
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build emsdk-openttd emcmake cmake .. -DHOST_BINARY_DIR=../build-host -DCMAKE_BUILD_TYPE=Release -DOPTION_USE_ASSERTS=OFF
  docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) --workdir $(pwd)/build emsdk-openttd emmake make -j$(nproc)

In the build folder you will now see openttd.html.

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

  cd build
  python3 -m http.server

You can now play the game via http://127.0.0.1:8000/openttd.html .