summaryrefslogtreecommitdiffstats
path: root/tools/gn/args.h
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-16 16:46:14 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-16 16:46:14 +0000
commite3730f817be9693b5ad140a002abff4cbaf674ec (patch)
treeb0aa15b4099915ca23a673a11356b73db2321844 /tools/gn/args.h
parent5fb863442b955f859bee4baf67aeeaf4fdc4b6c4 (diff)
downloadchromium_src-e3730f817be9693b5ad140a002abff4cbaf674ec.zip
chromium_src-e3730f817be9693b5ad140a002abff4cbaf674ec.tar.gz
chromium_src-e3730f817be9693b5ad140a002abff4cbaf674ec.tar.bz2
GYP generator for GN.
This creates a GYP generator for GN. The GN build is run twice, once for debug and once for release mode. The resulting targets are paired to find the debug/release version of each one, and we write out the results as a GYP file. Since a GN build can change anything based on the debug/release status, including changing the file list, and GYP can't there are a bunch of checks to make sure that the source files and deps don't vary between the debug and release version of the same target. I split the Setup class apart so I can make duplicate Setup classes base on an original one (I use this to configure a release build based on the debug one). I added some copy constructors to the necessary classes so this would work. This reads in the GYP_DEFINES and configures the GN build in the same way. The mapping between GYP_DEFINES and gl flags is hardcoded. I had to write some parsing code for the GYP_DEFINES which is unfortunate. I added a new GN variable "gyp_file" for targets to set the GYP file that they should be written to. I added a parameter for the Windows SDK path that matches the GYP build. This removes the old "GYP" command. I commented out all of the grit rules. These aren't helping anything right now and just slow down testing. BUG=307571 R=scottmg@chromium.org Review URL: https://codereview.chromium.org/26561005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228933 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/gn/args.h')
-rw-r--r--tools/gn/args.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/gn/args.h b/tools/gn/args.h
index d3225ca..5abc127 100644
--- a/tools/gn/args.h
+++ b/tools/gn/args.h
@@ -23,10 +23,12 @@ extern const char kBuildArgs_Help[];
class Args {
public:
Args();
+ Args(const Args& other);
~Args();
// Specifies overrides of the build arguments. These are normally specified
// on the command line.
+ void AddArgOverride(const char* name, const Value& value);
void AddArgOverrides(const Scope::KeyValueMap& overrides);
// Sets up the root scope for a toolchain. This applies the default system
@@ -82,7 +84,7 @@ class Args {
// the user set variables on the command line that are not used anywhere.
mutable Scope::KeyValueMap declared_arguments_;
- DISALLOW_COPY_AND_ASSIGN(Args);
+ Args& operator=(const Args& other); // Disallow assignment.
};
#endif // TOOLS_GN_ARGS_H_