"""This is a helper script. It runs ./configure (or cmake,
etc.) for you, setting the environment variables to use
emcc and so forth. Usage:
emconfigure ./configure [FLAGS]
You can also use this for cmake and other configure-like
stages. What happens is that all compilations done during
this command are to native code, not JS, so that configure
tests will work properly.
"""
import shlex
import sys
from tools import building
from tools import shared
from subprocess import CalledProcessError
def run():
if len(sys.argv) < 2 or sys.argv[1] in ('--version', '--help'):
print('''\
emconfigure is a helper for configure, setting various environment
variables so that emcc etc. are used. Typical usage:
emconfigure ./configure [FLAGS]
(but you can run any command instead of configure)''', file=sys.stderr)
return 1
args = sys.argv[1:]
if 'cmake' in args:
print('error: use `emcmake` rather then `emconfigure` for cmake projects', file=sys.stderr)
return 1
env = building.get_building_env()
env['EMMAKEN_JUST_CONFIGURE'] = '1'
print(f'configure: {shlex.join(args)}', file=sys.stderr)
try:
shared.check_call(args, env=env)
return 0
except CalledProcessError as e:
return e.returncode
if __name__ == '__main__':
sys.exit(run())