1# Protocol Buffers for Go with Gadgets
2#
3# Copyright (c) 2013, The GoGo Authors. All rights reserved.
4# http://github.com/gogo/protobuf
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions are
8# met:
9#
10#     * Redistributions of source code must retain the above copyright
11# notice, this list of conditions and the following disclaimer.
12#     * Redistributions in binary form must reproduce the above
13# copyright notice, this list of conditions and the following disclaimer
14# in the documentation and/or other materials provided with the
15# distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29GO_VERSION:=$(shell go version)
30
31.PHONY: nuke regenerate tests clean install gofmt vet contributors
32
33all: clean install regenerate install tests errcheck vet
34
35buildserverall: clean install regenerate install tests vet js
36
37install:
38	go install ./proto
39	go install ./gogoproto
40	go install ./jsonpb
41	go install ./protoc-gen-gogo
42	go install ./protoc-gen-gofast
43	go install ./protoc-gen-gogofast
44	go install ./protoc-gen-gogofaster
45	go install ./protoc-gen-gogoslick
46	go install ./protoc-gen-gostring
47	go install ./protoc-min-version
48	go install ./protoc-gen-combo
49	go install ./gogoreplace
50
51clean:
52	go clean ./...
53
54nuke:
55	go clean -i ./...
56
57gofmt:
58	gofmt -l -s -w .
59
60regenerate:
61	make -C protoc-gen-gogo regenerate
62	make -C gogoproto regenerate
63	make -C proto/test_proto regenerate
64	make -C proto/proto3_proto regenerate
65	make -C jsonpb/jsonpb_test_proto regenerate
66	make -C conformance regenerate
67	make -C protobuf regenerate
68	make -C test regenerate
69	make -C test/example regenerate
70	make -C test/unrecognized regenerate
71	make -C test/group regenerate
72	make -C test/unrecognizedgroup regenerate
73	make -C test/enumstringer regenerate
74	make -C test/unmarshalmerge regenerate
75	make -C test/moredefaults regenerate
76	make -C test/issue8 regenerate
77	make -C test/enumprefix regenerate
78	make -C test/enumcustomname regenerate
79	make -C test/packed regenerate
80	make -C test/protosize regenerate
81	make -C test/tags regenerate
82	make -C test/oneof regenerate
83	make -C test/oneof3 regenerate
84	make -C test/theproto3 regenerate
85	make -C test/mapdefaults regenerate
86	make -C test/mapsproto2 regenerate
87	make -C test/issue42order regenerate
88	make -C proto generate-test-pbs
89	make -C test/importdedup regenerate
90	make -C test/importduplicate regenerate
91	make -C test/custombytesnonstruct regenerate
92	make -C test/required regenerate
93	make -C test/casttype regenerate
94	make -C test/castvalue regenerate
95	make -C vanity/test regenerate
96	make -C test/sizeunderscore regenerate
97	make -C test/issue34 regenerate
98	make -C test/empty-issue70 regenerate
99	make -C test/indeximport-issue72 regenerate
100	make -C test/fuzztests regenerate
101	make -C test/oneofembed regenerate
102	make -C test/asymetric-issue125 regenerate
103	make -C test/filedotname regenerate
104	make -C test/nopackage regenerate
105	make -C test/types regenerate
106	make -C test/proto3extension regenerate
107	make -C test/stdtypes regenerate
108	make -C test/data regenerate
109	make -C test/typedecl regenerate
110	make -C test/issue260 regenerate
111	make -C test/issue261 regenerate
112	make -C test/issue262 regenerate
113	make -C test/issue312 regenerate
114	make -C test/enumdecl regenerate
115	make -C test/typedecl_all regenerate
116	make -C test/enumdecl_all regenerate
117	make -C test/int64support regenerate
118	make -C test/issue322 regenerate
119	make -C test/issue330 regenerate
120	make -C test/importcustom-issue389 regenerate
121	make -C test/merge regenerate
122	make -C test/cachedsize regenerate
123	make -C test/deterministic regenerate
124	make gofmt
125
126tests:
127	go build ./test/enumprefix
128	go test ./...
129	(cd test/stdtypes && make test)
130
131vet:
132	go vet ./...
133	go tool vet --shadow .
134
135errcheck:
136	go get github.com/kisielk/errcheck
137	errcheck ./test/...
138
139drone:
140	sudo apt-get install protobuf-compiler
141	(cd $(GOPATH)/src/github.com/gogo/protobuf && make buildserverall)
142
143testall:
144	go get -u github.com/golang/protobuf/proto
145	make -C protoc-gen-gogo test
146	make -C vanity/test test
147	make -C test/registration test
148	make -C conformance test
149	make -C test/issue427 test
150	make tests
151
152bench:
153	go get golang.org/x/tools/cmd/benchcmp
154	(cd test/mixbench && go build .)
155	./test/mixbench/mixbench
156
157contributors:
158	git log --format='%aN <%aE>' | sort -fu > CONTRIBUTORS
159
160js:
161ifeq (go1.10, $(findstring go1.10, $(GO_VERSION)))
162	go get -u github.com/gopherjs/gopherjs
163	gopherjs build github.com/gogo/protobuf/protoc-gen-gogo
164endif
165
166update:
167	(cd protobuf && make update)
168