| // Copyright 2016 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. | 
 |  | 
 | #ifndef TOOLS_GN_VISUAL_STUDIO_UTILS_H_ | 
 | #define TOOLS_GN_VISUAL_STUDIO_UTILS_H_ | 
 |  | 
 | #include <string> | 
 |  | 
 | // Some compiler options which will be written to project file. We don't need to | 
 | // specify all options because generated project file is going to be used only | 
 | // for compilation of single file. For real build ninja files are used. | 
 | struct CompilerOptions { | 
 |   CompilerOptions(); | 
 |   ~CompilerOptions(); | 
 |  | 
 |   std::string additional_options; | 
 |   std::string buffer_security_check; | 
 |   std::string forced_include_files; | 
 |   std::string disable_specific_warnings; | 
 |   std::string optimization; | 
 |   std::string runtime_library; | 
 |   std::string treat_warning_as_error; | 
 |   std::string warning_level; | 
 | }; | 
 |  | 
 | // Some linker options which will be written to project file. We don't need to | 
 | // specify all options because generated project file is going to be used only | 
 | // for compilation of single file. For real build ninja files are used. | 
 | struct LinkerOptions { | 
 |   LinkerOptions(); | 
 |   ~LinkerOptions(); | 
 |  | 
 |   std::string subsystem; | 
 | }; | 
 |  | 
 | // Generates something which looks like a GUID, but depends only on the name and | 
 | // seed. This means the same name / seed will always generate the same GUID, so | 
 | // that projects and solutions which refer to each other can explicitly | 
 | // determine the GUID to refer to explicitly. It also means that the GUID will | 
 | // not change when the project for a target is rebuilt. | 
 | std::string MakeGuid(const std::string& entry_path, const std::string& seed); | 
 |  | 
 | // Parses |cflag| value and stores it in |options|. | 
 | void ParseCompilerOption(const std::string& cflag, CompilerOptions* options); | 
 |  | 
 | // Parses |ldflags| value and stores it in |options|. | 
 | void ParseLinkerOption(const std::string& ldflag, LinkerOptions* options); | 
 |  | 
 | #endif  // TOOLS_GN_VISUAL_STUDIO_UTILS_H_ |