Add a switch '-r' that farces rebuild of just the immediate targets.
This commit is contained in:
parent
ccd90668b9
commit
18b729821f
1 changed files with 14 additions and 2 deletions
16
mk.go
16
mk.go
|
|
@ -16,6 +16,9 @@ var nocolor bool = false
|
||||||
// True if we are ignoring timestamps and rebuilding everything.
|
// True if we are ignoring timestamps and rebuilding everything.
|
||||||
var rebuildall bool = false
|
var rebuildall bool = false
|
||||||
|
|
||||||
|
// Set of targets for which we are forcing rebuild
|
||||||
|
var rebuildtargets map[string]bool = make(map[string]bool)
|
||||||
|
|
||||||
// Lock on standard out, messages don't get interleaved too much.
|
// Lock on standard out, messages don't get interleaved too much.
|
||||||
var mkMsgMutex sync.Mutex
|
var mkMsgMutex sync.Mutex
|
||||||
|
|
||||||
|
|
@ -203,7 +206,8 @@ func mkNode(g *graph, u *node, dryrun bool, required bool) {
|
||||||
uptodate = false
|
uptodate = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if rebuildall {
|
_, isrebuildtarget := rebuildtargets[u.name]
|
||||||
|
if isrebuildtarget || rebuildall {
|
||||||
uptodate = false
|
uptodate = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -291,9 +295,11 @@ func main() {
|
||||||
var mkfilepath string
|
var mkfilepath string
|
||||||
var interactive bool
|
var interactive bool
|
||||||
var dryrun bool
|
var dryrun bool
|
||||||
|
var shallowrebuild bool
|
||||||
|
|
||||||
flag.StringVar(&mkfilepath, "f", "mkfile", "use the given file as mkfile")
|
flag.StringVar(&mkfilepath, "f", "mkfile", "use the given file as mkfile")
|
||||||
flag.BoolVar(&dryrun, "n", false, "print commands without actually executing")
|
flag.BoolVar(&dryrun, "n", false, "print commands without actually executing")
|
||||||
|
flag.BoolVar(&shallowrebuild, "r", false, "force building of just targets")
|
||||||
flag.BoolVar(&rebuildall, "a", false, "force building of all dependencies")
|
flag.BoolVar(&rebuildall, "a", false, "force building of all dependencies")
|
||||||
flag.IntVar(&subprocsAllowed, "p", 8, "maximum number of jobs to execute in parallel")
|
flag.IntVar(&subprocsAllowed, "p", 8, "maximum number of jobs to execute in parallel")
|
||||||
flag.BoolVar(&interactive, "i", false, "prompt before executing rules")
|
flag.BoolVar(&interactive, "i", false, "prompt before executing rules")
|
||||||
|
|
@ -326,7 +332,13 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a dummy virtula rule that depends on every target
|
if shallowrebuild {
|
||||||
|
for i := range targets {
|
||||||
|
rebuildtargets[targets[i]] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a dummy virtual rule that depends on every target
|
||||||
root := rule{}
|
root := rule{}
|
||||||
root.targets = []pattern{pattern{false, "", nil}}
|
root.targets = []pattern{pattern{false, "", nil}}
|
||||||
root.attributes = attribSet{false, false, false, false, false, false, false, true, false}
|
root.attributes = attribSet{false, false, false, false, false, false, false, true, false}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue