blob: 2e30718ecc0235f16243dbcf2625ae1973cf5280 [file] [log] [blame]
// Copyright 2014 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package bootstrap
var (
// These variables are the only configuration needed by the boostrap
// modules. They are always set to the variable name enclosed in "@@" so
// that their values can be easily replaced in the generated Ninja file.
srcDir = pctx.StaticVariable("srcDir", "@@SrcDir@@")
buildDir = pctx.StaticVariable("buildDir", "@@BuildDir@@")
goRoot = pctx.StaticVariable("goRoot", "@@GoRoot@@")
compileCmd = pctx.StaticVariable("compileCmd", "@@GoCompile@@")
linkCmd = pctx.StaticVariable("linkCmd", "@@GoLink@@")
bootstrapCmd = pctx.StaticVariable("bootstrapCmd", "@@Bootstrap@@")
bootstrapManifest = pctx.StaticVariable("bootstrapManifest",
"@@BootstrapManifest@@")
)
type ConfigInterface interface {
// GeneratingBootstrapper should return true if this build invocation is
// creating a build.ninja.in file to be used in a build bootstrapping
// sequence.
GeneratingBootstrapper() bool
// GeneratingPrimaryBuilder should return true if this build invocation is
// creating a build.ninja.in file to be used to build the primary builder
GeneratingPrimaryBuilder() bool
}
type ConfigRemoveAbandonedFiles interface {
// RemoveAbandonedFiles should return true if files listed in the
// .ninja_log but not the output build.ninja file should be deleted.
RemoveAbandonedFiles() bool
}
type ConfigBlueprintToolLocation interface {
// BlueprintToolLocation can return a path name to install blueprint tools
// designed for end users (bpfmt, bpmodify, and anything else using
// blueprint_go_binary).
BlueprintToolLocation() string
}
type Stage int
const (
StageBootstrap Stage = iota
StagePrimary
StageMain
)
type Config struct {
stage Stage
topLevelBlueprintsFile string
runGoTests bool
}