Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Unified Diff: tools/gn/substitution_type.h

Issue 429423002: Refactor GN source expansions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/gn/substitution_pattern_unittest.cc ('k') | tools/gn/substitution_type.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/substitution_type.h
diff --git a/tools/gn/substitution_type.h b/tools/gn/substitution_type.h
new file mode 100644
index 0000000000000000000000000000000000000000..fd7c40692dc70c3cac80657617bd0b62c22c8fb9
--- /dev/null
+++ b/tools/gn/substitution_type.h
@@ -0,0 +1,87 @@
+// 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.
+
+#ifndef TOOLS_GN_SUBSTITUTION_TYPE_H_
+#define TOOLS_GN_SUBSTITUTION_TYPE_H_
+
+#include <vector>
+
+class Err;
+class ParseNode;
+
+// Keep kSubstitutionNames, kSubstitutionNinjaNames and the
+// IsValid*Substutition functions in sync if you change anything here.
+enum SubstitutionType {
+ SUBSTITUTION_LITERAL = 0,
+
+ // The index of the first pattern. To loop overal all patterns, go from here
+ // until NUM_TYPES.
+ SUBSTITUTION_FIRST_PATTERN,
+
+ SUBSTITUTION_SOURCE = SUBSTITUTION_FIRST_PATTERN, // {{source}}
+ SUBSTITUTION_SOURCE_NAME_PART, // {{source_name_part}}
+ SUBSTITUTION_SOURCE_FILE_PART, // {{source_file_part}}
+ SUBSTITUTION_SOURCE_DIR, // {{source_dir}}
+ SUBSTITUTION_SOURCE_ROOT_RELATIVE_DIR, // {{root_relative_dir}}
+ SUBSTITUTION_SOURCE_GEN_DIR, // {{source_gen_dir}}
+ SUBSTITUTION_SOURCE_OUT_DIR, // {{source_out_dir}}
+
+ // Valid for all compiler and linker tools (depends on target).
+ SUBSTITUTION_OUTPUT, // {{output}}
+ SUBSTITUTION_ROOT_GEN_DIR, // {{root_gen_dir}}
+ SUBSTITUTION_ROOT_OUT_DIR, // {{root_out_dir}}
+ SUBSTITUTION_TARGET_GEN_DIR, // {{target_gen_dir}}
+ SUBSTITUTION_TARGET_OUT_DIR, // {{target_out_dir}}
+ SUBSTITUTION_TARGET_OUTPUT_NAME, // {{target_output_name}}
+
+ // Valid for compiler tools.
+ SUBSTITUTION_CFLAGS, // {{cflags}}
+ SUBSTITUTION_CFLAGS_C, // {{cflags_c}}
+ SUBSTITUTION_CFLAGS_CC, // {{cflags_cc}}
+ SUBSTITUTION_CFLAGS_OBJC, // {{cflags_objc}}
+ SUBSTITUTION_CFLAGS_OBJCC, // {{cflags_objcc}}
+ SUBSTITUTION_DEFINES, // {{defines}}
+ SUBSTITUTION_INCLUDE_DIRS, // {{include_dirs}}
+
+ // Valid for linker tools.
+ SUBSTITUTION_LINKER_INPUTS, // {{inputs}}
+ SUBSTITUTION_LDFLAGS, // {{ldflags}}
+ SUBSTITUTION_LIBS, // {{libs}}
+ SUBSTITUTION_OUTPUT_EXTENSION, // {{output_extension}}
+ SUBSTITUTION_SOLIBS, // {{solibs}}
+
+ SUBSTITUTION_NUM_TYPES // Must be last.
+};
+
+// An array of size SUBSTITUTION_NUM_TYPES that lists the names of the
+// substitution patterns, including the curly braces. So, for example,
+// kSubstitutionNames[SUBSTITUTION_SOURCE] == "{{source}}".
+extern const char* kSubstitutionNames[SUBSTITUTION_NUM_TYPES];
+
+// Ninja variables corresponding to each substitution. These do not include
+// the dollar sign.
+extern const char* kSubstitutionNinjaNames[SUBSTITUTION_NUM_TYPES];
+
+// Returns true if the given substitution pattern references the output
+// directory. This is used to check strings that begin with a substitution to
+// verify that the produce a file in the output directory.
+bool SubstitutionIsInOutputDir(SubstitutionType type);
+
+// Returns true if the given substitution is valid for the named purpose.
+bool IsValidSourceSubstitution(SubstitutionType type);
+// Both compiler and linker tools.
+bool IsValidToolSubstutition(SubstitutionType type);
+bool IsValidCompilerSubstitution(SubstitutionType type);
+bool IsValidCompilerOutputsSubstitution(SubstitutionType type);
+bool IsValidLinkerSubstitution(SubstitutionType type);
+bool IsValidLinkerOutputsSubstitution(SubstitutionType type);
+
+// Like the "IsValid..." version above but checks a list of types and sets a
+// an error blaming the given source if the test fails.
+bool EnsureValidSourcesSubstitutions(
+ const std::vector<SubstitutionType>& types,
+ const ParseNode* origin,
+ Err* err);
+
+#endif // TOOLS_GN_SUBSTITUTION_TYPE_H_
« no previous file with comments | « tools/gn/substitution_pattern_unittest.cc ('k') | tools/gn/substitution_type.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698