summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-12-03 17:15:14 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-12-05 01:12:52 +0100
commitdd9503dc1937e1469b2a6f8e145e80acbf2c7cbb (patch)
tree3d99772bd543ddda07ff17a7ef6247e982488574 /platform
parent1e7bd3d08be6559ae14b0d25234cfc01298fe450 (diff)
[HTML5] Make GDNative support feature-based.
This is suboptimal as it requires adding an extra compile flag, but rewriting how feature tags work is beyond the scope of this work.
Diffstat (limited to 'platform')
-rw-r--r--platform/javascript/SCsub1
-rw-r--r--platform/javascript/export/export.cpp6
-rw-r--r--platform/javascript/os_javascript.cpp16
3 files changed, 21 insertions, 2 deletions
diff --git a/platform/javascript/SCsub b/platform/javascript/SCsub
index 3501e17c6c..59f3dce3ad 100644
--- a/platform/javascript/SCsub
+++ b/platform/javascript/SCsub
@@ -52,6 +52,7 @@ if env["gdnative_enabled"]:
# The side library, containing all Godot code.
wasm_env = env.Clone()
+ wasm_env.Append(CPPDEFINES=["WASM_GDNATIVE"]) # So that OS knows it can run GDNative libraries.
wasm_env.Append(CCFLAGS=["-s", "SIDE_MODULE=2"])
wasm_env.Append(LINKFLAGS=["-s", "SIDE_MODULE=2"])
wasm = wasm_env.add_program("#bin/godot.side${PROGSUFFIX}.wasm", javascript_files)
diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp
index 017ba77231..f77bf6ab97 100644
--- a/platform/javascript/export/export.cpp
+++ b/platform/javascript/export/export.cpp
@@ -330,6 +330,12 @@ void EditorExportPlatformJavaScript::get_preset_features(const Ref<EditorExportP
r_features->push_back("etc2");
}
}
+ ExportMode mode = (ExportMode)(int)p_preset->get("variant/export_type");
+ if (mode == EXPORT_MODE_THREADS) {
+ r_features->push_back("threads");
+ } else if (mode == EXPORT_MODE_GDNATIVE) {
+ r_features->push_back("wasm32");
+ }
}
void EditorExportPlatformJavaScript::get_export_options(List<ExportOption> *r_options) {
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index b3ef3fe573..ebfcd7293e 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -128,12 +128,24 @@ int OS_JavaScript::get_process_id() const {
}
bool OS_JavaScript::_check_internal_feature_support(const String &p_feature) {
- if (p_feature == "HTML5" || p_feature == "web")
+ if (p_feature == "HTML5" || p_feature == "web") {
return true;
+ }
#ifdef JAVASCRIPT_EVAL_ENABLED
- if (p_feature == "JavaScript")
+ if (p_feature == "JavaScript") {
+ return true;
+ }
+#endif
+#ifndef NO_THREADS
+ if (p_feature == "threads") {
return true;
+ }
+#endif
+#if WASM_GDNATIVE
+ if (p_feature == "wasm32") {
+ return true;
+ }
#endif
return false;