• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## Process this file with automake to produce Makefile.in
2
3conformance_protoc_inputs =                                    \
4  conformance.proto
5
6well_known_type_protoc_inputs =                                \
7  $(top_srcdir)/src/google/protobuf/any.proto                  \
8  $(top_srcdir)/src/google/protobuf/duration.proto             \
9  $(top_srcdir)/src/google/protobuf/field_mask.proto           \
10  $(top_srcdir)/src/google/protobuf/struct.proto               \
11  $(top_srcdir)/src/google/protobuf/timestamp.proto            \
12  $(top_srcdir)/src/google/protobuf/wrappers.proto
13
14
15protoc_outputs =                                               \
16  conformance.pb.cc                                            \
17  conformance.pb.h
18
19other_language_protoc_outputs =                                \
20  conformance_pb2.py                                           \
21  Conformance.pbobjc.h                                         \
22  Conformance.pbobjc.m                                         \
23  conformance.rb                                               \
24  com/google/protobuf/Any.java                                 \
25  com/google/protobuf/AnyOrBuilder.java                        \
26  com/google/protobuf/AnyProto.java                            \
27  com/google/protobuf/BoolValue.java                           \
28  com/google/protobuf/BoolValueOrBuilder.java                  \
29  com/google/protobuf/BytesValue.java                          \
30  com/google/protobuf/BytesValueOrBuilder.java                 \
31  com/google/protobuf/conformance/Conformance.java             \
32  com/google/protobuf/DoubleValue.java                         \
33  com/google/protobuf/DoubleValueOrBuilder.java                \
34  com/google/protobuf/Duration.java                            \
35  com/google/protobuf/DurationOrBuilder.java                   \
36  com/google/protobuf/DurationProto.java                       \
37  com/google/protobuf/FieldMask.java                           \
38  com/google/protobuf/FieldMaskOrBuilder.java                  \
39  com/google/protobuf/FieldMaskProto.java                      \
40  com/google/protobuf/FloatValue.java                          \
41  com/google/protobuf/FloatValueOrBuilder.java                 \
42  com/google/protobuf/Int32Value.java                          \
43  com/google/protobuf/Int32ValueOrBuilder.java                 \
44  com/google/protobuf/Int64Value.java                          \
45  com/google/protobuf/Int64ValueOrBuilder.java                 \
46  com/google/protobuf/ListValue.java                           \
47  com/google/protobuf/ListValueOrBuilder.java                  \
48  com/google/protobuf/NullValue.java                           \
49  com/google/protobuf/StringValue.java                         \
50  com/google/protobuf/StringValueOrBuilder.java                \
51  com/google/protobuf/Struct.java                              \
52  com/google/protobuf/StructOrBuilder.java                     \
53  com/google/protobuf/StructProto.java                         \
54  com/google/protobuf/Timestamp.java                           \
55  com/google/protobuf/TimestampOrBuilder.java                  \
56  com/google/protobuf/TimestampProto.java                      \
57  com/google/protobuf/UInt32Value.java                         \
58  com/google/protobuf/UInt32ValueOrBuilder.java                \
59  com/google/protobuf/UInt64Value.java                         \
60  com/google/protobuf/UInt64ValueOrBuilder.java                \
61  com/google/protobuf/Value.java                               \
62  com/google/protobuf/ValueOrBuilder.java                      \
63  com/google/protobuf/WrappersProto.java                       \
64  google/protobuf/any.pb.cc                                    \
65  google/protobuf/any.pb.h                                     \
66  google/protobuf/any.rb                                       \
67  google/protobuf/any_pb2.py                                   \
68  google/protobuf/duration.pb.cc                               \
69  google/protobuf/duration.pb.h                                \
70  google/protobuf/duration.rb                                  \
71  google/protobuf/duration_pb2.py                              \
72  google/protobuf/field_mask.pb.cc                             \
73  google/protobuf/field_mask.pb.h                              \
74  google/protobuf/field_mask.rb                                \
75  google/protobuf/field_mask_pb2.py                            \
76  google/protobuf/struct.pb.cc                                 \
77  google/protobuf/struct.pb.h                                  \
78  google/protobuf/struct.rb                                    \
79  google/protobuf/struct_pb2.py                                \
80  google/protobuf/timestamp.pb.cc                              \
81  google/protobuf/timestamp.pb.h                               \
82  google/protobuf/timestamp.rb                                 \
83  google/protobuf/timestamp_pb2.py                             \
84  google/protobuf/wrappers.pb.cc                               \
85  google/protobuf/wrappers.pb.h                                \
86  google/protobuf/wrappers.rb                                  \
87  google/protobuf/wrappers_pb2.py                              \
88  lite/com/google/protobuf/Any.java                            \
89  lite/com/google/protobuf/AnyOrBuilder.java                   \
90  lite/com/google/protobuf/AnyProto.java                       \
91  lite/com/google/protobuf/BoolValue.java                      \
92  lite/com/google/protobuf/BoolValueOrBuilder.java             \
93  lite/com/google/protobuf/BytesValue.java                     \
94  lite/com/google/protobuf/BytesValueOrBuilder.java            \
95  lite/com/google/protobuf/conformance/Conformance.java        \
96  lite/com/google/protobuf/DoubleValue.java                    \
97  lite/com/google/protobuf/DoubleValueOrBuilder.java           \
98  lite/com/google/protobuf/Duration.java                       \
99  lite/com/google/protobuf/DurationOrBuilder.java              \
100  lite/com/google/protobuf/DurationProto.java                  \
101  lite/com/google/protobuf/FieldMask.java                      \
102  lite/com/google/protobuf/FieldMaskOrBuilder.java             \
103  lite/com/google/protobuf/FieldMaskProto.java                 \
104  lite/com/google/protobuf/FloatValue.java                     \
105  lite/com/google/protobuf/FloatValueOrBuilder.java            \
106  lite/com/google/protobuf/Int32Value.java                     \
107  lite/com/google/protobuf/Int32ValueOrBuilder.java            \
108  lite/com/google/protobuf/Int64Value.java                     \
109  lite/com/google/protobuf/Int64ValueOrBuilder.java            \
110  lite/com/google/protobuf/ListValue.java                      \
111  lite/com/google/protobuf/ListValueOrBuilder.java             \
112  lite/com/google/protobuf/NullValue.java                      \
113  lite/com/google/protobuf/StringValue.java                    \
114  lite/com/google/protobuf/StringValueOrBuilder.java           \
115  lite/com/google/protobuf/Struct.java                         \
116  lite/com/google/protobuf/StructOrBuilder.java                \
117  lite/com/google/protobuf/StructProto.java                    \
118  lite/com/google/protobuf/Timestamp.java                      \
119  lite/com/google/protobuf/TimestampOrBuilder.java             \
120  lite/com/google/protobuf/TimestampProto.java                 \
121  lite/com/google/protobuf/UInt32Value.java                    \
122  lite/com/google/protobuf/UInt32ValueOrBuilder.java           \
123  lite/com/google/protobuf/UInt64Value.java                    \
124  lite/com/google/protobuf/UInt64ValueOrBuilder.java           \
125  lite/com/google/protobuf/Value.java                          \
126  lite/com/google/protobuf/ValueOrBuilder.java                 \
127  lite/com/google/protobuf/WrappersProto.java
128
129bin_PROGRAMS = conformance-test-runner conformance-cpp
130
131# All source files excepet C++/Objective-C ones should be explicitly listed
132# here because the autoconf tools don't include files of other languages
133# automatically.
134EXTRA_DIST =                  \
135  ConformanceJava.java        \
136  ConformanceJavaLite.java    \
137  README.md                   \
138  conformance.proto           \
139  conformance_python.py       \
140  conformance_ruby.rb         \
141  failure_list_cpp.txt        \
142  failure_list_csharp.txt     \
143  failure_list_java.txt       \
144  failure_list_objc.txt       \
145  failure_list_python.txt     \
146  failure_list_python_cpp.txt \
147  failure_list_python-post26.txt \
148  failure_list_ruby.txt
149
150conformance_test_runner_LDADD = $(top_srcdir)/src/libprotobuf.la
151conformance_test_runner_SOURCES = conformance_test.h conformance_test.cc \
152                                  conformance_test_runner.cc             \
153                                  third_party/jsoncpp/json.h             \
154                                  third_party/jsoncpp/jsoncpp.cpp
155nodist_conformance_test_runner_SOURCES = conformance.pb.cc
156conformance_test_runner_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)
157conformance_test_runner_CXXFLAGS = -std=c++11
158# Explicit deps beacuse BUILT_SOURCES are only done before a "make all/check"
159# so a direct "make test_cpp" could fail if parallel enough.
160conformance_test_runner-conformance_test.$(OBJEXT): conformance.pb.h
161conformance_test_runner-conformance_test_runner.$(OBJEXT): conformance.pb.h
162
163conformance_cpp_LDADD = $(top_srcdir)/src/libprotobuf.la
164conformance_cpp_SOURCES = conformance_cpp.cc
165nodist_conformance_cpp_SOURCES = conformance.pb.cc
166conformance_cpp_CPPFLAGS = -I$(top_srcdir)/src
167# Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
168# so a direct "make test_cpp" could fail if parallel enough.
169conformance_cpp-conformance_cpp.$(OBJEXT): conformance.pb.h
170
171if OBJC_CONFORMANCE_TEST
172
173bin_PROGRAMS += conformance-objc
174
175conformance_objc_SOURCES = conformance_objc.m ../objectivec/GPBProtocolBuffers.m
176nodist_conformance_objc_SOURCES = Conformance.pbobjc.m
177# On travis, the build fails without the isysroot because whatever system
178# headers are being found don't include generics support for
179# NSArray/NSDictionary, the only guess is their image at one time had an odd
180# setup for Xcode and old frameworks are being found.
181conformance_objc_CPPFLAGS = -I$(top_srcdir)/objectivec -isysroot `xcrun --sdk macosx --show-sdk-path`
182conformance_objc_LDFLAGS = -framework Foundation
183# Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
184# so a direct "make test_objc" could fail if parallel enough.
185conformance_objc-conformance_objc.$(OBJEXT): Conformance.pbobjc.h
186
187endif
188
189if USE_EXTERNAL_PROTOC
190
191# Some implementations include pre-generated versions of well-known types.
192protoc_middleman: $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
193	$(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=. $(conformance_protoc_inputs)
194	$(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --python_out=. $(well_known_type_protoc_inputs)
195	$(PROTOC) -I$(srcdir) -I$(top_srcdir) --java_out=lite:lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
196	touch protoc_middleman
197
198else
199
200# We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is
201# relative to srcdir, which may not be the same as the current directory when
202# building out-of-tree.
203protoc_middleman: $(top_srcdir)/src/protoc$(EXEEXT) $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
204	oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --objc_out=$$oldpwd --python_out=$$oldpwd $(conformance_protoc_inputs) )
205	oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --python_out=$$oldpwd $(well_known_type_protoc_inputs) )
206	@mkdir -p lite
207	oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --java_out=lite:$$oldpwd/lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs) )
208	touch protoc_middleman
209
210endif
211
212$(protoc_outputs): protoc_middleman
213
214$(other_language_protoc_outputs): protoc_middleman
215
216BUILT_SOURCES = $(protoc_outputs) $(other_language_protoc_outputs)
217
218CLEANFILES = $(protoc_outputs) protoc_middleman javac_middleman conformance-java javac_middleman_lite conformance-java-lite conformance-csharp $(other_language_protoc_outputs)
219
220MAINTAINERCLEANFILES =   \
221  Makefile.in
222
223javac_middleman: ConformanceJava.java protoc_middleman $(other_language_protoc_outputs)
224	jar=`ls ../java/util/target/*jar-with-dependencies.jar` && javac -classpath ../java/target/classes:$$jar ConformanceJava.java com/google/protobuf/conformance/Conformance.java
225	@touch javac_middleman
226
227conformance-java: javac_middleman
228	@echo "Writing shortcut script conformance-java..."
229	@echo '#! /bin/sh' > conformance-java
230	@jar=`ls ../java/util/target/*jar-with-dependencies.jar` && echo java -classpath .:../java/target/classes:$$jar ConformanceJava '$$@' >> conformance-java
231	@chmod +x conformance-java
232
233javac_middleman_lite: ConformanceJavaLite.java protoc_middleman $(other_language_protoc_outputs)
234	javac -classpath ../java/lite/target/classes:lite ConformanceJavaLite.java lite/com/google/protobuf/conformance/Conformance.java
235	@touch javac_middleman_lite
236
237conformance-java-lite: javac_middleman_lite
238	@echo "Writing shortcut script conformance-java-lite..."
239	@echo '#! /bin/sh' > conformance-java-lite
240	@echo java -classpath .:../java/lite/target/classes:lite ConformanceJavaLite '$$@' >> conformance-java-lite
241	@chmod +x conformance-java-lite
242
243# Currently the conformance code is alongside the rest of the C#
244# source, as it's easier to maintain there. We assume we've already
245# built that, so we just need a script to run it.
246conformance-csharp: $(other_language_protoc_outputs)
247	@echo "Writing shortcut script conformance-csharp..."
248	@echo '#! /bin/sh' > conformance-csharp
249	@echo 'mono ../csharp/src/Google.Protobuf.Conformance/bin/Release/Google.Protobuf.Conformance.exe "$$@"' >> conformance-csharp
250	@chmod +x conformance-csharp
251
252# Targets for actually running tests.
253test_cpp: protoc_middleman conformance-test-runner conformance-cpp
254	./conformance-test-runner --failure_list failure_list_cpp.txt ./conformance-cpp
255
256test_java: protoc_middleman conformance-test-runner conformance-java
257	./conformance-test-runner --failure_list failure_list_java.txt ./conformance-java
258
259test_java_lite: protoc_middleman conformance-test-runner conformance-java-lite
260	./conformance-test-runner ./conformance-java-lite
261
262test_csharp: protoc_middleman conformance-test-runner conformance-csharp
263	./conformance-test-runner --failure_list failure_list_csharp.txt ./conformance-csharp
264
265test_ruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs)
266	RUBYLIB=../ruby/lib:. ./conformance-test-runner --failure_list failure_list_ruby.txt ./conformance_ruby.rb
267
268# These depend on library paths being properly set up.  The easiest way to
269# run them is to just use "tox" from the python dir.
270test_python: protoc_middleman conformance-test-runner
271	./conformance-test-runner --failure_list failure_list_python.txt $(CONFORMANCE_PYTHON_EXTRA_FAILURES) ./conformance_python.py
272
273test_python_cpp: protoc_middleman conformance-test-runner
274	./conformance-test-runner --failure_list failure_list_python_cpp.txt $(CONFORMANCE_PYTHON_EXTRA_FAILURES) ./conformance_python.py
275
276if OBJC_CONFORMANCE_TEST
277
278test_objc: protoc_middleman conformance-test-runner conformance-objc
279	./conformance-test-runner --failure_list failure_list_objc.txt ./conformance-objc
280
281endif
282