| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include <cstdio> | 
 |  | 
 | #include "base/at_exit.h" | 
 | #include "base/command_line.h" | 
 | #include "base/message_loop/message_loop.h" | 
 |  | 
 | #include "third_party/khronos_glcts/framework/common/tcuApp.hpp" | 
 | #include "third_party/khronos_glcts/framework/common/tcuCommandLine.hpp" | 
 | #include "third_party/khronos_glcts/framework/common/tcuDefs.hpp" | 
 | #include "third_party/khronos_glcts/framework/common/tcuPlatform.hpp" | 
 | #include "third_party/khronos_glcts/framework/common/tcuResource.hpp" | 
 | #include "third_party/khronos_glcts/framework/common/tcuTestLog.hpp" | 
 | #include "third_party/khronos_glcts/framework/delibs/decpp/deUniquePtr.hpp" | 
 |  | 
 | // implemented in the native platform | 
 | tcu::Platform* createPlatform (); | 
 |  | 
 | void GTFMain(int argc, char* argv[]) { | 
 |   setvbuf(stdout, DE_NULL, _IOLBF, 4*1024); | 
 |  | 
 |   try { | 
 |     tcu::CommandLine cmdLine(argc, argv); | 
 |     tcu::DirArchive archive(cmdLine.getArchiveDir()); | 
 |     tcu::TestLog log(cmdLine.getLogFileName(), cmdLine.getLogFlags()); | 
 |     de::UniquePtr<tcu::Platform> platform(createPlatform()); | 
 |     de::UniquePtr<tcu::App> app( | 
 |       new tcu::App(*platform, archive, log, cmdLine)); | 
 |  | 
 |     // Main loop. | 
 |     for (;;) { | 
 |       if (!app->iterate()) | 
 |         break; | 
 |     } | 
 |   } | 
 |   catch (const std::exception& e) { | 
 |     tcu::die("%s", e.what()); | 
 |   } | 
 | } | 
 |  | 
 | int main(int argc, char *argv[]) { | 
 |   base::AtExitManager at_exit; | 
 |   base::CommandLine::Init(argc, argv); | 
 |   base::MessageLoopForUI message_loop; | 
 |  | 
 |   GTFMain(argc, argv); | 
 |  | 
 |   return 0; | 
 | } |