diff options
Diffstat (limited to 'src/cmd/gobuild/makefile.go')
-rw-r--r-- | src/cmd/gobuild/makefile.go | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/src/cmd/gobuild/makefile.go b/src/cmd/gobuild/makefile.go new file mode 100644 index 000000000..cbdad90c0 --- /dev/null +++ b/src/cmd/gobuild/makefile.go @@ -0,0 +1,122 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package gobuild + +import ( + "fmt"; + "gobuild"; + "io"; + "path"; + "template"; +) + +var makefileTemplate = + "# DO NOT EDIT. Automatically generated by gobuild.\n" + "{Args|args} >Makefile\n" + "\n" + "O_arm=5\n" // TODO(rsc): include something here? + "O_amd64=6\n" + "O_386=8\n" + "OS=568vq\n" + "\n" + "O=$(O_$(GOARCH))\n" + "GC=$(O)g\n" + "CC=$(O)c -FVw\n" + "AS=$(O)a\n" + "AR=6ar\n" + "\n" + "default: packages\n" + "\n" + "clean:\n" + " rm -f *.[$(OS)] *.a [$(OS)].out\n" + "\n" + "test: packages\n" + " gotest\n" + "\n" + "coverage: packages\n" + " gotest\n" + " 6cov -g `pwd` | grep -v '_test\\.go:'\n" + "\n" + "%.$O: %.go\n" + " $(GC) $*.go\n" + "\n" + "%.$O: %.c\n" + " $(CC) $*.c\n" + "\n" + "%.$O: %.s\n" + " $(AS) $*.s\n" + "\n" + "{.repeated section Phases}\n" + "O{Phase}=\\\n" + "{.repeated section ArCmds}\n" + "{.repeated section Files}\n" + " {Name|basename}.$O\\\n" + "{.end}\n" + "{.end}\n" + "\n" + "{.end}\n" + "\n" + "phases:{.repeated section Phases} a{Phase}{.end}\n" + "{.repeated section Packages}\n" + "{Name}.a: phases\n" + "{.end}\n" + "\n" + "{.repeated section Phases}\n" + "a{Phase}: $(O{Phase})\n" + "{.repeated section ArCmds}\n" + " $(AR) grc {.section Pkg}{Name}.a{.end}{.repeated section Files} {Name|basename}.$O{.end}\n" + "{.end}\n" + " rm -f $(O{Phase})\n" + "\n" + "{.end}\n" + "\n" + "newpkg: clean\n" + "{.repeated section Packages}\n" + " $(AR) grc {Name}.a\n" + "{.end}\n" + "\n" + "$(O1): newpkg\n" + "{.repeated section Phases}\n" + "$(O{Phase|+1}): a{Phase}\n" + "{.end}\n" + "\n" + "nuke: clean\n" + " rm -f{.repeated section Packages} $(GOROOT)/pkg/{Name}.a{.end}\n" + "\n" + "packages:{.repeated section Packages} {Name}.a{.end}\n" + "\n" + "install: packages\n" + "{.repeated section Packages}\n" + " cp {Name}.a $(GOROOT)/pkg/{Name}.a\n" + "{.end}\n" + +func argsFmt(w io.Write, x interface{}, format string) { + args := x.([]string); + fmt.Fprint(w, "#"); + for i, a := range args { + fmt.Fprint(w, " ", ShellString(a)); + } +} + +func basenameFmt(w io.Write, x interface{}, format string) { + t := fmt.Sprint(x); + t = t[0:len(t)-len(path.Ext(t))]; + fmt.Fprint(w, MakeString(t)); +} + +func plus1Fmt(w io.Write, x interface{}, format string) { + fmt.Fprint(w, x.(int) + 1); +} + +func makeFmt(w io.Write, x interface{}, format string) { + fmt.Fprint(w, MakeString(fmt.Sprint(x))); +} + +var makefileMap = template.FormatterMap { + "": makeFmt, + "+1": plus1Fmt, + "args": argsFmt, + "basename": basenameFmt, +} |