share dm and command flags
Share command flags between dm and unit tests.
Also, allow dm's core to be included by itself and iOSShell.
Command line flags that are the same (or nearly the same) in DM
and in skia_tests have been moved to common_flags. Authors,
please check to see that the shared common flag is correct for
the tool.
For iOS, the 'tool_main' entry point has a wrapper to allow multiple
tools to be statically linked in the iOSShell.
Since SkCommandLineFlags::Parse can only be called once, these calls
are disabled in the IOS build.
Since the iOS app directory is dynamically assigned a name, use '@' to
select it. (This is the same convention chosen by the Mobile Harness
iOS file system utilities.)
Move the heart of dm.gyp into dm.gypi so that it can be included by
itself and iOSShell.gyp.
Add tools/flags/SkCommonFlags.* to define and declare common
command line flags.
Add support for dm to iOSShell.
BUG=skia:
R=scroggo@google.com, mtklein@google.com, jvanverth@google.com, bsalomon@google.com
Author: caryclark@google.com
Review URL: https://codereview.chromium.org/389653004
diff --git a/tools/iOSShell.cpp b/tools/iOSShell.cpp
index bd70938..49be34d 100644
--- a/tools/iOSShell.cpp
+++ b/tools/iOSShell.cpp
@@ -8,9 +8,11 @@
#include "iOSShell.h"
#include "Resources.h"
+#include "SkApplication.h"
#include "SkCanvas.h"
-#include "SkCommandLineFlags.h"
+#include "SkCommonFlags.h"
#include "SkGraphics.h"
+#include "SkThreadPool.h"
#include "SkWindow.h"
#include "sk_tool_utils.h"
@@ -52,17 +54,22 @@
view->setSize(this->width(), this->height());
}
-void tool_main(int argc, char *argv[]);
+DEFINE_bool(dm, false, "run dm");
+DEFINE_bool(nanobench, false, "run nanobench");
-bool set_cmd_line_args(int argc, char *argv[], const char* resourceDir) {
- for (int index = 0; index < argc; ++index) {
- if (!strcmp("--test", argv[index])) {
- SetResourcePath(resourceDir);
- tool_main(argc - 1, argv);
- return true;
- }
+int nanobench_main();
+int dm_main();
+
+IOS_launch_type set_cmd_line_args(int argc, char *argv[], const char* resourceDir) {
+ SkCommandLineFlags::Parse(argc, argv);
+ SetResourcePath(resourceDir);
+ if (FLAGS_nanobench) {
+ return nanobench_main() ? kError_iOSLaunchType : kTool_iOSLaunchType;
}
- return false;
+ if (FLAGS_dm) {
+ return dm_main() ? kError_iOSLaunchType : kTool_iOSLaunchType;
+ }
+ return kError_iOSLaunchType;
}
// FIXME: this should be in a header