aboutsummaryrefslogtreecommitdiff
path: root/ninja.go
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-30 09:52:13 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-30 14:12:51 +0900
commitc916ea2b4d2fa35794c93beba5ed51542ee029d0 (patch)
tree80caecc25d24b1f02aacb5bcce6fc2417ba95199 /ninja.go
parent65489db8a8c51e7e143e19a040bdec28ee884d34 (diff)
order only is not attribute of dep node.
Diffstat (limited to 'ninja.go')
-rw-r--r--ninja.go21
1 files changed, 14 insertions, 7 deletions
diff --git a/ninja.go b/ninja.go
index 9acf664..c5b63bc 100644
--- a/ninja.go
+++ b/ninja.go
@@ -207,13 +207,12 @@ func (n *ninjaGenerator) emitBuild(output, rule, dep string) {
func getDepString(node *DepNode) string {
var deps []string
- var orderOnlys []string
for _, d := range node.Deps {
- if d.IsOrderOnly {
- orderOnlys = append(orderOnlys, d.Output)
- } else {
- deps = append(deps, d.Output)
- }
+ deps = append(deps, d.Output)
+ }
+ var orderOnlys []string
+ for _, d := range node.OrderOnlys {
+ orderOnlys = append(orderOnlys, d.Output)
}
dep := ""
if len(deps) > 0 {
@@ -231,7 +230,7 @@ func (n *ninjaGenerator) emitNode(node *DepNode) error {
}
n.done[node.Output] = true
- if len(node.Cmds) == 0 && len(node.Deps) == 0 && !node.IsPhony {
+ if len(node.Cmds) == 0 && len(node.Deps) == 0 && len(node.OrderOnlys) == 0 && !node.IsPhony {
return nil
}
@@ -243,6 +242,7 @@ func (n *ninjaGenerator) emitNode(node *DepNode) error {
useLocalPool := false
if len(runners) > 0 {
ruleName = n.genRuleName()
+ fmt.Fprintf(n.f, "\n# rule for %s\n", node.Output)
fmt.Fprintf(n.f, "rule %s\n", ruleName)
fmt.Fprintf(n.f, " description = build $out\n")
@@ -272,6 +272,7 @@ func (n *ninjaGenerator) emitNode(node *DepNode) error {
if useLocalPool {
fmt.Fprintf(n.f, " pool = local_pool\n")
}
+ fmt.Fprintf(n.f, "\n")
for _, d := range node.Deps {
err := n.emitNode(d)
@@ -279,6 +280,12 @@ func (n *ninjaGenerator) emitNode(node *DepNode) error {
return err
}
}
+ for _, d := range node.OrderOnlys {
+ err := n.emitNode(d)
+ if err != nil {
+ return err
+ }
+ }
return nil
}