diff --git a/codecs/cpp.Dockerfile b/codecs/cpp.Dockerfile
index 88e489db..ea1507ae 100644
--- a/codecs/cpp.Dockerfile
+++ b/codecs/cpp.Dockerfile
@@ -5,5 +5,7 @@ ENV CXXFLAGS "${CFLAGS} -std=c++17"
ENV LDFLAGS "${CFLAGS}"
# Build and cache standard libraries with these flags
RUN emcc ${CXXFLAGS} --bind -xc++ /dev/null -o /dev/null
+RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
+RUN /bin/bash -ic 'nvm install 14.7.0'
WORKDIR /src
CMD ["sh", "-c", "emmake make -j`nproc`"]
diff --git a/codecs/mozjpeg_enc/.emscripten b/codecs/mozjpeg_enc/.emscripten
new file mode 100644
index 00000000..5da1fd50
--- /dev/null
+++ b/codecs/mozjpeg_enc/.emscripten
@@ -0,0 +1,13 @@
+import os
+emsdk_path = "/emsdk/"
+#NODE_JS = emsdk_path + '/node/12.18.1_64bit/bin/node'
+# We need a newer version of Node that supports the most recent iteration of Wasm SIMD
+# and need to enable that experimental support via flag so that autoconf can successfully
+# detect SIMD support.
+NODE_JS=["/root/.nvm/versions/node/v14.7.0/bin/node", "--experimental-wasm-simd"]
+LLVM_ROOT = emsdk_path + '/upstream/bin'
+BINARYEN_ROOT = emsdk_path + '/upstream'
+EMSCRIPTEN_ROOT = emsdk_path + '/upstream/emscripten'
+TEMP_DIR = emsdk_path + '/tmp'
+COMPILER_ENGINE = NODE_JS
+JS_ENGINES = [NODE_JS]
diff --git a/codecs/mozjpeg_enc/Makefile b/codecs/mozjpeg_enc/Makefile
index 30b5ca0e..542e0b78 100644
--- a/codecs/mozjpeg_enc/Makefile
+++ b/codecs/mozjpeg_enc/Makefile
@@ -5,11 +5,21 @@ CODEC_OUT := $(addprefix $(CODEC_DIR)/, $(CODEC_OUT_RELATIVE))
OUT_JS := mozjpeg_enc.js
OUT_WASM := $(OUT_JS:.js=.wasm)
+CFLAGS += -msimd128 -msse --em-config /src/.emscripten
+CXXFLAGS += -msimd128 -msse --em-config /src/.emscripten
+
+#override CFLAGS += "-msimd128 -msse"
+#override CXXFLAGS += "-msimd128 -msse"
+
.PHONY: all clean
all: $(OUT_JS)
%.js: %.cpp $(CODEC_OUT)
+ # We just to disable the overridden NODE_JS binary because
+ # `--closure 1` can’t handle arrays in `.emscripten` it seems.
+ # https://github.com/emscripten-core/emsdk/issues/583
+ export EM_NODE_JS='/root/.nvm/versions/node/v14.7.0/bin/node' && \
$(CXX) \
-I $(CODEC_DIR) \
${CXXFLAGS} \
diff --git a/codecs/mozjpeg_enc/example.html b/codecs/mozjpeg_enc/example.html
index 2cff900f..76b54ef1 100644
--- a/codecs/mozjpeg_enc/example.html
+++ b/codecs/mozjpeg_enc/example.html
@@ -1,26 +1,14 @@
diff --git a/codecs/mozjpeg_enc/mozjpeg_enc.cpp b/codecs/mozjpeg_enc/mozjpeg_enc.cpp
index 27388587..3673db5c 100644
--- a/codecs/mozjpeg_enc/mozjpeg_enc.cpp
+++ b/codecs/mozjpeg_enc/mozjpeg_enc.cpp
@@ -1,5 +1,7 @@
#include
#include
+#include
+#include
#include
#include
#include
diff --git a/codecs/mozjpeg_enc/mozjpeg_enc.wasm b/codecs/mozjpeg_enc/mozjpeg_enc.wasm
index bf5df729..e6e508c2 100644
Binary files a/codecs/mozjpeg_enc/mozjpeg_enc.wasm and b/codecs/mozjpeg_enc/mozjpeg_enc.wasm differ