aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xemcc40
-rw-r--r--tests/runner.py33
2 files changed, 60 insertions, 13 deletions
diff --git a/emcc b/emcc
index 1494f2bb..8ca593ed 100755
--- a/emcc
+++ b/emcc
@@ -120,18 +120,34 @@ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR P
'''
exit(0)
elif sys.argv[1] == '--help':
- print '''OVERVIEW: Emscripten "gcc-compatible" driver script, using LLVM/Clang
- Many but not all gcc options can be used.
-
-USAGE: emcc [options] <inputs>
-
-OPTIONS:
- -O0 No optimization. Enables runtime assertions. This is the default.
- -O1 Basic optimizations. Disables runtime assertions.
- -O2 Like -O2, but includes loop recreation optimization (relooper).
- -O3 Like -O3, but includes closure compiler advanced optimizations.
- Use with care and read the closure compiler docs.
-'''
+ this = os.path.basename('em++' if os.environ.get('EMMAKEN_CXX') else 'emcc')
+
+ print '''%s [options] file...
+
+Most normal gcc/g++ options will work, for example:
+ --help Display this information
+ --version Display compiler version information
+
+Options that are modified or new in %s include:
+ -O0 [..] default
+ -OX TODO
+ -s OPTION=VALUE JavaScript code generation option
+ passed into the emscripten compiler
+ --typed-arrays <mode> 0: no typed arrays
+ 1: parallel typed arrays
+ 2: shared typed arrays (default)
+ --llvm-opts <mode> 0: none (default)
+ 1: safe/portable
+ 2: unsafe/unportable
+
+The target file, if specified (-o <target>), defines what will
+be generated:
+ <name>.js JavaScript (default)
+ <name>.o LLVM bitcode
+ <name>.bc LLVM bitcode
+ <name>.html HTML with embedded JavaScript
+
+''' % (this, this)
exit(0)
# If this is a configure-type thing, just do that
diff --git a/tests/runner.py b/tests/runner.py
index 34f76e70..0bd5b15a 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -4869,6 +4869,8 @@ TT = %s
class other(RunnerCore):
def test_emcc(self):
for compiler in [EMCC, EMXX]:
+ shortcompiler = os.path.basename(compiler)
+
# --version
output = Popen([compiler, '--version'], stdout=PIPE, stderr=PIPE).communicate(input)[0]
self.assertContained('''emcc (Emscripten GCC-like replacement) 2.0
@@ -4877,9 +4879,38 @@ This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
''', output)
+ # --help
+ output = Popen([compiler, '--help'], stdout=PIPE, stderr=PIPE).communicate(input)[0]
+ self.assertContained('''%s [options] file...
+
+Most normal gcc/g++ options will work, for example:
+ --help Display this information
+ --version Display compiler version information
+
+Options that are modified or new in %s include:
+ -O0 [..] default
+ -OX TODO
+ -s OPTION=VALUE JavaScript code generation option
+ passed into the emscripten compiler
+ --typed-arrays <mode> 0: no typed arrays
+ 1: parallel typed arrays
+ 2: shared typed arrays (default)
+ --llvm-opts <mode> 0: none (default)
+ 1: safe/portable
+ 2: unsafe/unportable
+
+The target file, if specified (-o <target>), defines what will
+be generated:
+ <name>.js JavaScript (default)
+ <name>.o LLVM bitcode
+ <name>.bc LLVM bitcode
+ <name>.html HTML with embedded JavaScript
+
+''' % (shortcompiler, shortcompiler), output)
+
# TODO: make sure all of these match gcc
# TODO: when this is done, more test runner to test these (i.e., test all -Ox thoroughly)
- # -- options: check these, warn about errors. valid gcc ones are help, version. Ours should be -- too, not -.
+ # -- options: check these, warn about errors. Ours should be -- too, not -.
# emcc src.cpp or emcc src.cpp -o src.js ==> should give a .js file
# emcc src.cpp -c and emcc src.cpp -o src.[o|bc] ==> should give a .bc file
# emcc src.cpp -o src.html ==> should embed the js in an html file for immediate running on the web. only tricky part is sdl