blob: f8f040c8bb401ba55698a564b8c9e2be32043427 [file] [log] [blame]
#!/usr/bin/env python2
# Copyright 2012 The Emscripten Authors. All rights reserved.
# Emscripten is available under two separate licenses, the MIT license and the
# University of Illinois/NCSA Open Source License. Both these licenses can be
# found in the LICENSE file.
from __future__ import print_function
import os
def generate(env, emscripten_path=None, **kw):
""" SCons tool entry point """
if emscripten_path is None:
emscripten_path = os.environ.get('EMSCRIPTEN_ROOT')
if not emscripten_path:
raise 'Unable to find emscripten. Please set EMSCRIPTEN_ROOT'
# SCons does not by default invoke the compiler with the
# environment variabls from the parent calling process,
# so manually route all environment variables referenced
# by Emscripten to the child.
for var in ['EM_CACHE', 'EMCC_DEBUG', 'EMTEST_BROWSER',
'EMMAKEN_JUST_CONFIGURE', 'EMCC_CFLAGS', 'EMCC_TEMP_DIR',
'EMCC_AUTODEBUG', 'EM_COMPILER_WRAPPER',
'EMMAKEN_COMPILER', 'EMMAKEN_CFLAGS',
'MOZ_DISABLE_AUTO_SAFE_MODE', 'EMCC_STDERR_FILE',
'EMSCRIPTEN_SUPPRESS_USAGE_WARNING', 'NODE_PATH', 'EMCC_JSOPT_MIN_CHUNK_SIZE',
'EMCC_JSOPT_MAX_CHUNK_SIZE', 'EMCC_SAVE_OPT_TEMP', 'EMCC_CORES', 'EMCC_NO_OPT_SORT',
'EMCC_BUILD_DIR', 'EMCC_DEBUG_SAVE', 'EMCC_SKIP_SANITY_CHECK',
'EMMAKEN_NO_SDK', 'EM_PKG_CONFIG_PATH', 'EMCC_CLOSURE_ARGS', 'JAVA_HEAP_SIZE',
'EMCC_FORCE_STDLIBS', 'EMCC_ONLY_FORCED_STDLIBS', 'EM_PORTS', 'IDL_CHECKS', 'IDL_VERBOSE',
'EMTEST_SAVE_DIR']:
if os.environ.get(var):
env['ENV'][var] = os.environ.get(var)
try:
emscPath = emscripten_path.abspath
except:
emscPath = emscripten_path
env.Replace(CC=os.path.join(emscPath, "emcc"))
env.Replace(CXX=os.path.join(emscPath, "em++"))
# LINK uses smark_link by default which will choose
# either emcc or em++ depending on if there are any C++ sources
# in the program, so no need to change that.
# SHLINK and LDMODULE should use LINK so no
# need to change them here
env.Replace(AR=os.path.join(emscPath, "emar"))
env.Replace(RANLIB=os.path.join(emscPath, "emranlib"))
env.Replace(OBJSUFFIX=[".js", ".bc", ".o"][2])
env.Replace(LIBSUFFIX=[".js", ".bc", ".o"][2])
env.Replace(PROGSUFFIX=[".html", ".js"][1])
def exists(env):
""" NOOP method required by SCons """
return 1