diff --git a/emstrip b/emstrip new file mode 100755 index 0000000000000..8464d365b479d --- /dev/null +++ b/emstrip @@ -0,0 +1,31 @@ +#!/bin/sh +# Copyright 2020 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. +# +# Entry point for running python scripts on UNIX systems. +# +# Automatically generated by `create_entry_points.py`; DO NOT EDIT. +# +# To make modifications to this file, edit `tools/run_python.sh` and then run +# `tools/create_entry_points.py` + +if [ -z "$PYTHON" ]; then + PYTHON=$EMSDK_PYTHON +fi + +if [ -z "$PYTHON" ]; then + PYTHON=$(command -v python3 2> /dev/null) +fi + +if [ -z "$PYTHON" ]; then + PYTHON=$(command -v python 2> /dev/null) +fi + +if [ -z "$PYTHON" ]; then + echo 'unable to find python in $PATH' + exit 1 +fi + +exec "$PYTHON" "$0.py" "$@" diff --git a/emstrip.bat b/emstrip.bat new file mode 100644 index 0000000000000..2d981b1168899 --- /dev/null +++ b/emstrip.bat @@ -0,0 +1,60 @@ +:: Entry point for running python scripts on windows systems. +:: +:: Automatically generated by `create_entry_points.py`; DO NOT EDIT. +:: +:: To make modifications to this file, edit `tools/run_python.bat` and then run +:: `tools/create_entry_points.py` + +:: All env. vars specified in this file are to be local only to this script. +@setlocal + +@set EM_PY=%EMSDK_PYTHON% +@if "%EM_PY%"=="" ( + set EM_PY=python +) + +:: Python Windows bug https://bugs.python.org/issue34780: If this script was invoked via a +:: shared stdin handle from the parent process, and that parent process stdin handle is in +:: a certain state, running python.exe might hang here. To work around this, if +:: EM_WORKAROUND_PYTHON_BUG_34780 is defined, invoke python with '< NUL' stdin to avoid +:: sharing the parent's stdin handle to it, avoiding the hang. + +:: On Windows 7, the compiler batch scripts are observed to exit with a non-zero errorlevel, +:: even when the python executable above did succeed and quit with errorlevel 0 above. +:: On Windows 8 and newer, this issue has not been observed. It is possible that this +:: issue is related to the above python bug, but this has not been conclusively confirmed, +:: so using a separate env. var EM_WORKAROUND_WIN7_BAD_ERRORLEVEL_BUG to enable the known +:: workaround this issue, which is to explicitly quit the calling process with the previous +:: errorlevel from the above command. + +:: Also must use goto to jump to the command dispatch, since we cannot invoke emcc from +:: inside a if() block, because if a cmdline param would contain a char '(' or ')', that +:: would throw off the parsing of the cmdline arg. +@if "%EM_WORKAROUND_PYTHON_BUG_34780%"=="" ( + @if "%EM_WORKAROUND_WIN7_BAD_ERRORLEVEL_BUG%"=="" ( + goto NORMAL + ) else ( + goto NORMAL_EXIT + ) +) else ( + @if "%EM_WORKAROUND_WIN7_BAD_ERRORLEVEL_BUG%"=="" ( + goto MUTE_STDIN + ) else ( + goto MUTE_STDIN_EXIT + ) +) + +:NORMAL_EXIT +@"%EM_PY%" "%~dp0\%~n0.py" %* +@exit %ERRORLEVEL% + +:MUTE_STDIN +@"%EM_PY%" "%~dp0\%~n0.py" %* < NUL +@exit /b %ERRORLEVEL% + +:MUTE_STDIN_EXIT +@"%EM_PY%" "%~dp0\%~n0.py" %* < NUL +@exit %ERRORLEVEL% + +:NORMAL +@"%EM_PY%" "%~dp0\%~n0.py" %* diff --git a/emstrip.py b/emstrip.py new file mode 100755 index 0000000000000..01c1d1b00b439 --- /dev/null +++ b/emstrip.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +# Copyright 2022 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 around `llvm-strip`. +""" + +import sys +from tools import shared + +cmd = [shared.LLVM_STRIP] + sys.argv[1:] +sys.exit(shared.run_process(cmd, stdin=sys.stdin, check=False).returncode) diff --git a/tools/create_entry_points.py b/tools/create_entry_points.py index 79911556900e8..774a427faefac 100755 --- a/tools/create_entry_points.py +++ b/tools/create_entry_points.py @@ -37,6 +37,7 @@ emprofile emdwp emnm +emstrip tools/file_packager tools/webidl_binder tests/runner diff --git a/tools/shared.py b/tools/shared.py index 2d9b81494e0ee..dc0bb74696c70 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -702,6 +702,7 @@ def get_llvm_target(): LLVM_COMPILER = os.path.expanduser(build_llvm_tool_path(exe_suffix('llc'))) LLVM_DWARFDUMP = os.path.expanduser(build_llvm_tool_path(exe_suffix('llvm-dwarfdump'))) LLVM_OBJCOPY = os.path.expanduser(build_llvm_tool_path(exe_suffix('llvm-objcopy'))) +LLVM_STRIP = os.path.expanduser(build_llvm_tool_path(exe_suffix('llvm-strip'))) WASM_LD = os.path.expanduser(build_llvm_tool_path(exe_suffix('wasm-ld'))) EMCC = bat_suffix(path_from_root('emcc'))