Skip to content

Commit 0fd35c5

Browse files
authored
Merge pull request #23 from OpenRCT2/22-jammy-clang-20
22: jammy clang 20
2 parents e59fbfb + 0b7cb2f commit 0fd35c5

13 files changed

Lines changed: 472 additions & 5 deletions

File tree

.github/workflows/ci.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
matrix:
1414
# Remember if you commit this, newly built images will replace those tags.
1515
# Prefer incrementing the version to unused one
16-
tag: [21-android, 21-jammy, 21-noble, 21-bookworm, 21-format, 21-mingw, 21-emscripten]
16+
tag: [22-android, 22-jammy, 22-noble, 22-bookworm, 22-format, 22-mingw, 22-emscripten]
1717
env:
1818
dockertag: ${{ matrix.tag }}
1919
steps:
@@ -40,10 +40,10 @@ jobs:
4040
run: |
4141
if [ "$dockerid" != "" ]; then
4242
docker login -u "$dockerid" -p "$dockerpass"
43-
docker pull $dockerns/openrct2-build:21-noble
44-
docker tag $dockerns/openrct2-build:21-noble $dockerns/openrct2-build:21
45-
docker tag $dockerns/openrct2-build:21-noble $dockerns/openrct2-build:latest
46-
docker push $dockerns/openrct2-build:21
43+
docker pull $dockerns/openrct2-build:22-noble
44+
docker tag $dockerns/openrct2-build:22-noble $dockerns/openrct2-build:22
45+
docker tag $dockerns/openrct2-build:22-noble $dockerns/openrct2-build:latest
46+
docker push $dockerns/openrct2-build:22
4747
docker push $dockerns/openrct2-build:latest
4848
else
4949
echo 'Images not tagged'

22/android/Dockerfile

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Default image that can build OpenRCT2 for Android.
2+
FROM ubuntu:24.04
3+
RUN apt-get update && \
4+
apt-get -y upgrade && \
5+
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
6+
# System
7+
ca-certificates curl unzip \
8+
# Build tools
9+
git cmake pkg-config ninja-build ccache g++ \
10+
# Sprite builder libraries for the host
11+
libpng-dev \
12+
openjdk-21-jdk
13+
14+
ENV ANDROID_HOME=/android-dev
15+
ENV ANDROID_NDK_HOME="$ANDROID_HOME/ndk"
16+
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
17+
18+
# Grab the Android SDK
19+
WORKDIR /tmp/setup
20+
RUN curl -Lo sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip \
21+
&& unzip -qo sdk.zip \
22+
&& mkdir -p $ANDROID_HOME/cmdline-tools \
23+
&& mv cmdline-tools $ANDROID_HOME/cmdline-tools/latest \
24+
&& rm sdk.zip
25+
26+
# Need nlohmann/json, needs to live outside system libraries, so it doesn't
27+
# confuse toolchain to include other host headers.
28+
# 3.12.0 contains a major issue related to utf8 strings. Should be fixed when 3.12.1 releases
29+
RUN curl -Lo json.zip https://github.com/nlohmann/json/releases/download/v3.11.3/include.zip \
30+
&& unzip -qo json.zip -d json \
31+
&& mkdir -p /opt/openrct2/include/ \
32+
&& mv json/include/nlohmann /opt/openrct2/include/nlohmann \
33+
&& rm json.zip
34+
35+
# Clean up
36+
RUN rm -rf /tmp/setup
37+
WORKDIR /
38+
39+
# Accept SDK licenses
40+
RUN yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null
41+
42+
# Install NDK
43+
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "ndk;27.3.13750724"
44+
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "cmake;4.0.3"
45+
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "build-tools;36.0.0"
46+
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "platforms;android-36"
47+
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "platform-tools"
48+
49+
# Bash is required for OpenRCT2 CI
50+
SHELL ["/bin/bash", "-c"]

