blob: abb1c00de7fff03f5d241f636c5d91a54188c942 [file] [log] [blame]
Josh Haberman35a1cc72015-04-01 17:23:48 -07001## Process this file with automake to produce Makefile.in
2
Josh Haberman7e74a022016-01-12 08:56:17 -08003conformance_protoc_inputs = \
4 conformance.proto
5
6well_known_type_protoc_inputs = \
Josh Habermane891c292015-12-30 16:03:49 -08007 $(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
Josh Haberman35a1cc72015-04-01 17:23:48 -070014
15protoc_outputs = \
16 conformance.pb.cc \
17 conformance.pb.h
18
Thomas Van Lenten42f2eee2015-11-16 11:24:58 -050019other_language_protoc_outputs = \
20 conformance.rb \
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -050021 com/google/protobuf/conformance/Conformance.java \
Jisi Liu3b3c8ab2016-03-30 11:39:59 -070022 lite/com/google/protobuf/conformance/Conformance.java \
Thomas Van Lentena20d0b62015-12-10 15:34:34 -050023 conformance_pb2.py \
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -050024 Conformance.pbobjc.h \
25 Conformance.pbobjc.m
Thomas Van Lenten42f2eee2015-11-16 11:24:58 -050026
Josh Haberman4e63b522015-04-14 13:45:39 -070027bin_PROGRAMS = conformance-test-runner conformance-cpp
Josh Haberman35a1cc72015-04-01 17:23:48 -070028
Feng Xiaob7610f12015-12-22 14:36:04 -080029# All source files excepet C++/Objective-C ones should be explicitly listed
30# here because the autoconf tools don't include files of other languages
31# automatically.
32EXTRA_DIST = \
33 ConformanceJava.java \
Jisi Liu3b3c8ab2016-03-30 11:39:59 -070034 ConformanceJavaLite.java \
Feng Xiaob7610f12015-12-22 14:36:04 -080035 README.md \
36 conformance.proto \
37 conformance_python.py \
38 conformance_ruby.rb \
39 failure_list_cpp.txt \
40 failure_list_csharp.txt \
41 failure_list_java.txt \
42 failure_list_objc.txt \
43 failure_list_python.txt \
44 failure_list_python_cpp.txt \
Josh Habermanea909a52015-12-30 17:06:01 -080045 failure_list_python-post26.txt \
Feng Xiaob7610f12015-12-22 14:36:04 -080046 failure_list_ruby.txt
47
Josh Haberman4e63b522015-04-14 13:45:39 -070048conformance_test_runner_LDADD = $(top_srcdir)/src/libprotobuf.la
Feng Xiaob7610f12015-12-22 14:36:04 -080049conformance_test_runner_SOURCES = conformance_test.h conformance_test.cc \
50 conformance_test_runner.cc \
51 third_party/jsoncpp/json.h \
Feng Xiaoa0cecfd2015-12-14 18:33:38 -080052 third_party/jsoncpp/jsoncpp.cpp
Josh Haberman4e63b522015-04-14 13:45:39 -070053nodist_conformance_test_runner_SOURCES = conformance.pb.cc
Feng Xiaoa0cecfd2015-12-14 18:33:38 -080054conformance_test_runner_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)
Feng Xiao1e2fece2015-12-18 15:16:07 -080055conformance_test_runner_CXXFLAGS = -std=c++11
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -050056# Explicit deps beacuse BUILT_SOURCES are only done before a "make all/check"
57# so a direct "make test_cpp" could fail if parallel enough.
58conformance_test_runner-conformance_test.$(OBJEXT): conformance.pb.h
59conformance_test_runner-conformance_test_runner.$(OBJEXT): conformance.pb.h
Josh Haberman35a1cc72015-04-01 17:23:48 -070060
61conformance_cpp_LDADD = $(top_srcdir)/src/libprotobuf.la
62conformance_cpp_SOURCES = conformance_cpp.cc
63nodist_conformance_cpp_SOURCES = conformance.pb.cc
64conformance_cpp_CPPFLAGS = -I$(top_srcdir)/src
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -050065# Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
66# so a direct "make test_cpp" could fail if parallel enough.
67conformance_cpp-conformance_cpp.$(OBJEXT): conformance.pb.h
68
69if OBJC_CONFORMANCE_TEST
70
71bin_PROGRAMS += conformance-objc
72
73conformance_objc_SOURCES = conformance_objc.m ../objectivec/GPBProtocolBuffers.m
74nodist_conformance_objc_SOURCES = Conformance.pbobjc.m
Thomas Van Lenten69d713f2015-12-02 11:48:14 -050075# On travis, the build fails without the isysroot because whatever system
76# headers are being found don't include generics support for
77# NSArray/NSDictionary, the only guess is their image at one time had an odd
78# setup for Xcode and old frameworks are being found.
79conformance_objc_CPPFLAGS = -I$(top_srcdir)/objectivec -isysroot `xcrun --sdk macosx --show-sdk-path`
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -050080conformance_objc_LDFLAGS = -framework Foundation
81# Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
82# so a direct "make test_objc" could fail if parallel enough.
83conformance_objc-conformance_objc.$(OBJEXT): Conformance.pbobjc.h
84
85endif
Josh Haberman35a1cc72015-04-01 17:23:48 -070086
87if USE_EXTERNAL_PROTOC
88
Josh Haberman7e74a022016-01-12 08:56:17 -080089# Some implementations include pre-generated versions of well-known types.
90protoc_middleman: $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
91 $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=. $(conformance_protoc_inputs)
92 $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --python_out=. $(well_known_type_protoc_inputs)
Jisi Liu3b3c8ab2016-03-30 11:39:59 -070093 $(PROTOC) -I$(srcdir) -I$(top_srcdir) --java_out=lite:lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
Josh Haberman420f9382015-04-16 12:50:39 -070094 touch protoc_middleman
Josh Haberman35a1cc72015-04-01 17:23:48 -070095
96else
97
98# We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is
99# relative to srcdir, which may not be the same as the current directory when
100# building out-of-tree.
Josh Haberman7e74a022016-01-12 08:56:17 -0800101protoc_middleman: $(top_srcdir)/src/protoc$(EXEEXT) $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
102 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) )
103 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) )
Jisi Liu3b3c8ab2016-03-30 11:39:59 -0700104 @mkdir -p lite
105 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) )
Josh Haberman420f9382015-04-16 12:50:39 -0700106 touch protoc_middleman
Josh Haberman35a1cc72015-04-01 17:23:48 -0700107
108endif
109
Josh Haberman420f9382015-04-16 12:50:39 -0700110$(protoc_outputs): protoc_middleman
Josh Haberman35a1cc72015-04-01 17:23:48 -0700111
Thomas Van Lenten42f2eee2015-11-16 11:24:58 -0500112$(other_language_protoc_outputs): protoc_middleman
113
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -0500114BUILT_SOURCES = $(protoc_outputs) $(other_language_protoc_outputs)
Josh Haberman35a1cc72015-04-01 17:23:48 -0700115
Jisi Liu3b3c8ab2016-03-30 11:39:59 -0700116CLEANFILES = $(protoc_outputs) protoc_middleman javac_middleman conformance-java javac_middleman_lite conformance-java-lite conformance-csharp $(other_language_protoc_outputs)
Josh Haberman35a1cc72015-04-01 17:23:48 -0700117
118MAINTAINERCLEANFILES = \
119 Makefile.in
120
Thomas Van Lenten42f2eee2015-11-16 11:24:58 -0500121javac_middleman: ConformanceJava.java protoc_middleman $(other_language_protoc_outputs)
Feng Xiaoea956762016-01-14 14:29:51 -0800122 jar=`ls ../java/util/target/*jar-with-dependencies.jar` && javac -classpath ../java/target/classes:$$jar ConformanceJava.java com/google/protobuf/conformance/Conformance.java
Josh Haberman420f9382015-04-16 12:50:39 -0700123 @touch javac_middleman
124
125conformance-java: javac_middleman
126 @echo "Writing shortcut script conformance-java..."
127 @echo '#! /bin/sh' > conformance-java
Feng Xiaoea956762016-01-14 14:29:51 -0800128 @jar=`ls ../java/util/target/*jar-with-dependencies.jar` && echo java -classpath .:../java/target/classes:$$jar ConformanceJava '$$@' >> conformance-java
Josh Haberman420f9382015-04-16 12:50:39 -0700129 @chmod +x conformance-java
130
Jisi Liu3b3c8ab2016-03-30 11:39:59 -0700131javac_middleman_lite: ConformanceJavaLite.java protoc_middleman $(other_language_protoc_outputs)
132 javac -classpath ../java/lite/target/classes:lite ConformanceJavaLite.java lite/com/google/protobuf/conformance/Conformance.java
133 @touch javac_middleman_lite
134
135conformance-java-lite: javac_middleman_lite
136 @echo "Writing shortcut script conformance-java-lite..."
137 @echo '#! /bin/sh' > conformance-java-lite
138 @echo java -classpath .:../java/lite/target/classes:lite ConformanceJavaLite '$$@' >> conformance-java-lite
139 @chmod +x conformance-java-lite
140
Jon Skeetb6defa72015-08-04 10:01:40 +0100141# Currently the conformance code is alongside the rest of the C#
142# source, as it's easier to maintain there. We assume we've already
143# built that, so we just need a script to run it.
Thomas Van Lenten42f2eee2015-11-16 11:24:58 -0500144conformance-csharp: $(other_language_protoc_outputs)
Jon Skeetb6defa72015-08-04 10:01:40 +0100145 @echo "Writing shortcut script conformance-csharp..."
146 @echo '#! /bin/sh' > conformance-csharp
147 @echo 'mono ../csharp/src/Google.Protobuf.Conformance/bin/Release/Google.Protobuf.Conformance.exe "$$@"' >> conformance-csharp
148 @chmod +x conformance-csharp
149
Josh Haberman35a1cc72015-04-01 17:23:48 -0700150# Targets for actually running tests.
Josh Haberman420f9382015-04-16 12:50:39 -0700151test_cpp: protoc_middleman conformance-test-runner conformance-cpp
Josh Habermand2b67382015-06-03 12:04:35 -0700152 ./conformance-test-runner --failure_list failure_list_cpp.txt ./conformance-cpp
Josh Haberman420f9382015-04-16 12:50:39 -0700153
154test_java: protoc_middleman conformance-test-runner conformance-java
Feng Xiaoa0cecfd2015-12-14 18:33:38 -0800155 ./conformance-test-runner --failure_list failure_list_java.txt ./conformance-java
Josh Haberman181c7f22015-07-15 11:05:10 -0700156
Jisi Liu3b3c8ab2016-03-30 11:39:59 -0700157test_java_lite: protoc_middleman conformance-test-runner conformance-java-lite
158 ./conformance-test-runner ./conformance-java-lite
159
Jon Skeetb6defa72015-08-04 10:01:40 +0100160test_csharp: protoc_middleman conformance-test-runner conformance-csharp
161 ./conformance-test-runner --failure_list failure_list_csharp.txt ./conformance-csharp
162
Thomas Van Lenten42f2eee2015-11-16 11:24:58 -0500163test_ruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs)
Josh Haberman181c7f22015-07-15 11:05:10 -0700164 RUBYLIB=../ruby/lib:. ./conformance-test-runner --failure_list failure_list_ruby.txt ./conformance_ruby.rb
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -0500165
Josh Haberman325392d2015-08-17 12:30:49 -0700166# These depend on library paths being properly set up. The easiest way to
167# run them is to just use "tox" from the python dir.
168test_python: protoc_middleman conformance-test-runner
Josh Habermane891c292015-12-30 16:03:49 -0800169 ./conformance-test-runner --failure_list failure_list_python.txt $(CONFORMANCE_PYTHON_EXTRA_FAILURES) ./conformance_python.py
Josh Haberman325392d2015-08-17 12:30:49 -0700170
171test_python_cpp: protoc_middleman conformance-test-runner
Josh Habermane891c292015-12-30 16:03:49 -0800172 ./conformance-test-runner --failure_list failure_list_python_cpp.txt $(CONFORMANCE_PYTHON_EXTRA_FAILURES) ./conformance_python.py
Josh Haberman325392d2015-08-17 12:30:49 -0700173
Thomas Van Lenten1745f7e2015-11-17 10:18:49 -0500174if OBJC_CONFORMANCE_TEST
175
176test_objc: protoc_middleman conformance-test-runner conformance-objc
177 ./conformance-test-runner --failure_list failure_list_objc.txt ./conformance-objc
178
179endif