| # 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. |
| |
| # FFI demo |
| |
| include ../../../src/Make.$(GOARCH) |
| |
| all: gmp.a gmp.so |
| |
| gcc.o: gcc.c |
| gcc -fPIC -O2 -o gcc.o -c gcc.c |
| |
| gmp.so: gcc.o |
| gcc -shared -o gmp.so gcc.o -L$(GOROOT)/pkg/$(GOOS)_$(GOARCH) -lcgo -lgmp |
| |
| gmp.a: 6c.6 go.6 |
| gopack grc gmp.a 6c.6 go.6 |
| |
| # from pkg/runtime/Makefile: TODO(rsc): how to deal with this? |
| # Set SIZE to 32 or 64. |
| SIZE_386=32 |
| SIZE_amd64=64 |
| SIZE_arm=32 |
| SIZE=$(SIZE_$(GOARCH)) |
| |
| # Setup CFLAGS. Add -D_64BIT on 64-bit platforms (sorry). |
| CFLAGS_64=-D_64BIT |
| # TODO(kaib): fix register allocation to honor extern register so we |
| # can enable optimizations again. |
| CFLAGS_arm=-N |
| CFLAGS=-I$(GOOS) -I$(GOOS)/$(GOARCH) -wF $(CFLAGS_$(SIZE)) $(CFLAGS_$(GOARCH)) |
| |
| 6c.6: 6c.c |
| 6c -FVw $(CFLAGS) -I$(GOROOT)/src/pkg/runtime 6c.c |
| |
| go.6: go.go |
| 6g go.go |
| |
| PKG=$(GOROOT)/pkg/$(GOOS)_$(GOARCH) |
| |
| install: $(PKG)/gmp.so $(PKG)/gmp.a |
| |
| $(PKG)/gmp.so: gmp.so |
| cp gmp.so $@ |
| |
| $(PKG)/gmp.a: gmp.a |
| cp gmp.a $@ |
| |
| clean: |
| rm -f *.6 *.o *.so *.a |
| |