1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/at_exit.h"
6#include "base/command_line.h"
7#include "base/message_loop/message_loop.h"
8#if defined(OS_MACOSX)
9#include "base/mac/scoped_nsautorelease_pool.h"
10#endif
11#if defined(OS_WIN)
12#include "base/strings/utf_string_conversions.h"
13#endif
14#include "ui/gl/gl_surface.h"
15
16extern "C" {
17#if defined(GLES2_CONFORM_SUPPORT_ONLY)
18#include "gpu/gles2_conform_support/gtf/gtf_stubs.h"
19#else
20#include "third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMain.h"
21#endif
22}
23
24int main(int argc, char *argv[]) {
25  base::AtExitManager at_exit;
26  CommandLine::Init(argc, argv);
27  base::MessageLoopForUI message_loop;
28
29  CommandLine::StringVector args =
30    CommandLine::ForCurrentProcess()->GetArgs();
31
32#if defined(OS_MACOSX)
33  base::mac::ScopedNSAutoreleasePool pool;
34#endif
35
36  scoped_ptr<const char*[]> argsArray(new const char*[args.size()+1]);
37  argsArray[0] = argv[0];
38
39#if defined(OS_WIN)
40  std::vector<std::string> argsNonWide(args.size());
41  for (size_t index = 0; index < args.size(); ++index) {
42    argsNonWide[index] = base::UTF16ToASCII(args[index]);
43    argsArray[index+1] = argsNonWide[index].c_str();
44  }
45#else
46  for (size_t index = 0; index < args.size(); ++index) {
47    argsArray[index+1] = args[index].c_str();
48  }
49#endif
50
51  GTFMain(static_cast<int>(args.size()+1),
52    const_cast<char**>(argsArray.get()));
53
54  return 0;
55}
56
57