addStats for include
https://docs.google.com/spreadsheets/d/1R3pSbuX_Lk3pJkTG812j_2JylYwmbqB5oPyw-ihePN0/edit#gid=1551377902
diff --git a/eval.go b/eval.go
index 7540824..154ef3f 100644
--- a/eval.go
+++ b/eval.go
@@ -4,6 +4,7 @@
"bytes"
"fmt"
"strings"
+ "time"
)
type EvalResult struct {
@@ -243,6 +244,26 @@
return ev.vars.Lookup(name)
}
+func (ev *Evaluator) evalIncludeFile(fname string) error {
+ t := time.Now()
+ defer func() {
+ addStats("include", literal(fname), t)
+ }()
+ Log("Reading makefile %q", fname)
+ mk, err := ParseMakefile(fname)
+ if err != nil {
+ return err
+ }
+ makefileList := ev.outVars.Lookup("MAKEFILE_LIST")
+ makefileList = makefileList.Append(ev, mk.filename)
+ ev.outVars.Assign("MAKEFILE_LIST", makefileList)
+
+ for _, stmt := range mk.stmts {
+ ev.eval(stmt)
+ }
+ return nil
+}
+
func (ev *Evaluator) evalInclude(ast *IncludeAST) {
ev.lastRule = nil
ev.filename = ast.filename
@@ -256,9 +277,7 @@
}
files := ev.Values(v)
for _, f := range files {
- file := string(f)
- Log("Reading makefile %q", file)
- mk, err := ParseMakefile(file)
+ err := ev.evalIncludeFile(string(f))
if err != nil {
if ast.op == "include" {
panic(err)
@@ -266,14 +285,6 @@
continue
}
}
-
- makefileList := ev.outVars.Lookup("MAKEFILE_LIST")
- makefileList = makefileList.Append(ev, mk.filename)
- ev.outVars.Assign("MAKEFILE_LIST", makefileList)
-
- for _, stmt := range mk.stmts {
- ev.eval(stmt)
- }
}
}
diff --git a/stats.go b/stats.go
index 61a476b..ca3b4ae 100644
--- a/stats.go
+++ b/stats.go
@@ -40,8 +40,9 @@
sv = append(sv, v)
}
sort.Sort(sv)
+ fmt.Println("count,longest(ns),total(ns),longest,total,name")
for _, s := range sv {
- fmt.Printf("%s,%d,%v,%v\n", s.Name, s.Count, s.Longest, s.Total)
+ fmt.Printf("%d,%d,%d,%v,%v,%s\n", s.Count, s.Longest, s.Total, s.Longest, s.Total, s.Name)
}
}