Make nanobench and dm be usable from Chromium build

Move the app logic for each app as follows:

<app>.cpp -- the file which contains main(). Embedders that compile
their own apps, such as ios shell, upcoming Chromium dm etc, do not use this.

<app>_main.cpp -- the main logic of the Skia test application. This will be
used by Skia -compiled apps as well as embedder -compiled apps.

<app>_main.h -- the API for the main logic. This will be
used by Skia -compiled apps as well as embedder -compiled apps.

This way (the upcoming) Chromium dm can setup its Chromium-specific setup
in custom main(), and then call dm_main(), without the need of any
SK_BUILD_FOR_XXXX defines controlling whether the tool defines main or not.

BUG=skia:2992

Review URL: https://codereview.chromium.org/657373002
This commit is contained in:
kkinnunen 2014-11-13 05:00:57 -08:00 committed by Commit bot
parent 5adbf1b579
commit c092d3bdab
10 changed files with 68 additions and 22 deletions

View File

@ -572,9 +572,7 @@ private:
int fCurrentSKP;
};
int nanobench_main();
int nanobench_main() {
SetupCrashHandler();
SkAutoGraphics ag;
#if SK_SUPPORT_GPU
@ -752,9 +750,3 @@ int nanobench_main() {
return 0;
}
#if !defined SK_BUILD_FOR_IOS
int main(int argc, char** argv) {
SkCommandLineFlags::Parse(argc, argv);
return nanobench_main();
}
#endif

13
bench/nanobench.h Normal file
View File

@ -0,0 +1,13 @@
/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef nanobench_DEFINED
#define nanobench_DEFINED
// API for nanobench app.
int nanobench_main();
#endif

18
bench/nanobench_main.cpp Normal file
View File

@ -0,0 +1,18 @@
/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "CrashHandler.h"
#include "SkCommandLineFlags.h"
#include "nanobench.h"
int main(int argc, char * const argv[]) {
SetupCrashHandler();
SkCommandLineFlags::Parse(argc, const_cast<char**>(argv));
return nanobench_main();
}

View File

@ -1,7 +1,6 @@
// Main binary for DM.
// For a high-level overview, please see dm/README.
#include "CrashHandler.h"
#include "LazyDecodeBitmap.h"
#include "SkCommonFlags.h"
#include "SkForceLinking.h"
@ -187,9 +186,7 @@ static void append_matching_factories(Registry* head, SkTDArray<typename Registr
}
}
int dm_main();
int dm_main() {
SetupCrashHandler();
SkAutoGraphics ag;
SkTaskGroup::Enabler enabled(FLAGS_threads);
@ -244,10 +241,3 @@ int dm_main() {
report_failures(failures);
return failures.count() > 0;
}
#if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
int main(int argc, char** argv) {
SkCommandLineFlags::Parse(argc, argv);
return dm_main();
}
#endif

14
dm/dm.h Normal file
View File

@ -0,0 +1,14 @@
/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef dm_DEFINED
#define dm_DEFINED
// API for dm app.
int dm_main();
#endif

16
dm/dm_main.cpp Normal file
View File

@ -0,0 +1,16 @@
/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "CrashHandler.h"
#include "SkCommandLineFlags.h"
#include "dm.h"
int main(int argc, char * const argv[]) {
SetupCrashHandler();
SkCommandLineFlags::Parse(argc, const_cast<char**>(argv));
return dm_main();
}

View File

@ -13,6 +13,7 @@
'../bench/GMBench.cpp',
'../bench/RecordingBench.cpp',
'../bench/SKPBench.cpp',
'../bench/nanobench_main.cpp',
'../bench/nanobench.cpp',
],
'includes': [

View File

@ -8,6 +8,9 @@
'includes': [
'dm.gypi',
],
'sources': [
'../dm/dm_main.cpp',
],
'conditions': [
['skia_android_framework', {
'libraries': [ '-lskia' ],

View File

@ -29,7 +29,7 @@
'dependencies': [ 'android_system.gyp:SampleApp_APK' ],
}],
['skia_os == "ios"', {
'dependencies!': [ 'SampleApp.gyp:SampleApp' ],
'dependencies!': [ 'SampleApp.gyp:SampleApp', 'dm.gyp:dm', 'bench.gyp:*' ],
'dependencies': ['iOSShell.gyp:iOSShell' ],
}],
['skia_os == "mac" or skia_os == "linux"', {

View File

@ -13,6 +13,8 @@
#include "SkCommonFlags.h"
#include "SkGraphics.h"
#include "SkWindow.h"
#include "dm.h"
#include "nanobench.h"
#include "sk_tool_utils.h"
//////////////////////////////////////////////////////////////////////////////
@ -56,9 +58,6 @@ void ShellWindow::onSizeChange() {
DEFINE_bool(dm, false, "run dm");
DEFINE_bool(nanobench, false, "run nanobench");
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);