github.com/BurntSushi/xgb@v0.0.0-20210121224620-deaf085860bc/Makefile (about) 1 # This Makefile is used by the developer. It is not needed in any way to build 2 # a checkout of the XGB repository. 3 # It will be useful, however, if you are hacking at the code generator. 4 # i.e., after making a change to the code generator, run 'make' in the 5 # xgb directory. This will build xgbgen and regenerate each sub-package. 6 # 'make test' will then run any appropriate tests (just tests xproto right now). 7 # 'make bench' will test a couple of benchmarks. 8 # 'make build-all' will then try to build each extension. This isn't strictly 9 # necessary, but it's a good idea to make sure each sub-package is a valid 10 # Go package. 11 12 # My path to the X protocol XML descriptions. 13 XPROTO=/usr/share/xcb 14 15 # All of the XML files in my /usr/share/xcb directory EXCEPT XKB. -_- 16 # This is intended to build xgbgen and generate Go code for each supported 17 # extension. 18 all: build-xgbgen \ 19 bigreq.xml composite.xml damage.xml dpms.xml dri2.xml \ 20 ge.xml glx.xml randr.xml record.xml render.xml res.xml \ 21 screensaver.xml shape.xml shm.xml xc_misc.xml \ 22 xevie.xml xf86dri.xml xf86vidmode.xml xfixes.xml xinerama.xml \ 23 xprint.xml xproto.xml xselinux.xml xtest.xml \ 24 xvmc.xml xv.xml 25 26 build-xgbgen: 27 (cd xgbgen && go build) 28 29 # Builds each individual sub-package to make sure its valid Go code. 30 build-all: bigreq.b composite.b damage.b dpms.b dri2.b ge.b glx.b randr.b \ 31 record.b render.b res.b screensaver.b shape.b shm.b xcmisc.b \ 32 xevie.b xf86dri.b xf86vidmode.b xfixes.b xinerama.b \ 33 xprint.b xproto.b xselinux.b xtest.b xv.b xvmc.b 34 35 %.b: 36 (cd $* ; go build) 37 38 # Installs each individual sub-package. 39 install: bigreq.i composite.i damage.i dpms.i dri2.i ge.i glx.i randr.i \ 40 record.i render.i res.i screensaver.i shape.i shm.i xcmisc.i \ 41 xevie.i xf86dri.i xf86vidmode.i xfixes.i xinerama.i \ 42 xprint.i xproto.i xselinux.i xtest.i xv.i xvmc.i 43 go install 44 45 %.i: 46 (cd $* ; go install) 47 48 # xc_misc is special because it has an underscore. 49 # There's probably a way to do this better, but Makefiles aren't my strong suit. 50 xc_misc.xml: build-xgbgen 51 mkdir -p xcmisc 52 xgbgen/xgbgen --proto-path $(XPROTO) $(XPROTO)/xc_misc.xml > xcmisc/xcmisc.go 53 54 %.xml: build-xgbgen 55 mkdir -p $* 56 xgbgen/xgbgen --proto-path $(XPROTO) $(XPROTO)/$*.xml > $*/$*.go 57 58 # Just test the xproto core protocol for now. 59 test: 60 (cd xproto ; go test) 61 62 # Force all xproto benchmarks to run and no tests. 63 bench: 64 (cd xproto ; go test -run 'nomatch' -bench '.*' -cpu 1,2,3,6) 65 66 # gofmt all non-auto-generated code. 67 # (auto-generated code is already gofmt'd.) 68 # Also do a column check (80 cols) after a gofmt. 69 # But don't check columns on auto-generated code, since I don't care if they 70 # break 80 cols. 71 gofmt: 72 gofmt -w *.go xgbgen/*.go examples/*.go examples/*/*.go xproto/xproto_test.go 73 colcheck *.go xgbgen/*.go examples/*.go examples/*/*.go xproto/xproto_test.go 74 75 push: 76 git push origin master 77 git push github master 78