Makefile.am 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. ## Process this file with automake to produce Makefile.in
  2. conformance_protoc_inputs = \
  3. conformance.proto
  4. well_known_type_protoc_inputs = \
  5. $(top_srcdir)/src/google/protobuf/any.proto \
  6. $(top_srcdir)/src/google/protobuf/duration.proto \
  7. $(top_srcdir)/src/google/protobuf/field_mask.proto \
  8. $(top_srcdir)/src/google/protobuf/struct.proto \
  9. $(top_srcdir)/src/google/protobuf/timestamp.proto \
  10. $(top_srcdir)/src/google/protobuf/wrappers.proto
  11. protoc_outputs = \
  12. conformance.pb.cc \
  13. conformance.pb.h
  14. other_language_protoc_outputs = \
  15. conformance.rb \
  16. com/google/protobuf/conformance/Conformance.java \
  17. lite/com/google/protobuf/conformance/Conformance.java \
  18. conformance_pb2.py \
  19. Conformance.pbobjc.h \
  20. Conformance.pbobjc.m
  21. bin_PROGRAMS = conformance-test-runner conformance-cpp
  22. # All source files excepet C++/Objective-C ones should be explicitly listed
  23. # here because the autoconf tools don't include files of other languages
  24. # automatically.
  25. EXTRA_DIST = \
  26. ConformanceJava.java \
  27. ConformanceJavaLite.java \
  28. README.md \
  29. conformance.proto \
  30. conformance_python.py \
  31. conformance_ruby.rb \
  32. failure_list_cpp.txt \
  33. failure_list_csharp.txt \
  34. failure_list_java.txt \
  35. failure_list_objc.txt \
  36. failure_list_python.txt \
  37. failure_list_python_cpp.txt \
  38. failure_list_python-post26.txt \
  39. failure_list_ruby.txt
  40. conformance_test_runner_LDADD = $(top_srcdir)/src/libprotobuf.la
  41. conformance_test_runner_SOURCES = conformance_test.h conformance_test.cc \
  42. conformance_test_runner.cc \
  43. third_party/jsoncpp/json.h \
  44. third_party/jsoncpp/jsoncpp.cpp
  45. nodist_conformance_test_runner_SOURCES = conformance.pb.cc
  46. conformance_test_runner_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)
  47. conformance_test_runner_CXXFLAGS = -std=c++11
  48. # Explicit deps beacuse BUILT_SOURCES are only done before a "make all/check"
  49. # so a direct "make test_cpp" could fail if parallel enough.
  50. conformance_test_runner-conformance_test.$(OBJEXT): conformance.pb.h
  51. conformance_test_runner-conformance_test_runner.$(OBJEXT): conformance.pb.h
  52. conformance_cpp_LDADD = $(top_srcdir)/src/libprotobuf.la
  53. conformance_cpp_SOURCES = conformance_cpp.cc
  54. nodist_conformance_cpp_SOURCES = conformance.pb.cc
  55. conformance_cpp_CPPFLAGS = -I$(top_srcdir)/src
  56. # Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
  57. # so a direct "make test_cpp" could fail if parallel enough.
  58. conformance_cpp-conformance_cpp.$(OBJEXT): conformance.pb.h
  59. if OBJC_CONFORMANCE_TEST
  60. bin_PROGRAMS += conformance-objc
  61. conformance_objc_SOURCES = conformance_objc.m ../objectivec/GPBProtocolBuffers.m
  62. nodist_conformance_objc_SOURCES = Conformance.pbobjc.m
  63. # On travis, the build fails without the isysroot because whatever system
  64. # headers are being found don't include generics support for
  65. # NSArray/NSDictionary, the only guess is their image at one time had an odd
  66. # setup for Xcode and old frameworks are being found.
  67. conformance_objc_CPPFLAGS = -I$(top_srcdir)/objectivec -isysroot `xcrun --sdk macosx --show-sdk-path`
  68. conformance_objc_LDFLAGS = -framework Foundation
  69. # Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
  70. # so a direct "make test_objc" could fail if parallel enough.
  71. conformance_objc-conformance_objc.$(OBJEXT): Conformance.pbobjc.h
  72. endif
  73. if USE_EXTERNAL_PROTOC
  74. # Some implementations include pre-generated versions of well-known types.
  75. protoc_middleman: $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
  76. $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=. $(conformance_protoc_inputs)
  77. $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --python_out=. $(well_known_type_protoc_inputs)
  78. $(PROTOC) -I$(srcdir) -I$(top_srcdir) --java_out=lite:lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
  79. touch protoc_middleman
  80. else
  81. # We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is
  82. # relative to srcdir, which may not be the same as the current directory when
  83. # building out-of-tree.
  84. protoc_middleman: $(top_srcdir)/src/protoc$(EXEEXT) $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
  85. 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) )
  86. 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) )
  87. @mkdir -p lite
  88. 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) )
  89. touch protoc_middleman
  90. endif
  91. $(protoc_outputs): protoc_middleman
  92. $(other_language_protoc_outputs): protoc_middleman
  93. BUILT_SOURCES = $(protoc_outputs) $(other_language_protoc_outputs)
  94. CLEANFILES = $(protoc_outputs) protoc_middleman javac_middleman conformance-java javac_middleman_lite conformance-java-lite conformance-csharp $(other_language_protoc_outputs)
  95. MAINTAINERCLEANFILES = \
  96. Makefile.in
  97. javac_middleman: ConformanceJava.java protoc_middleman $(other_language_protoc_outputs)
  98. jar=`ls ../java/util/target/*jar-with-dependencies.jar` && javac -classpath ../java/target/classes:$$jar ConformanceJava.java com/google/protobuf/conformance/Conformance.java
  99. @touch javac_middleman
  100. conformance-java: javac_middleman
  101. @echo "Writing shortcut script conformance-java..."
  102. @echo '#! /bin/sh' > conformance-java
  103. @jar=`ls ../java/util/target/*jar-with-dependencies.jar` && echo java -classpath .:../java/target/classes:$$jar ConformanceJava '$$@' >> conformance-java
  104. @chmod +x conformance-java
  105. javac_middleman_lite: ConformanceJavaLite.java protoc_middleman $(other_language_protoc_outputs)
  106. javac -classpath ../java/lite/target/classes:lite ConformanceJavaLite.java lite/com/google/protobuf/conformance/Conformance.java
  107. @touch javac_middleman_lite
  108. conformance-java-lite: javac_middleman_lite
  109. @echo "Writing shortcut script conformance-java-lite..."
  110. @echo '#! /bin/sh' > conformance-java-lite
  111. @echo java -classpath .:../java/lite/target/classes:lite ConformanceJavaLite '$$@' >> conformance-java-lite
  112. @chmod +x conformance-java-lite
  113. # Currently the conformance code is alongside the rest of the C#
  114. # source, as it's easier to maintain there. We assume we've already
  115. # built that, so we just need a script to run it.
  116. conformance-csharp: $(other_language_protoc_outputs)
  117. @echo "Writing shortcut script conformance-csharp..."
  118. @echo '#! /bin/sh' > conformance-csharp
  119. @echo 'mono ../csharp/src/Google.Protobuf.Conformance/bin/Release/Google.Protobuf.Conformance.exe "$$@"' >> conformance-csharp
  120. @chmod +x conformance-csharp
  121. # Targets for actually running tests.
  122. test_cpp: protoc_middleman conformance-test-runner conformance-cpp
  123. ./conformance-test-runner --failure_list failure_list_cpp.txt ./conformance-cpp
  124. test_java: protoc_middleman conformance-test-runner conformance-java
  125. ./conformance-test-runner --failure_list failure_list_java.txt ./conformance-java
  126. test_java_lite: protoc_middleman conformance-test-runner conformance-java-lite
  127. ./conformance-test-runner ./conformance-java-lite
  128. test_csharp: protoc_middleman conformance-test-runner conformance-csharp
  129. ./conformance-test-runner --failure_list failure_list_csharp.txt ./conformance-csharp
  130. test_ruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs)
  131. RUBYLIB=../ruby/lib:. ./conformance-test-runner --failure_list failure_list_ruby.txt ./conformance_ruby.rb
  132. # These depend on library paths being properly set up. The easiest way to
  133. # run them is to just use "tox" from the python dir.
  134. test_python: protoc_middleman conformance-test-runner
  135. ./conformance-test-runner --failure_list failure_list_python.txt $(CONFORMANCE_PYTHON_EXTRA_FAILURES) ./conformance_python.py
  136. test_python_cpp: protoc_middleman conformance-test-runner
  137. ./conformance-test-runner --failure_list failure_list_python_cpp.txt $(CONFORMANCE_PYTHON_EXTRA_FAILURES) ./conformance_python.py
  138. if OBJC_CONFORMANCE_TEST
  139. test_objc: protoc_middleman conformance-test-runner conformance-objc
  140. ./conformance-test-runner --failure_list failure_list_objc.txt ./conformance-objc
  141. endif