aboutsummaryrefslogtreecommitdiff
path: root/go/Makefile
blob: 31906fc1b782a6156db03eb20ca1a86dfa960333 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Building the libcap/cap Go package. Note, we use symlinks to
# construct a go friendly src tree.

topdir=$(realpath ..)
include ../Make.Rules

GOPATH="$(realpath .)"
PSXGOPACKAGE=pkg/$(GOOSARCH)/libcap/psx.a
CAPGOPACKAGE=pkg/$(GOOSARCH)/libcap/cap.a

all: $(PSXGOPACKAGE) $(CAPGOPACKAGE) web compare-cap

#	$(MAKE) compare-cap
#	$(MAKE) web
#	./compare-cap

src/libcap/psx:
	mkdir -p src/libcap
	ln -s $(realpath ..)/psx src/libcap/

src/libcap/cap:
	mkdir -p src/libcap
	ln -s $(realpath ..)/cap src/libcap/

$(PSXGOPACKAGE): src/libcap/psx ../psx/psx.go ../psx/psx_test.go
	CGO_LDFLAGS_ALLOW="$(CGO_LDFLAGS_ALLOW)" CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" GOPATH="$(GOPATH)" go test libcap/psx
	mkdir -p pkg
	CGO_LDFLAGS_ALLOW="$(CGO_LDFLAGS_ALLOW)" CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" GOPATH="$(GOPATH)" go build libcap/psx

$(CAPGOPACKAGE): src/libcap/cap/syscalls.go src/libcap/cap/names.go src/libcap/cap/cap.go src/libcap/cap/text.go
	CGO_LDFLAGS_ALLOW="$(CGO_LDFLAGS_ALLOW)" CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" GOPATH=$(realpath .) go test libcap/cap
	CGO_LDFLAGS_ALLOW="$(CGO_LDFLAGS_ALLOW)" CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" GOPATH=$(realpath .) go build libcap/cap

install: all
# TODO - install the Go package somewhere useful (ex. /usr/share/gocode/src/libcap/cap/ )

../libcap/cap_names.h:
	make -C ../libcap

src/libcap/cap/names.go: ../libcap/cap_names.h src/libcap/cap  mknames.go
	go run mknames.go --header=$< | gofmt > $@ || rm -f $@

src/libcap/cap/syscalls.go: ./syscalls.sh src/libcap/cap
	./syscalls.sh src/libcap/cap

# Compile and run something with this package and compare it to libcap.
compare-cap: compare-cap.go $(CAPGOPACKAGE)
	CGO_LDFLAGS_ALLOW="$(CGO_LDFLAGS_ALLOW)" CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" GOPATH=$(realpath .) go build $<

web: web.go $(CAPGOPACKAGE)
	CGO_ENABLED="$(CGO_REQUIRED)" CGO_LDFLAGS_ALLOW="$(CGO_LDFLAGS_ALLOW)" CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" GOPATH=$(realpath .) go build $<

clean:
	GOPATH=$(realpath .) go clean -x -i libcap/cap 2> /dev/null || exit 0
	GOPATH=$(realpath .) go clean -x -i libcap/psx 2> /dev/null || exit 0
	rm -f *.o *.so mknames web compare-cap *~
	rm -f ../cap/*~ ../cap/names.go ../cap/syscalls*.go
	rm -f ../psx/*~
	rm -fr pkg src