split -kati_eval_stats from -kati_stats

add shell func time (in eval time) in -kati_stats
diff --git a/func.go b/func.go
index e2352c8..214e6b5 100644
--- a/func.go
+++ b/func.go
@@ -10,6 +10,7 @@
 	"sort"
 	"strconv"
 	"strings"
+	"time"
 )
 
 // Func is a make function.
@@ -660,6 +661,8 @@
 // http://www.gnu.org/software/make/manual/make.html#Shell-Function
 type funcShell struct{ fclosure }
 
+var shellFuncTime time.Duration
+
 func (f *funcShell) Arity() int { return 1 }
 
 func (f *funcShell) Eval(w io.Writer, ev *Evaluator) {
@@ -680,7 +683,9 @@
 		Args:   cmdline,
 		Stderr: os.Stderr,
 	}
+	t := time.Now()
 	out, err := cmd.Output()
+	shellFuncTime += time.Now().Sub(t)
 	if err != nil {
 		Log("$(shell %q) failed: %q", arg, err)
 	}
diff --git a/main.go b/main.go
index d89c986..d8a9592 100644
--- a/main.go
+++ b/main.go
@@ -21,6 +21,7 @@
 	heapprofile         string
 	memstats            string
 	katiStatsFlag       bool
+	katiEvalStatsFlag   bool
 	loadJson            string
 	saveJson            string
 	loadGob             string
@@ -48,6 +49,7 @@
 	flag.StringVar(&heapprofile, "kati_heapprofile", "", "write heap profile to `file`")
 	flag.StringVar(&memstats, "kati_memstats", "", "Show memstats with given templates")
 	flag.BoolVar(&katiStatsFlag, "kati_stats", false, "Show a bunch of statistics")
+	flag.BoolVar(&katiEvalStatsFlag, "kati_eval_stats", false, "Show eval statistics")
 	flag.BoolVar(&eagerCmdEvalFlag, "eager_cmd_eval", false, "Eval commands first.")
 	flag.BoolVar(&syntaxCheckOnlyFlag, "c", false, "Syntax check only.")
 	flag.StringVar(&queryFlag, "query", "", "Show the target info")
@@ -171,6 +173,7 @@
 	vars.Merge(er.vars)
 
 	LogStats("eval time: %q", time.Now().Sub(startTime))
+	LogStats("shell func time: %q", shellFuncTime)
 
 	startTime = time.Now()
 	db := NewDepBuilder(er, vars)
diff --git a/stats.go b/stats.go
index ca3b4ae..b50b26e 100644
--- a/stats.go
+++ b/stats.go
@@ -16,7 +16,7 @@
 var stats = map[string]statsData{}
 
 func addStats(name string, v Value, t time.Time) {
-	if !katiStatsFlag {
+	if !katiEvalStatsFlag {
 		return
 	}
 	d := time.Now().Sub(t)
@@ -31,7 +31,7 @@
 }
 
 func dumpStats() {
-	if !katiStatsFlag {
+	if !katiEvalStatsFlag {
 		return
 	}
 	var sv byTotalTime