diff options
-rwxr-xr-x | build.sh | 4 | ||||
-rw-r--r-- | src/binaryen-shell.cpp (renamed from src/wasm-shell.cpp) | 37 |
2 files changed, 35 insertions, 6 deletions
@@ -1,8 +1,8 @@ +echo "building binaryen shell" +g++ -O2 -std=c++11 src/binaryen-shell.cpp -g -o bin/binaryen-shell -Isrc/emscripten-optimizer echo "building asm2wasm" g++ -O2 -std=c++11 src/asm2wasm-main.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp -g -o bin/asm2wasm -Isrc/emscripten-optimizer echo "building interpreter/js" em++ -std=c++11 src/wasm-js.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -s DEMANGLE_SUPPORT=1 -O3 -profiling -s TOTAL_MEMORY=67108864 -s SAFE_HEAP=1 -s ASSERTIONS=1 -Isrc/emscripten-optimizer #-DWASM_JS_DEBUG #-DWASM_INTERPRETER_DEBUG cat src/js/post.js >> bin/wasm.js -echo "building wasm shell" -g++ -O2 -std=c++11 src/wasm-shell.cpp -g -o bin/wasm-shell -Isrc/emscripten-optimizer diff --git a/src/wasm-shell.cpp b/src/binaryen-shell.cpp index 701b6b6c2..775252485 100644 --- a/src/wasm-shell.cpp +++ b/src/binaryen-shell.cpp @@ -146,12 +146,41 @@ struct Invocation { int main(int argc, char **argv) { debug = getenv("WASM_SHELL_DEBUG") ? getenv("WASM_SHELL_DEBUG")[0] - '0' : 0; - char *infile = argv[1]; - bool print_wasm = argc >= 3; // second arg means print it out + char *infile = nullptr; + bool print_before = false; + + for (size_t i = 1; i < argc; i++) { + char* curr = argv[i]; + if (curr[0] == '-') { + std::string arg = curr; + if (arg == "--print-before") { + print_before = true; + } else { + if (infile) { + printf("error: unrecognized argument: %s\n", curr); + exit(1); + } + } + } else { + if (infile) { + printf("error: too many input files provided.\n"); + exit(1); + } + infile = curr; + } + } + + if (!infile) { + printf("error: no input file provided.\n"); + exit(1); + } if (debug) std::cerr << "loading '" << infile << "'...\n"; FILE *f = fopen(argv[1], "r"); - assert(f); + if (!f) { + printf("error: could not open input file: %s\n", infile); + exit(1); + } fseek(f, 0, SEEK_END); int size = ftell(f); char *input = new char[size+1]; @@ -180,7 +209,7 @@ int main(int argc, char **argv) { auto interface = new ShellExternalInterface(); auto instance = new ModuleInstance(wasm, interface); - if (print_wasm) { + if (print_before) { if (debug) std::cerr << "printing...\n"; std::cout << wasm; } |