OpenTTD-patches/os/emscripten/emsdk-nlohmann-json.patch
2023-05-14 23:22:02 +02:00

94 lines
2.9 KiB
Diff

From 0edcedbea375e59f41df10acaee0c483d245751f Mon Sep 17 00:00:00 2001
From: Patric Stout <truebrain@openttd.org>
Date: Tue, 2 May 2023 21:48:08 +0200
Subject: [PATCH] Add nlohmmann-json port
---
src/settings.js | 4 ++++
tools/ports/nlohmann_json.py | 46 ++++++++++++++++++++++++++++++++++++
tools/settings.py | 1 +
3 files changed, 51 insertions(+)
create mode 100644 tools/ports/nlohmann_json.py
diff --git a/src/settings.js b/src/settings.js
index f93140d..39f4366 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -1483,6 +1483,10 @@ var USE_MPG123 = false;
// [compile+link]
var USE_FREETYPE = false;
+// 1 = use nlohmann-json from emscripten-ports
+// [compile+link]
+var USE_NLOHMANN_JSON = false;
+
// Specify the SDL_mixer version that is being linked against.
// Doesn't *have* to match USE_SDL, but a good idea.
// [compile+link]
diff --git a/tools/ports/nlohmann_json.py b/tools/ports/nlohmann_json.py
new file mode 100644
index 0000000..9e44297
--- /dev/null
+++ b/tools/ports/nlohmann_json.py
@@ -0,0 +1,46 @@
+# Copyright 2023 The Emscripten Authors. All rights reserved.
+# Emscripten is available under two separate licenses, the MIT license and the
+# University of Illinois/NCSA Open Source License. Both these licenses can be
+# found in the LICENSE file.
+
+import os
+
+TAG = '3.11.2'
+HASH = '99d9e6d588cabe8913a37437f86acb5d4b8b98bce12423e633c11c13b61e6c7f92ef8f9a4e991baa590329ee2b5c09ca9db9894bee1e54bdd68e8d09d83cc245'
+
+
+def needed(settings):
+ return settings.USE_NLOHMANN_JSON
+
+
+def get(ports, settings, shared):
+ ports.fetch_project('nlohmann_json',
+ f'https://github.com/nlohmann/json/releases/download/v{TAG}/include.zip',
+ sha512hash=HASH)
+
+ def create(final):
+ source_path = os.path.join(ports.get_dir(), 'nlohmann_json')
+ source_path_include = os.path.join(source_path, 'include', 'nlohmann')
+ ports.install_header_dir(source_path_include, 'nlohmann')
+
+ # write out a dummy cpp file, to create an empty library
+ # this is needed as emscripten ports expect this, even if it is not used
+ dummy_file = os.path.join(source_path, 'dummy.cpp')
+ shared.safe_ensure_dirs(os.path.dirname(dummy_file))
+ ports.write_file(dummy_file, 'static void dummy() {}')
+
+ ports.build_port(source_path, final, 'nlohmann_json', srcs=['dummy.cpp'])
+
+ return [shared.cache.get_lib('libnlohmann_json.a', create, what='port')]
+
+
+def clear(ports, settings, shared):
+ shared.cache.erase_lib('libnlohmann_json.a')
+
+
+def process_args(ports):
+ return []
+
+
+def show():
+ return 'nlohmann-json'
diff --git a/tools/settings.py b/tools/settings.py
index 10d6ca0..8536092 100644
--- a/tools/settings.py
+++ b/tools/settings.py
@@ -47,6 +47,7 @@ PORTS_SETTINGS = {
'USE_MPG123',
'USE_GIFLIB',
'USE_FREETYPE',
+ 'USE_NLOHMANN_JSON',
'SDL2_MIXER_FORMATS',
'SDL2_IMAGE_FORMATS',
'USE_SQLITE3',
--
2.34.1