#!/bin/sh
# Copyright 2019 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.

# Wrapper script that runs emsdk.py

# First look for pre-built python (macos)
if [ -z "$EMSDK_PYTHON" ]; then
  PYTHON3=$(dirname $0)/python/3.7.4-2_64bit/bin/python3
  if [ -e $PYTHON3 ]; then
    EMSDK_PYTHON=$PYTHON3

    # When using our bundled python we never want the users
    # PYTHONHOME or PYTHONPATH
    # https://github.com/emscripten-core/emsdk/issues/598
    unset PYTHONHOME
    unset PYTHONPATH

    # This is needed for MacOS.  Without this, the urlopen
    # code will try to use /usr/local/etc/openssl/cert.pem
    # which may or may not exist on the system.
    export SSL_CERT_FILE=$(dirname $0)/python/3.7.4-2_64bit/lib/python3.7/site-packages/certifi/cacert.pem
  fi
fi

# Look for `python3` first.  This is especially important on macOS (See:
# https://github.com/emscripten-core/emsdk/pull/273)
if [ -z "$EMSDK_PYTHON" ]; then
  PYTHON3=$(which python3 2> /dev/null)
  if [ $? = 0 ]; then
    EMSDK_PYTHON=$PYTHON3
  fi
fi

# Finally fall back to just looking for `python` in PATH
if [ -z "$EMSDK_PYTHON" ]; then
  EMSDK_PYTHON=python
fi

exec "$EMSDK_PYTHON" "$0.py" "$@"
