summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/Makefile')
-rw-r--r--src/pkg/runtime/Makefile168
1 files changed, 168 insertions, 0 deletions
diff --git a/src/pkg/runtime/Makefile b/src/pkg/runtime/Makefile
new file mode 100644
index 000000000..64bd2b771
--- /dev/null
+++ b/src/pkg/runtime/Makefile
@@ -0,0 +1,168 @@
+# 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.
+
+include ../../Make.inc
+
+TARG=runtime
+
+# Set SIZE to 32 or 64.
+SIZE_386=32
+SIZE_amd64=64
+SIZE_arm=32
+SIZE=$(SIZE_$(GOARCH))
+
+CFLAGS_windows=-D__WINDOWS__
+CFLAGS=-I$(GOOS) -I$(GOARCH) -I$(GOOS)/$(GOARCH) -wF $(CFLAGS_$(GOARCH)) $(CFLAGS_$(GOOS))
+
+GOFILES=\
+ debug.go\
+ error.go\
+ extern.go\
+ mem.go\
+ sig.go\
+ softfloat64.go\
+ type.go\
+ version.go\
+ version_$(GOOS).go\
+ version_$(GOARCH).go\
+ runtime_defs.go\
+
+CLEANFILES+=version.go version_*.go
+
+OFILES_windows=\
+ syscall.$O\
+
+# 386-specific object files
+OFILES_386=\
+ vlop.$O\
+ vlrt.$O\
+
+# arm-specific object files
+OFILES_arm=\
+ memset.$O\
+ softfloat.$O\
+ vlop.$O\
+ vlrt.$O\
+
+OFILES=\
+ asm.$O\
+ atomic.$O\
+ cgocall.$O\
+ chan.$O\
+ closure.$O\
+ cpuprof.$O\
+ float.$O\
+ complex.$O\
+ hashmap.$O\
+ iface.$O\
+ malloc.$O\
+ mcache.$O\
+ mcentral.$O\
+ mem.$O\
+ memmove.$O\
+ mfinal.$O\
+ mfixalloc.$O\
+ mgc0.$O\
+ mheap.$O\
+ mprof.$O\
+ msize.$O\
+ print.$O\
+ proc.$O\
+ rune.$O\
+ runtime.$O\
+ runtime1.$O\
+ rt0.$O\
+ sema.$O\
+ signal.$O\
+ sigqueue.$O\
+ slice.$O\
+ string.$O\
+ symtab.$O\
+ sys.$O\
+ thread.$O\
+ traceback.$O\
+ $(OFILES_$(GOARCH))\
+ $(OFILES_$(GOOS))\
+
+HFILES=\
+ cgocall.h\
+ runtime.h\
+ hashmap.h\
+ malloc.h\
+ stack.h\
+ $(GOARCH)/asm.h\
+ $(GOOS)/os.h\
+ $(GOOS)/signals.h\
+ $(GOOS)/$(GOARCH)/defs.h\
+
+GOFILES+=$(GOFILES_$(GOOS))
+
+# For use by cgo.
+INSTALLFILES=$(pkgdir)/runtime.h $(pkgdir)/cgocall.h
+
+# special, out of the way compiler flag that means "add runtime metadata to output"
+GC+= -+
+
+include ../../Make.pkg
+
+$(pkgdir)/%.h: %.h
+ @test -d $(QUOTED_GOROOT)/pkg && mkdir -p $(pkgdir)
+ cp $< "$@"
+
+clean: clean-local
+
+clean-local:
+ rm -f goc2c mkversion version.go */asm.h runtime.acid.* runtime_defs.go $$(ls *.goc | sed 's/goc$$/c/')
+
+$(GOARCH)/asm.h: mkasmh.sh runtime.acid.$(GOARCH)
+ ./mkasmh.sh >$@.x
+ mv -f $@.x $@
+
+goc2c: goc2c.c
+ quietgcc -o $@ -I "$(GOROOT)/include" $< "$(GOROOT)/lib/lib9.a"
+
+mkversion: mkversion.c
+ quietgcc -o $@ -I "$(GOROOT)/include" $< "$(GOROOT)/lib/lib9.a"
+
+version.go: mkversion
+ GOROOT="$(GOROOT_FINAL)" ./mkversion >version.go
+
+version_$(GOARCH).go:
+ (echo 'package runtime'; echo 'const theGoarch = "$(GOARCH)"') >$@
+
+version_$(GOOS).go:
+ (echo 'package runtime'; echo 'const theGoos = "$(GOOS)"') >$@
+
+%.c: %.goc goc2c
+ ./goc2c "`pwd`/$<" > $@.tmp
+ mv -f $@.tmp $@
+
+%.$O: $(GOARCH)/%.c $(HFILES)
+ $(CC) $(CFLAGS) $<
+
+%.$O: $(GOOS)/%.c $(HFILES)
+ $(CC) $(CFLAGS) $<
+
+%.$O: $(GOOS)/$(GOARCH)/%.c $(HFILES)
+ $(CC) $(CFLAGS) $<
+
+%.$O: $(GOARCH)/%.s $(GOARCH)/asm.h
+ $(AS) $<
+
+%.$O: $(GOOS)/$(GOARCH)/%.s $(GOARCH)/asm.h
+ $(AS) $<
+
+# for discovering offsets inside structs when debugging
+runtime.acid.$(GOARCH): runtime.h proc.c
+ $(CC) $(CFLAGS) -a proc.c >$@
+
+# 386 traceback is really amd64 traceback
+ifeq ($(GOARCH),386)
+traceback.$O: amd64/traceback.c
+ $(CC) $(CFLAGS) $<
+endif
+
+runtime_defs.go: proc.c iface.c hashmap.c chan.c
+ CC="$(CC)" CFLAGS="$(CFLAGS)" ./mkgodefs.sh $^ > $@.x
+ mv -f $@.x $@