summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJF Bastien <jfb@chromium.org>2015-12-29 17:19:32 -0800
committerJF Bastien <jfb@chromium.org>2015-12-29 17:19:32 -0800
commite8a564897cfd3945a097bd07c553d7a5d29355b8 (patch)
tree1f140a62f1d264deb1c339db797baf3d57472164
parentedc992eb3cd3afece4ba623c382f408aecde4e4a (diff)
downloadbinaryen-e8a564897cfd3945a097bd07c553d7a5d29355b8.tar.gz
binaryen-e8a564897cfd3945a097bd07c553d7a5d29355b8.tar.bz2
binaryen-e8a564897cfd3945a097bd07c553d7a5d29355b8.zip
Start moving command-line processing to libsupport.a
This only moves things, no functional change yet.
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/s2wasm-main.cpp2
-rw-r--r--src/support/command-line.cpp (renamed from src/command-line.h)33
-rw-r--r--src/support/command-line.h43
4 files changed, 51 insertions, 28 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a7d37068e..4f4554465 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@ ENDIF()
SET(support_SOURCES
src/support/colors.cpp
+ src/support/command-line.cpp
)
ADD_LIBRARY(support STATIC ${support_SOURCES})
diff --git a/src/s2wasm-main.cpp b/src/s2wasm-main.cpp
index 86a9737a7..00b71ab16 100644
--- a/src/s2wasm-main.cpp
+++ b/src/s2wasm-main.cpp
@@ -18,7 +18,7 @@
// wasm2asm console tool
//
-#include "command-line.h"
+#include "support/command-line.h"
#include "s2wasm.h"
using namespace cashew;
diff --git a/src/command-line.h b/src/support/command-line.cpp
index 4b8b12b4c..b023fcb66 100644
--- a/src/command-line.h
+++ b/src/support/command-line.cpp
@@ -14,33 +14,16 @@
* limitations under the License.
*/
-//
-// Command line helpers.
-//
-
-#ifndef wasm_command_line_h
-#define wasm_command_line_h
-
-#include "wasm.h"
-
-namespace wasm {
-
-struct Options {
- // standard options
- bool debug;
- std::string infile;
- std::string outfile;
- // extra options
- std::map<std::string, const char*> extra;
- Options() : debug(false) {}
-};
+#include "support/command-line.h"
+namespace {
bool optionIs(const char *arg, const char *LongOpt, const char *ShortOpt) {
return strcmp(arg, LongOpt) == 0 || strcmp(arg, ShortOpt) == 0;
}
+} // anonymous namespace
-// TODO(jfb) Make this configurable: callers should pass in option handlers.
-void processCommandLine(int argc, const char *argv[], Options *options, const char *help) {
+void wasm::processCommandLine(int argc, const char *argv[], Options *options,
+ const char *help) {
assert(argc > 0 && "expect at least program name as an argument");
for (size_t i = 1, e = argc; i != e; ++i) {
if (optionIs(argv[i], "--help", "-h")) {
@@ -66,7 +49,7 @@ void processCommandLine(int argc, const char *argv[], Options *options, const ch
name += argv[i][j];
j++;
}
- options->extra[name] = argv[i][j] == '=' ? &argv[i][j+1] : "(no value)";
+ options->extra[name] = argv[i][j] == '=' ? &argv[i][j + 1] : "(no value)";
} else {
if (options->infile.size()) {
std::cerr << "Expected only one input file, got '" << options->infile
@@ -77,7 +60,3 @@ void processCommandLine(int argc, const char *argv[], Options *options, const ch
}
}
}
-
-} // namespace wasm
-
-#endif // wasm_command_line_h
diff --git a/src/support/command-line.h b/src/support/command-line.h
new file mode 100644
index 000000000..f52e962f7
--- /dev/null
+++ b/src/support/command-line.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2015 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Command line helpers.
+//
+
+#ifndef wasm_command_line_h
+#define wasm_command_line_h
+
+#include "wasm.h"
+
+namespace wasm {
+
+struct Options {
+ // standard options
+ bool debug;
+ std::string infile;
+ std::string outfile;
+ // extra options
+ std::map<std::string, const char *> extra;
+ Options() : debug(false) {}
+};
+
+void processCommandLine(int argc, const char *argv[], Options *options,
+ const char *help);
+
+} // namespace wasm
+
+#endif // wasm_command_line_h