22/bookworm/Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Supplementart image that can build OpenRCT2 for Linux (amd64).
2+
# Provides building with cmake+ninja using either gcc or clang.
3+
FROM debian:bookworm
4+
RUN apt-get update && \
5+
apt-get -y upgrade && \
6+
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
7+
# System
8+
ca-certificates curl file libcairo2 patchelf unzip \
9+
# Build tools
10+
git cmake pkg-config ninja-build ccache g++ clang \
11+
# Build libraries
12+
libsdl2-dev libspeex-dev libspeexdsp-dev \
13+
libflac-dev libogg-dev libvorbis-dev libopenal-dev \
14+
libcrypto++-dev libcurl4-openssl-dev libssl-dev \
15+
libfontconfig1-dev libfreetype6-dev \
16+
libicu-dev libpng-dev libzip-dev \
17+
nlohmann-json3-dev libzstd-dev \
18+
# Testing libraries
19+
libgtest-dev
20+
21+
# Bash is required for OpenRCT2 CI
22+
SHELL ["/bin/bash", "-c"]

22/emscripten/Dockerfile

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
FROM docker.io/library/fedora:42
2+
3+
RUN dnf update -y && dnf install -y git cmake make gcc g++ nlohmann-json-devel autoreconf libtool openssl-devel libcurl-devel fontconfig-devel libzip-devel SDL2-devel zip speexdsp-devel ninja-build hostname ccache libatomic
4+
5+
WORKDIR /
6+
7+
RUN git clone https://github.com/emscripten-core/emsdk.git
8+
9+
WORKDIR /emsdk/
10+
11+
# Pin version - to prevent sudden breakage of the CI
12+
RUN ./emsdk install 4.0.11
13+
RUN ./emsdk activate 4.0.11
14+
15+
# "Install" json headers to emscripten include directory
16+
RUN cp -r /usr/include/nlohmann /emsdk/upstream/emscripten/cache/sysroot/include/nlohmann
17+
18+
# Add emscripten to path
19+
ENV PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:$PATH"
20+
21+
WORKDIR /ext/
22+
23+
COPY build-depends.sh /ext/
24+
COPY cors_serve.py /usr/bin/
25+
26+
# Build emscripten dependencies
27+
RUN bash build-depends.sh
28+
29+
# Set ENV variables for speexdsp, icu, and libzip
30+
ENV SPEEXDSP_ROOT="/ext/speexdsp"
31+
ENV ICU_ROOT="/ext/icu/icu4c/source"
32+
ENV LIBZIP_ROOT="/ext/libzip/build"
33+
34+
35+
SHELL ["/bin/bash", "-c"]

22/emscripten/build-depends.sh

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/bin/bash
2+
3+
START_DIR=/ext
4+
5+
cd $START_DIR
6+
7+
# Pin versions - to prevent sudden breakage
8+
if [ ! -d "speexdsp" ]; then
9+
git clone https://gitlab.xiph.org/xiph/speexdsp.git --depth 1 --branch SpeexDSP-1.2.1
10+
fi
11+
if [ ! -d "icu" ]; then
12+
git clone https://github.com/unicode-org/icu.git --depth 1 --branch release-77-1
13+
fi
14+
if [ ! -d "libzip" ]; then
15+
git clone https://github.com/nih-at/libzip.git --depth 1 --branch v1.11.4
16+
fi
17+
if [ ! -d "zlib" ]; then
18+
git clone https://github.com/madler/zlib.git --depth 1 --branch v1.3.1
19+
fi
20+
if [ ! -d "zstd" ]; then
21+
git clone https://github.com/facebook/zstd.git --depth 1 --branch v1.5.7
22+
fi
23+
24+
cd speexdsp
25+
emmake ./autogen.sh
26+
emmake ./configure --enable-shared --disable-neon
27+
emmake make -j$(nproc)
28+
cd $START_DIR
29+
30+
cd icu/icu4c/source
31+
ac_cv_namespace_ok=yes icu_cv_host_frag=mh-linux emmake ./configure \
32+
--enable-release \
33+
--enable-shared \
34+
--disable-icu-config \
35+
--disable-extras \
36+
--disable-icuio \
37+
--disable-layoutex \
38+
--disable-tools \
39+
--disable-tests \
40+
--disable-samples
41+
emmake make -j$(nproc)
42+
cd $START_DIR
43+
44+
cd zlib
45+
mkdir -p build/
46+
cd build/
47+
emcmake cmake ../
48+
emmake make zlib -j$(nproc)
49+
emmake make install
50+
ZLIB_ROOT=$(pwd)
51+
cd $START_DIR
52+
53+
cd libzip
54+
mkdir -p build/
55+
cd build/
56+
emcmake cmake ../ -DZLIB_INCLUDE_DIR="$ZLIB_ROOT" -DZLIB_LIBRARY="$ZLIB_ROOT/libz.a"
57+
emmake make zip -j$(nproc)
58+
emmake make install
59+
cd $START_DIR
60+
61+
cd zstd
62+
mkdir -p build/build/
63+
cd build/build/
64+
emcmake cmake ../cmake/ -DZSTD_BUILD_STATIC=ON -DZSTD_BUILD_SHARED=OFF -DZSTD_BUILD_PROGRAMS=OFF
65+
emmake make -j$(nproc)
66+
emmake make install
67+
cd $START_DIR

