| # 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)) |
| |
| # TODO(kaib): fix register allocation to honor extern register so we |
| # can enable optimizations again. |
| CFLAGS_arm=-N |
| 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\ |
| 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\ |
| reflect.$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 $@ $< |
| |
| 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 $@ |