blob: ed543f0ad48a8890870bd2f0b3a01cd33326888a [file] [log] [blame]
// Copyright 2019 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_C_SUBSTITUTION_TYPE_H_
#define TOOLS_GN_C_SUBSTITUTION_TYPE_H_
#include <set>
#include <vector>
#include "tools/gn/substitution_type.h"
// The set of substitutions available to all tools.
extern const SubstitutionTypes CSubstitutions;
// Valid for compiler tools.
extern const Substitution CSubstitutionAsmFlags;
extern const Substitution CSubstitutionCFlags;
extern const Substitution CSubstitutionCFlagsC;
extern const Substitution CSubstitutionCFlagsCc;
extern const Substitution CSubstitutionCFlagsObjC;
extern const Substitution CSubstitutionCFlagsObjCc;
extern const Substitution CSubstitutionDefines;
extern const Substitution CSubstitutionIncludeDirs;
// Valid for linker tools.
extern const Substitution CSubstitutionLinkerInputs;
extern const Substitution CSubstitutionLinkerInputsNewline;
extern const Substitution CSubstitutionLdFlags;
extern const Substitution CSubstitutionLibs;
extern const Substitution CSubstitutionOutputExtension;
extern const Substitution CSubstitutionSoLibs;
// Valid for alink only.
extern const Substitution CSubstitutionArFlags;
// Both compiler and linker tools.
bool IsValidCompilerSubstitution(const Substitution* type);
bool IsValidCompilerOutputsSubstitution(const Substitution* type);
bool IsValidLinkerSubstitution(const Substitution* type);
bool IsValidLinkerOutputsSubstitution(const Substitution* type);
bool IsValidALinkSubstitution(const Substitution* type);
#endif // TOOLS_GN_C_SUBSTITUTION_TYPE_H_