Basic ARM and Aarch64 support for emsdk (#277)

This adds an "arch" field to various structures, so ARM and Aarch64
Linux can download appropriate versions of node and in theory
other tools, without trying to download x86 builds.

Since there are no prebuilt packages for clang and binaryen on ARM
or Aarch64 this will require building them, which can take a long
time, but works once installed.

Node 4.1.1 and 8.9.1 entries for ARM (armv7l) and aarch64 are
added, and the various x86/x86_64-only things are marked as such
to be filtered out on ARM machines.

Other downloads work as long as they don't have an arch specified,
which indicates they're expected to be arch-independent.

Does not yet fully work on ARM64 Windows (but works in WSL as the
Linux support is fine).
This commit is contained in:
Brion Vibber
2019-08-02 15:14:11 -07:00
committed by Alon Zakai
parent e2110d8816
commit 2b568055af
2 changed files with 147 additions and 19 deletions

76
emsdk
View File

@@ -79,6 +79,22 @@ if not OSX and (platform.system() == 'Linux' or os.name == 'posix'):
LINUX = True LINUX = True
ENVPATH_SEPARATOR = ':' ENVPATH_SEPARATOR = ':'
UNIX = (OSX or LINUX)
ARCH = 'unknown'
machine = platform.machine()
if machine.startswith('x64') or machine.startswith('amd64') or machine.startswith('x86_64'):
ARCH = 'x86_64'
elif machine.endswith('86'):
ARCH = 'x86'
elif machine.startswith('aarch64') or machine.lower().startswith('arm64'):
ARCH = 'aarch64'
elif platform.machine().startswith('arm'):
ARCH = 'arm'
else:
print("Warning: unknown machine architecture " + machine)
print()
# Don't saturate all cores to not steal the whole system, but be aggressive. # Don't saturate all cores to not steal the whole system, but be aggressive.
CPU_CORES = max(multiprocessing.cpu_count() - 1, 1) CPU_CORES = max(multiprocessing.cpu_count() - 1, 1)
@@ -973,9 +989,19 @@ def build_llvm_tool(tool):
enable_assertions = ENABLE_LLVM_ASSERTIONS.lower() == 'on' or (ENABLE_LLVM_ASSERTIONS == 'auto' and build_type.lower() != 'release' and build_type.lower() != 'minsizerel') enable_assertions = ENABLE_LLVM_ASSERTIONS.lower() == 'on' or (ENABLE_LLVM_ASSERTIONS == 'auto' and build_type.lower() != 'release' and build_type.lower() != 'minsizerel')
only_supports_wasm = hasattr(tool, 'only_supports_wasm') only_supports_wasm = hasattr(tool, 'only_supports_wasm')
targets_to_build = 'X86' if ARCH == 'x86' or ARCH == 'x86_64':
targets_to_build = 'X86'
elif ARCH == 'arm':
targets_to_build = 'ARM'
elif ARCH == 'aarch64':
targets_to_build = 'AArch64'
else:
# May have problems with emconfigure
targets_to_build = ''
if not only_supports_wasm: if not only_supports_wasm:
targets_to_build += ';JSBackend' if targets_to_build != '':
targets_to_build += ';'
targets_to_build += 'JSBackend'
args = ['-DLLVM_TARGETS_TO_BUILD=' + targets_to_build, '-DLLVM_INCLUDE_EXAMPLES=OFF', '-DCLANG_INCLUDE_EXAMPLES=OFF', '-DLLVM_INCLUDE_TESTS=' + tests_arg, '-DCLANG_INCLUDE_TESTS=' + tests_arg, '-DLLVM_ENABLE_ASSERTIONS=' + ('ON' if enable_assertions else 'OFF')] args = ['-DLLVM_TARGETS_TO_BUILD=' + targets_to_build, '-DLLVM_INCLUDE_EXAMPLES=OFF', '-DCLANG_INCLUDE_EXAMPLES=OFF', '-DLLVM_INCLUDE_TESTS=' + tests_arg, '-DCLANG_INCLUDE_TESTS=' + tests_arg, '-DLLVM_ENABLE_ASSERTIONS=' + ('ON' if enable_assertions else 'OFF')]
if os.environ.get('LLVM_CMAKE_ARGS'): if os.environ.get('LLVM_CMAKE_ARGS'):
extra_args = os.environ['LLVM_CMAKE_ARGS'].split(',') extra_args = os.environ['LLVM_CMAKE_ARGS'].split(',')
@@ -1370,11 +1396,17 @@ class Tool(object):
else: else:
return [] return []
def compatible_with_this_arch(self):
if hasattr(self, 'arch'):
if self.arch != ARCH:
return False
return True
def compatible_with_this_os(self): def compatible_with_this_os(self):
if hasattr(self, 'os'): if hasattr(self, 'os'):
if self.os == 'all': if self.os == 'all':
return True return True
if (WINDOWS and 'win' in self.os) or (LINUX and ('linux' in self.os or 'unix' in self.os)) or (OSX and ('osx' in self.os or 'unix' in self.os)): if self.compatible_with_this_arch() and ((WINDOWS and 'win' in self.os) or (LINUX and ('linux' in self.os or 'unix' in self.os)) or (OSX and ('osx' in self.os or 'unix' in self.os))):
return True return True
else: else:
return False return False
@@ -1382,16 +1414,16 @@ class Tool(object):
if not hasattr(self, 'osx_url') and not hasattr(self, 'windows_url') and not hasattr(self, 'unix_url') and not hasattr(self, 'linux_url'): if not hasattr(self, 'osx_url') and not hasattr(self, 'windows_url') and not hasattr(self, 'unix_url') and not hasattr(self, 'linux_url'):
return True return True
if OSX and hasattr(self, 'osx_url'): if OSX and hasattr(self, 'osx_url') and self.compatible_with_this_arch():
return True return True
if LINUX and hasattr(self, 'linux_url'): if LINUX and hasattr(self, 'linux_url') and self.compatible_with_this_arch():
return True return True
if WINDOWS and (hasattr(self, 'windows_url') or hasattr(self, 'windows_install_path')): if WINDOWS and (hasattr(self, 'windows_url') or hasattr(self, 'windows_install_path')) and self.compatible_with_this_arch():
return True return True
if (LINUX or OSX) and hasattr(self, 'unix_url'): if UNIX and hasattr(self, 'unix_url'):
return True return True
return hasattr(self, 'url') return hasattr(self, 'url')
@@ -1517,7 +1549,7 @@ class Tool(object):
return self.osx_url return self.osx_url
elif LINUX and hasattr(self, 'linux_url'): elif LINUX and hasattr(self, 'linux_url'):
return self.linux_url return self.linux_url
elif (OSX or LINUX) and hasattr(self, 'unix_url'): elif UNIX and hasattr(self, 'unix_url'):
return self.unix_url return self.unix_url
elif hasattr(self, 'url'): elif hasattr(self, 'url'):
return self.url return self.url
@@ -2502,16 +2534,22 @@ def main():
if cmd == 'list': if cmd == 'list':
print('') print('')
print('The *recommended* precompiled SDK download is %s (%s).' % (find_latest_releases_version(), find_latest_releases_hash())) if (LINUX or OSX or WINDOWS) and (ARCH == 'x86' or ARCH == 'x86_64'):
print() print('The *recommended* precompiled SDK download is %s (%s).' % (find_latest_releases_version(), find_latest_releases_hash()))
print('To install/activate it, use one of:') print()
print(' latest [default (fastcomp) backend]') print('To install/activate it, use one of:')
print(' latest-upstream [upstream LLVM wasm backend]') print(' latest [default (fastcomp) backend]')
print('') print(' latest-upstream [upstream LLVM wasm backend]')
print('Those are equivalent to installing/activating the following:') print('')
print(' %s' % find_latest_releases_version()) print('Those are equivalent to installing/activating the following:')
print(' %s-upstream' % find_latest_releases_version()) print(' %s' % find_latest_releases_version())
print('') print(' %s-upstream' % find_latest_releases_version())
print('')
else:
print('Warning: your platform does not have precompiled SDKs available.')
print('You may install components from source.')
print('')
print('All recent (non-legacy) installable versions are:') print('All recent (non-legacy) installable versions are:')
releases_versions = sorted(load_releases_versions()) releases_versions = sorted(load_releases_versions())
releases_versions.reverse() releases_versions.reverse()
@@ -2612,7 +2650,7 @@ def main():
tools_to_activate = process_tool_list(tools_to_activate, log_errors=True) tools_to_activate = process_tool_list(tools_to_activate, log_errors=True)
env_string = construct_env(tools_to_activate, len(sys.argv) >= 3 and 'perm' in sys.argv[2]) env_string = construct_env(tools_to_activate, len(sys.argv) >= 3 and 'perm' in sys.argv[2])
open(outfile, 'w').write(env_string) open(outfile, 'w').write(env_string)
if LINUX or OSX: if UNIX:
os.chmod(outfile, 0o755) os.chmod(outfile, 0o755)
return 0 return 0
elif cmd == 'update': elif cmd == 'update':

View File

@@ -4,6 +4,7 @@
"id": "clang", "id": "clang",
"version": "3.2", "version": "3.2",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "clang_3.2_32bit.zip", "windows_url": "clang_3.2_32bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "LLVM_ROOT='%installation_dir%'", "activated_cfg": "LLVM_ROOT='%installation_dir%'",
@@ -14,6 +15,7 @@
"id": "clang", "id": "clang",
"version": "3.2", "version": "3.2",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "clang_3.2_64bit.zip", "windows_url": "clang_3.2_64bit.zip",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "LLVM_ROOT='%installation_dir%/bin'", "activated_cfg": "LLVM_ROOT='%installation_dir%/bin'",
@@ -24,6 +26,7 @@
"id": "clang", "id": "clang",
"version": "3.3", "version": "3.3",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "clang_3.3_32bit.zip", "windows_url": "clang_3.3_32bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "LLVM_ROOT='%installation_dir%'", "activated_cfg": "LLVM_ROOT='%installation_dir%'",
@@ -34,6 +37,7 @@
"id": "clang", "id": "clang",
"version": "3.3", "version": "3.3",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "clang_3.3_64bit.zip", "windows_url": "clang_3.3_64bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "LLVM_ROOT='%installation_dir%'", "activated_cfg": "LLVM_ROOT='%installation_dir%'",
@@ -44,6 +48,7 @@
"id": "clang", "id": "clang",
"version": "3.2", "version": "3.2",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"osx_url": "clang%2Bllvm-3.2-x86_64-apple-darwin11.tar.gz", "osx_url": "clang%2Bllvm-3.2-x86_64-apple-darwin11.tar.gz",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "LLVM_ROOT='%installation_dir%/bin'", "activated_cfg": "LLVM_ROOT='%installation_dir%/bin'",
@@ -54,6 +59,7 @@
"id": "clang", "id": "clang",
"version": "3.3", "version": "3.3",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"osx_url": "clang%2Bllvm-3.3-x86_64-apple-darwin12.tar.gz", "osx_url": "clang%2Bllvm-3.3-x86_64-apple-darwin12.tar.gz",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "LLVM_ROOT='%installation_dir%/bin'", "activated_cfg": "LLVM_ROOT='%installation_dir%/bin'",
@@ -94,6 +100,7 @@
"id": "clang", "id": "clang",
"version": "nightly-e%nightly-llvm-64bit%", "version": "nightly-e%nightly-llvm-64bit%",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"append_bitness": false, "append_bitness": false,
"windows_url": "llvm/nightly/win_64bit/emscripten-llvm-e%nightly-llvm-64bit%.zip", "windows_url": "llvm/nightly/win_64bit/emscripten-llvm-e%nightly-llvm-64bit%.zip",
"osx_url": "llvm/nightly/osx_64bit/emscripten-llvm-e%nightly-llvm-64bit%.tar.gz", "osx_url": "llvm/nightly/osx_64bit/emscripten-llvm-e%nightly-llvm-64bit%.tar.gz",
@@ -163,6 +170,7 @@
"id": "releases", "id": "releases",
"version": "upstream-%releases-tag%", "version": "upstream-%releases-tag%",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tbz2", "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tbz2",
"osx_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tbz2", "osx_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tbz2",
"windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip", "windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip",
@@ -177,6 +185,7 @@
"id": "releases", "id": "releases",
"version": "fastcomp-%releases-tag%", "version": "fastcomp-%releases-tag%",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tbz2", "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tbz2",
"osx_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tbz2", "osx_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tbz2",
"windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip", "windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip",
@@ -192,6 +201,7 @@
"id": "clang", "id": "clang",
"version": "e1.13.0", "version": "e1.13.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.13.0.zip", "windows_url": "emscripten-clang_e1.13.0.zip",
"osx_url": "emscripten-clang_e1.13.0.tar.gz", "osx_url": "emscripten-clang_e1.13.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -203,6 +213,7 @@
"id": "clang", "id": "clang",
"version": "e1.13.1", "version": "e1.13.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.13.1.zip", "windows_url": "emscripten-clang_e1.13.1.zip",
"osx_url": "emscripten-clang_e1.13.1.tar.gz", "osx_url": "emscripten-clang_e1.13.1.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -214,6 +225,7 @@
"id": "clang", "id": "clang",
"version": "e1.16.0", "version": "e1.16.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.16.0.zip", "windows_url": "emscripten-clang_e1.16.0.zip",
"osx_url": "emscripten-clang_e1.16.0.tar.gz", "osx_url": "emscripten-clang_e1.16.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -225,6 +237,7 @@
"id": "clang", "id": "clang",
"version": "e1.21.0", "version": "e1.21.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.21.0.zip", "windows_url": "emscripten-clang_e1.21.0.zip",
"osx_url": "emscripten-clang_e1.21.0.tar.gz", "osx_url": "emscripten-clang_e1.21.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -236,6 +249,7 @@
"id": "clang", "id": "clang",
"version": "e1.22.0", "version": "e1.22.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.22.0.zip", "windows_url": "emscripten-clang_e1.22.0.zip",
"osx_url": "emscripten-clang_e1.22.0.tar.gz", "osx_url": "emscripten-clang_e1.22.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -247,6 +261,7 @@
"id": "clang", "id": "clang",
"version": "e1.25.0", "version": "e1.25.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.25.0.zip", "windows_url": "emscripten-clang_e1.25.0.zip",
"osx_url": "emscripten-clang_e1.25.0.tar.gz", "osx_url": "emscripten-clang_e1.25.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -258,6 +273,7 @@
"id": "clang", "id": "clang",
"version": "e1.27.0", "version": "e1.27.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.27.0.zip", "windows_url": "emscripten-clang_e1.27.0.zip",
"osx_url": "emscripten-clang_e1.27.0.tar.gz", "osx_url": "emscripten-clang_e1.27.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -269,6 +285,7 @@
"id": "clang", "id": "clang",
"version": "e1.29.0", "version": "e1.29.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.29.0.zip", "windows_url": "emscripten-clang_e1.29.0.zip",
"osx_url": "emscripten-clang_e1.29.0.tar.gz", "osx_url": "emscripten-clang_e1.29.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -280,6 +297,7 @@
"id": "clang", "id": "clang",
"version": "e1.30.0", "version": "e1.30.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.30.0.zip", "windows_url": "emscripten-clang_e1.30.0.zip",
"osx_url": "emscripten-clang_e1.30.0.tar.gz", "osx_url": "emscripten-clang_e1.30.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -290,6 +308,7 @@
"id": "clang", "id": "clang",
"version": "e1.34.1", "version": "e1.34.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.34.1.zip", "windows_url": "emscripten-clang_e1.34.1.zip",
"osx_url": "emscripten-clang_e1.34.1.tar.gz", "osx_url": "emscripten-clang_e1.34.1.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -300,6 +319,7 @@
"id": "clang", "id": "clang",
"version": "e1.35.0", "version": "e1.35.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "emscripten-clang_e1.35.0.zip", "windows_url": "emscripten-clang_e1.35.0.zip",
"osx_url": "emscripten-clang_e1.35.0.tar.gz", "osx_url": "emscripten-clang_e1.35.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -310,6 +330,7 @@
"id": "clang", "id": "clang",
"version": "e1.37.1", "version": "e1.37.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "llvm/tag/win_64bit/emscripten-llvm-e1.37.1.zip", "windows_url": "llvm/tag/win_64bit/emscripten-llvm-e1.37.1.zip",
"osx_url": "llvm/tag/osx_64bit/emscripten-llvm-e1.37.1.tar.gz", "osx_url": "llvm/tag/osx_64bit/emscripten-llvm-e1.37.1.tar.gz",
"linux_url": "llvm/tag/linux_64bit/emscripten-llvm-e1.37.1.tar.gz", "linux_url": "llvm/tag/linux_64bit/emscripten-llvm-e1.37.1.tar.gz",
@@ -321,6 +342,7 @@
"id": "clang", "id": "clang",
"version": "e%precompiled_tag32%", "version": "e%precompiled_tag32%",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "llvm/tag/win_64bit/emscripten-llvm-e%precompiled_tag32%.zip", "windows_url": "llvm/tag/win_64bit/emscripten-llvm-e%precompiled_tag32%.zip",
"osx_url": "llvm/tag/osx_64bit/emscripten-llvm-e%precompiled_tag32%.tar.gz", "osx_url": "llvm/tag/osx_64bit/emscripten-llvm-e%precompiled_tag32%.tar.gz",
"linux_url": "llvm/tag/linux_64bit/emscripten-llvm-e%precompiled_tag32%.tar.gz", "linux_url": "llvm/tag/linux_64bit/emscripten-llvm-e%precompiled_tag32%.tar.gz",
@@ -332,6 +354,7 @@
"id": "clang", "id": "clang",
"version": "e%precompiled_tag64%", "version": "e%precompiled_tag64%",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/old/win/emscripten-llvm-e%precompiled_tag64%.zip", "windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/old/win/emscripten-llvm-e%precompiled_tag64%.zip",
"osx_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/old/mac/emscripten-llvm-e%precompiled_tag64%.tar.gz", "osx_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/old/mac/emscripten-llvm-e%precompiled_tag64%.tar.gz",
"linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/old/linux/emscripten-llvm-e%precompiled_tag64%.tar.gz", "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/old/linux/emscripten-llvm-e%precompiled_tag64%.tar.gz",
@@ -343,6 +366,7 @@
"id": "node", "id": "node",
"version": "0.10.17", "version": "0.10.17",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "node_0.10.17_32bit.exe", "windows_url": "node_0.10.17_32bit.exe",
"windows_install_path": "node/0.10.17_32bit/node.exe", "windows_install_path": "node/0.10.17_32bit/node.exe",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -354,6 +378,7 @@
"id": "node", "id": "node",
"version": "0.10.17", "version": "0.10.17",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "node_0.10.17_64bit.exe", "windows_url": "node_0.10.17_64bit.exe",
"windows_install_path": "node/0.10.17_64bit/node.exe", "windows_install_path": "node/0.10.17_64bit/node.exe",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -365,6 +390,7 @@
"id": "node", "id": "node",
"version": "0.10.18", "version": "0.10.18",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"osx_url": "node-v0.10.18-darwin-x64.tar.gz", "osx_url": "node-v0.10.18-darwin-x64.tar.gz",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node'", "activated_cfg": "NODE_JS='%installation_dir%/bin/node'",
@@ -375,6 +401,7 @@
"id": "node", "id": "node",
"version": "0.12.2", "version": "0.12.2",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "node_0.12.2_32bit.exe", "windows_url": "node_0.12.2_32bit.exe",
"windows_install_path": "node/0.12.2_32bit/node.exe", "windows_install_path": "node/0.12.2_32bit/node.exe",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -386,6 +413,7 @@
"id": "node", "id": "node",
"version": "0.12.2", "version": "0.12.2",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "node_0.12.2_64bit.exe", "windows_url": "node_0.12.2_64bit.exe",
"windows_install_path": "node/0.12.2_64bit/node.exe", "windows_install_path": "node/0.12.2_64bit/node.exe",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -397,6 +425,7 @@
"id": "node", "id": "node",
"version": "0.12.2", "version": "0.12.2",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"osx_url": "node-v0.12.2-darwin-x64.tar.gz", "osx_url": "node-v0.12.2-darwin-x64.tar.gz",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node'", "activated_cfg": "NODE_JS='%installation_dir%/bin/node'",
@@ -407,16 +436,28 @@
"id": "node", "id": "node",
"version": "4.1.1", "version": "4.1.1",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "node_4.1.1_32bit.zip", "windows_url": "node_4.1.1_32bit.zip",
"linux_url": "node-v4.1.1-linux-x86.tar.gz", "linux_url": "node-v4.1.1-linux-x86.tar.gz",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
}, },
{
"id": "node",
"version": "4.1.1",
"bitness": 32,
"arch": "arm",
"linux_url": "https://nodejs.org/download/release/v4.1.1/node-v4.1.1-linux-armv7l.tar.xz",
"activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
},
{ {
"id": "node", "id": "node",
"version": "4.1.1", "version": "4.1.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"osx_url": "node-v4.1.1-darwin-x64.tar.gz", "osx_url": "node-v4.1.1-darwin-x64.tar.gz",
"windows_url": "node_4.1.1_64bit.zip", "windows_url": "node_4.1.1_64bit.zip",
"linux_url": "node-v4.1.1-linux-x64.tar.gz", "linux_url": "node-v4.1.1-linux-x64.tar.gz",
@@ -424,20 +465,42 @@
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
}, },
{
"id": "node",
"version": "4.1.1",
"bitness": 64,
"arch": "aarch64",
"linux_url": "https://nodejs.org/download/release/v4.1.1/node-v4.1.1-linux-arm64.tar.gz",
"activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
},
{ {
"id": "node", "id": "node",
"version": "8.9.1", "version": "8.9.1",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "node-v8.9.1-win-x86.zip", "windows_url": "node-v8.9.1-win-x86.zip",
"linux_url": "node-v8.9.1-linux-x86.tar.xz", "linux_url": "node-v8.9.1-linux-x86.tar.xz",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
}, },
{
"id": "node",
"version": "8.9.1",
"arch": "arm",
"bitness": 32,
"linux_url": "https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-armv7l.tar.xz",
"activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
},
{ {
"id": "node", "id": "node",
"version": "8.9.1", "version": "8.9.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"osx_url": "node-v8.9.1-darwin-x64.tar.gz", "osx_url": "node-v8.9.1-darwin-x64.tar.gz",
"windows_url": "node-v8.9.1-win-x64.zip", "windows_url": "node-v8.9.1-win-x64.zip",
"linux_url": "node-v8.9.1-linux-x64.tar.xz", "linux_url": "node-v8.9.1-linux-x64.tar.xz",
@@ -445,10 +508,21 @@
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
}, },
{
"id": "node",
"version": "8.9.1",
"arch": "aarch64",
"bitness": 64,
"linux_url": "https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-arm64.tar.xz",
"activated_path": "%installation_dir%/bin",
"activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
"activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
},
{ {
"id": "python", "id": "python",
"version": "2.7.5.1", "version": "2.7.5.1",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "python_2.7.5.1_32bit.zip", "windows_url": "python_2.7.5.1_32bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "PYTHON='%installation_dir%/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python%.exe%'",
@@ -459,6 +533,7 @@
"id": "python", "id": "python",
"version": "2.7.5", "version": "2.7.5",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "python_2.7.5_64bit.zip", "windows_url": "python_2.7.5_64bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "PYTHON='%installation_dir%/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python%.exe%'",
@@ -469,6 +544,7 @@
"id": "python", "id": "python",
"version": "2.7.5.3", "version": "2.7.5.3",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "python_2.7.5.3_32bit.zip", "windows_url": "python_2.7.5.3_32bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "PYTHON='%installation_dir%/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python%.exe%'",
@@ -479,6 +555,7 @@
"id": "python", "id": "python",
"version": "2.7.5.3", "version": "2.7.5.3",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "python_2.7.5.3_64bit.zip", "windows_url": "python_2.7.5.3_64bit.zip",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
"activated_cfg": "PYTHON='%installation_dir%/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python%.exe%'",
@@ -489,6 +566,7 @@
"id": "python", "id": "python",
"version": "2.7.13.1", "version": "2.7.13.1",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "WinPython-32bit-2.7.13.1Zero.zip", "windows_url": "WinPython-32bit-2.7.13.1Zero.zip",
"activated_path": "%installation_dir%/python-2.7.13", "activated_path": "%installation_dir%/python-2.7.13",
"activated_cfg": "PYTHON='%installation_dir%/python-2.7.13/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python-2.7.13/python%.exe%'",
@@ -498,6 +576,7 @@
"id": "python", "id": "python",
"version": "2.7.13.1", "version": "2.7.13.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "WinPython-64bit-2.7.13.1Zero.zip", "windows_url": "WinPython-64bit-2.7.13.1Zero.zip",
"activated_path": "%installation_dir%/python-2.7.13.amd64", "activated_path": "%installation_dir%/python-2.7.13.amd64",
"activated_cfg": "PYTHON='%installation_dir%/python-2.7.13.amd64/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python-2.7.13.amd64/python%.exe%'",
@@ -507,6 +586,7 @@
"id": "python", "id": "python",
"version": "3.5.4", "version": "3.5.4",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "WinPython-32bit-3.5.4.1Zero.zip", "windows_url": "WinPython-32bit-3.5.4.1Zero.zip",
"activated_path": "%installation_dir%/python-3.5.4", "activated_path": "%installation_dir%/python-3.5.4",
"activated_cfg": "PYTHON='%installation_dir%/python-3.5.4/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python-3.5.4/python%.exe%'",
@@ -516,6 +596,7 @@
"id": "python", "id": "python",
"version": "3.5.4", "version": "3.5.4",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "WinPython-64bit-3.5.4.1Zero.zip", "windows_url": "WinPython-64bit-3.5.4.1Zero.zip",
"activated_path": "%installation_dir%/python-3.5.4.amd64", "activated_path": "%installation_dir%/python-3.5.4.amd64",
"activated_cfg": "PYTHON='%installation_dir%/python-3.5.4.amd64/python%.exe%'", "activated_cfg": "PYTHON='%installation_dir%/python-3.5.4.amd64/python%.exe%'",
@@ -525,6 +606,7 @@
"id": "java", "id": "java",
"version": "7.45", "version": "7.45",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "portable_jre_7_update_45_32bit.zip", "windows_url": "portable_jre_7_update_45_32bit.zip",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_env": "JAVA_HOME=%installation_dir%", "activated_env": "JAVA_HOME=%installation_dir%",
@@ -534,6 +616,7 @@
"id": "java", "id": "java",
"version": "7.45", "version": "7.45",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "portable_jre_7_update_45_64bit.zip", "windows_url": "portable_jre_7_update_45_64bit.zip",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_env": "JAVA_HOME=%installation_dir%", "activated_env": "JAVA_HOME=%installation_dir%",
@@ -543,6 +626,7 @@
"id": "java", "id": "java",
"version": "8.152", "version": "8.152",
"bitness": 32, "bitness": 32,
"arch": "x86",
"windows_url": "portable_jre_8_update_152_32bit.zip", "windows_url": "portable_jre_8_update_152_32bit.zip",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_env": "JAVA_HOME=%installation_dir%", "activated_env": "JAVA_HOME=%installation_dir%",
@@ -552,6 +636,7 @@
"id": "java", "id": "java",
"version": "8.152", "version": "8.152",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "portable_jre_8_update_152_64bit.zip", "windows_url": "portable_jre_8_update_152_64bit.zip",
"activated_path": "%installation_dir%/bin", "activated_path": "%installation_dir%/bin",
"activated_env": "JAVA_HOME=%installation_dir%", "activated_env": "JAVA_HOME=%installation_dir%",
@@ -561,6 +646,7 @@
"id": "spidermonkey", "id": "spidermonkey",
"version": "27.0.1", "version": "27.0.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "spidermonkey-27.0.1.zip", "windows_url": "spidermonkey-27.0.1.zip",
"osx_url": "spidermonkey-27.0.1.tar.gz", "osx_url": "spidermonkey-27.0.1.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -571,6 +657,7 @@
"id": "spidermonkey", "id": "spidermonkey",
"version": "nightly-2014-03-13", "version": "nightly-2014-03-13",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "spidermonkey-nightly-2014-03-13.zip", "windows_url": "spidermonkey-nightly-2014-03-13.zip",
"osx_url": "spidermonkey-nightly-2014-03-13.tar.gz", "osx_url": "spidermonkey-nightly-2014-03-13.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -581,6 +668,7 @@
"id": "spidermonkey", "id": "spidermonkey",
"version": "30.0.0", "version": "30.0.0",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "spidermonkey-30.0.0.zip", "windows_url": "spidermonkey-30.0.0.zip",
"osx_url": "spidermonkey-30.0.0.tar.gz", "osx_url": "spidermonkey-30.0.0.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -591,6 +679,7 @@
"id": "spidermonkey", "id": "spidermonkey",
"version": "37.0.1", "version": "37.0.1",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "spidermonkey-37.0.1_64bit.zip", "windows_url": "spidermonkey-37.0.1_64bit.zip",
"osx_url": "spidermonkey-37.0.1_64bit.tar.gz", "osx_url": "spidermonkey-37.0.1_64bit.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",
@@ -600,6 +689,7 @@
"id": "spidermonkey", "id": "spidermonkey",
"version": "nightly-2015-04-12", "version": "nightly-2015-04-12",
"bitness": 64, "bitness": 64,
"arch": "x86_64",
"windows_url": "spidermonkey-nightly-2015-04-12_64bit.zip", "windows_url": "spidermonkey-nightly-2015-04-12_64bit.zip",
"osx_url": "spidermonkey-nightly-2015-04-12_64bit.tar.gz", "osx_url": "spidermonkey-nightly-2015-04-12_64bit.tar.gz",
"activated_path": "%installation_dir%", "activated_path": "%installation_dir%",