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