22/emscripten/cors_serve.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env python3
2+
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
3+
import sys
4+
5+
class CORSRequestHandler (SimpleHTTPRequestHandler):
6+
def end_headers (self):
7+
self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
8+
self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
9+
SimpleHTTPRequestHandler.end_headers(self)
10+
11+
def main():
12+
test(CORSRequestHandler, HTTPServer, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
13+
14+
if __name__ == '__main__':
15+
main()

22/format/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Image specifically designed to run clang-format on OpenRCT2 source files.
2+
FROM alpine
3+
RUN apk add --no-cache python3 clang20-extra-tools

22/jammy/Dockerfile

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Default image that can build OpenRCT2 for Linux (amd64).
2+
# Provides building with cmake+ninja using either gcc or clang.
3+
FROM ubuntu:22.04
4+
RUN apt-get update && \
5+
apt-get -y upgrade && \
6+
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
7+
# System
8+
ca-certificates curl file libcairo2 patchelf unzip \
9+
# Build tools
10+
git pkg-config ninja-build ccache g++ \
11+
# Build libraries
12+
libsdl2-dev libspeex-dev libspeexdsp-dev xz-utils \
13+
libflac-dev libogg-dev libvorbis-dev libopenal-dev \
14+
libcrypto++-dev libcurl4-openssl-dev libssl-dev \
15+
libfontconfig1-dev libfreetype6-dev \
16+
libicu-dev libpng-dev libzip-dev libzstd-dev \
17+
nlohmann-json3-dev \
18+
# Testing libraries
19+
libgtest-dev \
20+
software-properties-common gpg-agent
21+
22+
# Need to install ca-certificates before importing key
23+
COPY llvm-snapshot.gpg.key /etc/apt/trusted.gpg.d/apt.llvm.org.asc
24+
COPY llvm.list /etc/apt/sources.list.d
25+
RUN apt-get update && \
26+
apt-get -y upgrade && \
27+
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
28+
clang-20
29+
RUN add-apt-repository -y ppa:ecal/cmake-3.25 && apt install -y cmake
30+
31+
# Bash is required for OpenRCT2 CI
32+
SHELL ["/bin/bash", "-c"]

22/jammy/llvm-snapshot.gpg.key

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
Version: GnuPG v1.4.12 (GNU/Linux)
3+
4+
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
50+
bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw==
51+
=j+4q
52+
-----END PGP PUBLIC KEY BLOCK-----

22/jammy/llvm.list

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy main
2+
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy main
3+
# 20
4+
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main
5+
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main
6+
# 21
7+
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-21 main
8+
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-21 main

0 commit comments

Comments
 (0)