|  | // 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_ |