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)
 	}
 }