From 5e87db615a5e430627b17da5dfbd52f0ef7f4db9 Mon Sep 17 00:00:00 2001
From: David Baker <dave@matrix.org>
Date: Fri, 21 Sep 2018 16:35:17 +0100
Subject: [PATCH] Make OLM_OPTIONS work again

The closure compiler was just renaming the variable so it never
would have picked them up. Make it an extern so it knows what to do.
---
 Makefile              | 3 ++-
 javascript/externs.js | 1 +
 javascript/olm_pre.js | 4 +---
 3 files changed, 4 insertions(+), 4 deletions(-)
 create mode 100644 javascript/externs.js

diff --git a/Makefile b/Makefile
index f6c2ab4..dcd5cc1 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,7 @@ JS_TARGET := javascript/olm.js
 
 JS_EXPORTED_FUNCTIONS := javascript/exported_functions.json
 JS_EXTRA_EXPORTED_RUNTIME_METHODS := ALLOC_STACK
+JS_EXTERNS := javascript/externs.js
 
 PUBLIC_HEADERS := include/olm/olm.h include/olm/outbound_group_session.h include/olm/inbound_group_session.h include/olm/pk.h
 
@@ -147,7 +148,7 @@ js: $(JS_TARGET)
 .PHONY: js
 
 $(JS_TARGET): $(JS_OBJECTS) $(JS_PRE) $(JS_POST) $(JS_EXPORTED_FUNCTIONS)
-	$(EMCC_LINK) \
+	EMCC_CLOSURE_ARGS="--externs $(JS_EXTERNS)" $(EMCC_LINK) \
                $(foreach f,$(JS_PRE),--pre-js $(f)) \
                $(foreach f,$(JS_POST),--post-js $(f)) \
                -s "EXPORTED_FUNCTIONS=@$(JS_EXPORTED_FUNCTIONS)" \
diff --git a/javascript/externs.js b/javascript/externs.js
new file mode 100644
index 0000000..8ec5b02
--- /dev/null
+++ b/javascript/externs.js
@@ -0,0 +1 @@
+var OLM_OPTIONS;
diff --git a/javascript/olm_pre.js b/javascript/olm_pre.js
index 5e8ed12..673b868 100644
--- a/javascript/olm_pre.js
+++ b/javascript/olm_pre.js
@@ -21,10 +21,8 @@ if (typeof(window) !== 'undefined') {
 }
 
 /* applications should define OLM_OPTIONS in the environment to override
- * emscripten module settings (we still need to (re) declare the variable
- * otherwise the closure compiler becomes sad).
+ * emscripten module settings
  */
-var OLM_OPTIONS;
 if (typeof(OLM_OPTIONS) !== 'undefined') {
     for (var olm_option_key in OLM_OPTIONS) {
         if (OLM_OPTIONS.hasOwnProperty(olm_option_key)) {
-- 
GitLab