diff --git a/3rdp/build/GNUmakefile b/3rdp/build/GNUmakefile
index b0def7aabc8b4c127ded24d612fa57f08f49d381..9834e84ec8cab435e60daf0196493f99f9e42aca 100644
--- a/3rdp/build/GNUmakefile
+++ b/3rdp/build/GNUmakefile
@@ -48,7 +48,7 @@ $(JS_SRC): | $(3RDPSRCDIR)
 $(JS_IDIR): | $(3RDPODIR)
 	$(QUIET)$(IFNOTEXIST) mkdir $(JS_IDIR)
 
-$(JSLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/libmozjs.tgz $(3RDP_ROOT)$(DIRSEP)build/js_src_jsnativestack_cpp.patch $(3RDP_ROOT)$(DIRSEP)build/js-configure.patch $(3RDP_ROOT)$(DIRSEP)build/js-configure.in.patch | $(JS_SRC) $(JS_IDIR)
+$(JSLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/libmozjs.tgz $(3RDP_ROOT)$(DIRSEP)build/js_src_jsnativestack_cpp.patch $(3RDP_ROOT)$(DIRSEP)build/js-configure.patch $(3RDP_ROOT)$(DIRSEP)build/js-configure.in.patch $(3RDP_ROOT)$(DIRSEP)build/imacro-asm-fix.patch | $(JS_SRC) $(JS_IDIR)
 	@echo Creating $@ ...
 	$(QUIET)-rm -rf $(JS_SRC)/*
 	$(QUIET)tar -xzC $(JS_SRC) -f $(3RDPDISTDIR)$(DIRSEP)libmozjs.tgz
@@ -56,6 +56,7 @@ $(JSLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/libmozjs.tgz $(3RDP_ROOT)$(DIRSEP)buil
 	$(QUIET)patch -b -p0 -d $(JS_SRC)$(DIRSEP)js-1.8.5 < js_src_jsnativestack_cpp.patch
 	$(QUIET)patch -b -p0 -d $(JS_SRC) < js-configure.patch
 	$(QUIET)patch -b -p0 -d $(JS_SRC) < js-configure.in.patch
+	$(QUIET)patch -b -p0 -d $(JS_SRC) < imacro-asm-fix.patch
 	-$(QUIET)cd $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src && autoconf-2.13
 	$(QUIET)cd $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src && env $(JS_CONFIGURE_ENV) ./configure $(JS_CONFIGURE_ARGS)
 	$(QUIET)$(MAKE) -C $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src
diff --git a/3rdp/build/imacro-asm-fix.patch b/3rdp/build/imacro-asm-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..50e1166515a2ce9f9ae666c42c9f32187449f72a
--- /dev/null
+++ b/3rdp/build/imacro-asm-fix.patch
@@ -0,0 +1,11 @@
+--- js-1.8.5/js/src/imacro_asm.py	2020-12-19 01:15:38.325248687 -0800
++++ js-1.8.5/js/src/imacro_asm.py	2020-12-19 01:15:30.005192001 -0800
+@@ -456,7 +456,7 @@
+ if __name__ == '__main__':
+     import sys
+     if len(sys.argv) != 3:
+-        print "usage: python imacro_asm.py infile.jsasm outfile.c.out"
++        print("usage: python imacro_asm.py infile.jsasm outfile.c.out")
+         sys.exit(1)
+ 
+     f = open(sys.argv[2], 'w')
diff --git a/3rdp/build/js-configure.patch b/3rdp/build/js-configure.patch
index 2aa27ddc68d5db02d448f3d7dc0d16ea67cc144e..e4140198cf967a652b7cb85df50678bba52f4e2e 100644
--- a/3rdp/build/js-configure.patch
+++ b/3rdp/build/js-configure.patch
@@ -1,5 +1,24 @@
---- js-1.8.5/js/src/configure.orig	2011-03-31 12:08:36.000000000 -0700
-+++ js-1.8.5/js/src/configure	2014-01-03 01:02:00.000000000 -0800
+--- js-1.8.5/js/src/configure	2011-03-31 12:08:36.000000000 -0700
++++ js-1.8.5/js/src/configure	2020-12-19 01:02:37.189932487 -0800
+@@ -6391,12 +6391,12 @@
+ echo $ac_n "checking for Python version >= $PYTHON_VERSION but not 3.x""... $ac_c" 1>&6
+ echo "configure:6393: checking for Python version >= $PYTHON_VERSION but not 3.x" >&5
+ 
+-$PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
+-_python_res=$?
+-
+-if test "$_python_res" != 0; then
+-    { echo "configure: error: Python $PYTHON_VERSION or higher (but not Python 3.x) is required." 1>&2; exit 1; }
+-fi
++#$PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
++#_python_res=$?
++#
++#if test "$_python_res" != 0; then
++#    { echo "configure: error: Python $PYTHON_VERSION or higher (but not Python 3.x) is required." 1>&2; exit 1; }
++#fi
+ echo "$ac_t""yes" 1>&6
+ 
+ 
 @@ -9446,7 +9446,7 @@
  echo "$ac_t""$ac_cv_have_visibility_builtin_bug" 1>&6
          if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \