mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
Change: upgrade Emscripten to 2.0.31 and enable LZMA by default (#9604)
This commit is contained in:
parent
e404d16929
commit
3046a6ce39
9
.github/workflows/ci-build.yml
vendored
9
.github/workflows/ci-build.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
container:
|
container:
|
||||||
# If you change this version, change the number in the cache step too.
|
# If you change this version, change the number in the cache step too.
|
||||||
image: emscripten/emsdk:2.0.10
|
image: emscripten/emsdk:2.0.31
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@ -26,7 +26,12 @@ jobs:
|
|||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: /emsdk/upstream/emscripten/cache
|
path: /emsdk/upstream/emscripten/cache
|
||||||
key: 2.0.10-${{ runner.os }}
|
key: 2.0.31-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Patch Emscripten to support LZMA
|
||||||
|
run: |
|
||||||
|
cd /emsdk/upstream/emscripten
|
||||||
|
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch
|
||||||
|
|
||||||
- name: Build (host tools)
|
- name: Build (host tools)
|
||||||
run: |
|
run: |
|
||||||
|
9
.github/workflows/preview_build.yml
vendored
9
.github/workflows/preview_build.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
container:
|
container:
|
||||||
# If you change this version, change the number in the cache step too.
|
# If you change this version, change the number in the cache step too.
|
||||||
image: emscripten/emsdk:2.0.10
|
image: emscripten/emsdk:2.0.31
|
||||||
# uid=1001(runner) gid=121(docker)
|
# uid=1001(runner) gid=121(docker)
|
||||||
options: -u 1001:121
|
options: -u 1001:121
|
||||||
|
|
||||||
@ -46,7 +46,12 @@ jobs:
|
|||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: /emsdk/upstream/emscripten/cache
|
path: /emsdk/upstream/emscripten/cache
|
||||||
key: 2.0.10-${{ runner.os }}
|
key: 2.0.31-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Patch Emscripten to support LZMA
|
||||||
|
run: |
|
||||||
|
cd /emsdk/upstream/emscripten
|
||||||
|
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch
|
||||||
|
|
||||||
- name: Build (host tools)
|
- name: Build (host tools)
|
||||||
run: |
|
run: |
|
||||||
|
@ -305,7 +305,7 @@ if(EMSCRIPTEN)
|
|||||||
add_definitions(-s DISABLE_EXCEPTION_CATCHING=0)
|
add_definitions(-s DISABLE_EXCEPTION_CATCHING=0)
|
||||||
|
|
||||||
# Export functions to Javascript.
|
# Export functions to Javascript.
|
||||||
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
|
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
|
||||||
|
|
||||||
# Preload all the files we generate during build.
|
# Preload all the files we generate during build.
|
||||||
# As we do not compile with FreeType / FontConfig, we also have no way to
|
# As we do not compile with FreeType / FontConfig, we also have no way to
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM emscripten/emsdk:2.0.10
|
FROM emscripten/emsdk:2.0.31
|
||||||
|
|
||||||
COPY emsdk-liblzma.patch /
|
COPY emsdk-liblzma.patch /
|
||||||
RUN cd /emsdk/upstream/emscripten && patch -p1 < /emsdk-liblzma.patch
|
RUN cd /emsdk/upstream/emscripten && patch -p1 < /emsdk-liblzma.patch
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## How to build with Emscripten
|
## How to build with Emscripten
|
||||||
|
|
||||||
Building with Emscripten works with emsdk 2.0.10 and above.
|
Building with Emscripten works with emsdk 2.0.31 and above.
|
||||||
|
|
||||||
Currently there is no LibLZMA support upstream; for this we suggest to apply
|
Currently there is no LibLZMA support upstream; for this we suggest to apply
|
||||||
the provided patch in this folder to your emsdk installation.
|
the provided patch in this folder to your emsdk installation.
|
||||||
|
@ -10,44 +10,35 @@ Modifed by OpenTTD to have the bare minimum needed to work. Otherwise there
|
|||||||
are constantly conflicts when trying to apply this patch to different versions
|
are constantly conflicts when trying to apply this patch to different versions
|
||||||
of emsdk.
|
of emsdk.
|
||||||
|
|
||||||
diff --git a/embuilder.py b/embuilder.py
|
diff --git a/tools/settings.py b/tools/settings.py
|
||||||
index 818262190ed..ab7d5adb7b2 100755
|
--- a/tools/settings.py
|
||||||
--- a/embuilder.py
|
+++ b/tools/settings.py
|
||||||
+++ b/embuilder.py
|
@@ -38,6 +38,7 @@
|
||||||
@@ -60,6 +60,7 @@
|
'USE_SDL_NET',
|
||||||
'harfbuzz',
|
'USE_SDL_GFX',
|
||||||
'icu',
|
'USE_LIBJPEG',
|
||||||
'libjpeg',
|
+ 'USE_LIBLZMA',
|
||||||
+ 'liblzma',
|
'USE_OGG',
|
||||||
'libpng',
|
'USE_REGAL',
|
||||||
'ogg',
|
'USE_BOOST_HEADERS',
|
||||||
'regal',
|
|
||||||
@@ -197,6 +198,8 @@ def main():
|
|
||||||
build_port('ogg', libname('libogg'))
|
|
||||||
elif what == 'libjpeg':
|
|
||||||
build_port('libjpeg', libname('libjpeg'))
|
|
||||||
+ elif what == 'liblzma':
|
|
||||||
+ build_port('liblzma', libname('liblzma'))
|
|
||||||
elif what == 'libpng':
|
|
||||||
build_port('libpng', libname('libpng'))
|
|
||||||
elif what == 'sdl2':
|
|
||||||
diff --git a/src/settings.js b/src/settings.js
|
diff --git a/src/settings.js b/src/settings.js
|
||||||
index 61cd98939ba..be6fcb678c6 100644
|
|
||||||
--- a/src/settings.js
|
--- a/src/settings.js
|
||||||
+++ b/src/settings.js
|
+++ b/src/settings.js
|
||||||
@@ -1197,6 +1197,9 @@ var USE_BZIP2 = 0;
|
@@ -1382,8 +1382,12 @@ var USE_BZIP2 = 0;
|
||||||
// 1 = use libjpeg from emscripten-ports
|
// 1 = use libjpeg from emscripten-ports
|
||||||
|
// [link]
|
||||||
var USE_LIBJPEG = 0;
|
var USE_LIBJPEG = 0;
|
||||||
|
|
||||||
+// 1 = use liblzma from emscripten-ports
|
+// 1 = use liblzma from emscripten-ports
|
||||||
|
+// [link]
|
||||||
+var USE_LIBLZMA = 0;
|
+var USE_LIBLZMA = 0;
|
||||||
+
|
+
|
||||||
// 1 = use libpng from emscripten-ports
|
// 1 = use libpng from emscripten-ports
|
||||||
|
// [link]
|
||||||
var USE_LIBPNG = 0;
|
var USE_LIBPNG = 0;
|
||||||
|
|
||||||
diff --git a/tools/ports/liblzma.py b/tools/ports/liblzma.py
|
diff --git a/tools/ports/liblzma.py b/tools/ports/liblzma.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000000..e9567ef36ff
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/tools/ports/liblzma.py
|
+++ b/tools/ports/liblzma.py
|
||||||
@@ -0,0 +1,160 @@
|
@@ -0,0 +1,160 @@
|
||||||
@ -58,6 +49,8 @@ index 00000000000..e9567ef36ff
|
|||||||
+
|
+
|
||||||
+import os
|
+import os
|
||||||
+import shutil
|
+import shutil
|
||||||
|
+import logging
|
||||||
|
+from pathlib import Path
|
||||||
+
|
+
|
||||||
+VERSION = '5.2.5'
|
+VERSION = '5.2.5'
|
||||||
+HASH = '7443674247deda2935220fbc4dfc7665e5bb5a260be8ad858c8bd7d7b9f0f868f04ea45e62eb17c0a5e6a2de7c7500ad2d201e2d668c48ca29bd9eea5a73a3ce'
|
+HASH = '7443674247deda2935220fbc4dfc7665e5bb5a260be8ad858c8bd7d7b9f0f868f04ea45e62eb17c0a5e6a2de7c7500ad2d201e2d668c48ca29bd9eea5a73a3ce'
|
||||||
@ -68,10 +61,11 @@ index 00000000000..e9567ef36ff
|
|||||||
+
|
+
|
||||||
+
|
+
|
||||||
+def get(ports, settings, shared):
|
+def get(ports, settings, shared):
|
||||||
+ libname = ports.get_lib_name('liblzma')
|
|
||||||
+ ports.fetch_project('liblzma', 'https://tukaani.org/xz/xz-' + VERSION + '.tar.gz', 'xz-' + VERSION, sha512hash=HASH)
|
+ ports.fetch_project('liblzma', 'https://tukaani.org/xz/xz-' + VERSION + '.tar.gz', 'xz-' + VERSION, sha512hash=HASH)
|
||||||
+
|
+
|
||||||
+ def create():
|
+ def create(final):
|
||||||
|
+ logging.info('building port: liblzma')
|
||||||
|
+
|
||||||
+ ports.clear_project_build('liblzma')
|
+ ports.clear_project_build('liblzma')
|
||||||
+
|
+
|
||||||
+ source_path = os.path.join(ports.get_dir(), 'liblzma', 'xz-' + VERSION)
|
+ source_path = os.path.join(ports.get_dir(), 'liblzma', 'xz-' + VERSION)
|
||||||
@ -88,22 +82,19 @@ index 00000000000..e9567ef36ff
|
|||||||
+ 'tuklib_exit.c', 'tuklib_mbstr_fw.c', 'tuklib_mbstr_width.c', 'tuklib_open_stdxxx.c', 'tuklib_progname.c']
|
+ 'tuklib_exit.c', 'tuklib_mbstr_fw.c', 'tuklib_mbstr_width.c', 'tuklib_open_stdxxx.c', 'tuklib_progname.c']
|
||||||
+ include_dirs_rel = ['../common', 'api', 'common', 'check', 'lz', 'rangecoder', 'lzma', 'delta', 'simple']
|
+ include_dirs_rel = ['../common', 'api', 'common', 'check', 'lz', 'rangecoder', 'lzma', 'delta', 'simple']
|
||||||
+
|
+
|
||||||
+ open(os.path.join(dest_path, 'src', 'config.h'), 'w').write(config_h)
|
+ Path(dest_path, os.path.join('src', 'config.h')).write_text(config_h)
|
||||||
+
|
+
|
||||||
+ final = os.path.join(dest_path, libname)
|
|
||||||
+ include_dirs = [os.path.join(dest_path, 'src', 'liblzma', p) for p in include_dirs_rel]
|
+ include_dirs = [os.path.join(dest_path, 'src', 'liblzma', p) for p in include_dirs_rel]
|
||||||
+ ports.build_port(os.path.join(dest_path, 'src'), final, flags=build_flags, exclude_dirs=exclude_dirs, exclude_files=exclude_files, includes=include_dirs)
|
+ ports.build_port(os.path.join(dest_path, 'src'), final, flags=build_flags, exclude_dirs=exclude_dirs, exclude_files=exclude_files, includes=include_dirs)
|
||||||
+
|
+
|
||||||
+ ports.install_headers(os.path.join(dest_path, 'src', 'liblzma', 'api'), 'lzma.h')
|
+ ports.install_headers(os.path.join(dest_path, 'src', 'liblzma', 'api'), 'lzma.h')
|
||||||
+ ports.install_headers(os.path.join(dest_path, 'src', 'liblzma', 'api', 'lzma'), '*.h', 'lzma')
|
+ ports.install_headers(os.path.join(dest_path, 'src', 'liblzma', 'api', 'lzma'), '*.h', 'lzma')
|
||||||
+
|
+
|
||||||
+ return final
|
+ return [shared.Cache.get_lib('liblzma.a', create, what='port')]
|
||||||
+
|
|
||||||
+ return [shared.Cache.get(libname, create, what='port')]
|
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
+def clear(ports, settings, shared):
|
+def clear(ports, settings, shared):
|
||||||
+ shared.Cache.erase_file(ports.get_lib_name('liblzma'))
|
+ shared.Cache.erase_lib('liblzma.a')
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
+def process_args(ports):
|
+def process_args(ports):
|
||||||
|
Loading…
Reference in New Issue
Block a user