+ log.Fatal(err)
+ }
+ tracef(CJS, "initial fill with %d", jobs)
+ jsTokens[BMakeGoodToken] = int(jobs)
+ for ; jobs > 0; jobs-- {
+ jsReleaseNoLock(BMakeGoodToken)
+ }
+}
+
+func jsInit() {
+ jsTokens = make(map[byte]int)
+
+ makeType := os.Getenv(EnvMake)
+ var makeArgRe *regexp.Regexp
+ switch makeType {
+ case MakeTypeGmake:
+ makeArgRe = GMakeJSArgRe
+ MakeJSArg = GMakeJSArg
+ case MakeTypeBmake:
+ makeArgRe = BMakeJSArgRe
+ MakeJSArg = BMakeJSArg
+ case "":
+ fallthrough
+ case MakeTypeNone:
+ MakeFlagsName = EnvJSFd
+ makeArgRe = DMakeJSArgRe
+ MakeJSArg = DMakeJSArg
+ default:
+ log.Fatalln("unknown", EnvMake, "type")
+ }
+
+ MakeFlags = os.Getenv(MakeFlagsName)
+ jobsEnv := os.Getenv(EnvJobs)
+ if jobsEnv == "NO" {
+ // jobserver disabled, infinite jobs
+ return
+ }
+ if MakeFlags == "" {
+ // we are not running under make
+ jsStart(jobsEnv)
+ return