aboutsummaryrefslogtreecommitdiff
path: root/nexgb/Makefile
blob: dda2f0573af1d396bb3788fdc22e54be0634565a (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# This Makefile is used by the developer. It is not needed in any way to build
# a checkout of the neXGB repository.
# It will be useful, however, if you are hacking at the code generator.
# i.e., after making a change to the code generator, run 'make' in the
# xgb directory. This will build xgbgen and regenerate each sub-package.
# 'make test' will then run any appropriate tests (just tests xproto right now).
# 'make bench' will test a couple of benchmarks.
# 'make build-all' will then try to build each extension. This isn't strictly
# necessary, but it's a good idea to make sure each sub-package is a valid
# Go package.

# My path to the X protocol XML descriptions.
ifndef XPROTO
XPROTO=/usr/share/xcb
endif

# All of the XML files in my /usr/share/xcb directory except XKB, Xinput, SYNC.
# This is intended to build xgbgen and generate Go code for each supported
# extension.
all: build-xgbgen \
		 bigreq.xml composite.xml damage.xml dpms.xml dri2.xml \
		 ge.xml glx.xml randr.xml record.xml render.xml res.xml \
		 screensaver.xml shape.xml shm.xml xc_misc.xml \
		 xevie.xml xf86dri.xml xf86vidmode.xml xfixes.xml xinerama.xml \
		 xprint.xml xproto.xml xselinux.xml xtest.xml \
		 xvmc.xml xv.xml

build-xgbgen:
	(cd xgbgen && go build)

# Builds each individual sub-package to make sure its valid Go code.
build-all: bigreq.b composite.b damage.b dpms.b dri2.b ge.b glx.b randr.b \
					 record.b render.b res.b screensaver.b shape.b shm.b xcmisc.b \
					 xevie.b xf86dri.b xf86vidmode.b xfixes.b xinerama.b \
					 xprint.b xproto.b xselinux.b xtest.b xv.b xvmc.b

%.b:
	(cd $* ; go build)

# Installs each individual sub-package.
install: bigreq.i composite.i damage.i dpms.i dri2.i ge.i glx.i randr.i \
					 record.i render.i res.i screensaver.i shape.i shm.i xcmisc.i \
					 xevie.i xf86dri.i xf86vidmode.i xfixes.i xinerama.i \
					 xprint.i xproto.i xselinux.i xtest.i xv.i xvmc.i
	go install

%.i:
	(cd $* ; go install)

# xc_misc is special because it has an underscore.
# There's probably a way to do this better, but Makefiles aren't my strong suit.
xc_misc.xml: build-xgbgen
	mkdir -p xcmisc
	xgbgen/xgbgen --proto-path $(XPROTO) $(XPROTO)/xc_misc.xml > xcmisc/xcmisc.go

%.xml: build-xgbgen
	mkdir -p $*
	xgbgen/xgbgen --proto-path $(XPROTO) $(XPROTO)/$*.xml > $*/$*.go

# Just test the xproto core protocol for now.
test:
	(cd xproto ; go test)

# Force all xproto benchmarks to run and no tests.
bench:
	(cd xproto ; go test -run 'nomatch' -bench '.*' -cpu 1,2,3,6)

# gofmt all non-auto-generated code.
# (auto-generated code is already gofmt'd.)
# Also do a column check (80 cols) after a gofmt.
# But don't check columns on auto-generated code, since I don't care if they
# break 80 cols.
gofmt:
	gofmt -w *.go xgbgen/*.go examples/*.go examples/*/*.go xproto/xproto_test.go
	colcheck *.go xgbgen/*.go examples/*.go examples/*/*.go xproto/xproto_test.go