Makefile.am 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. ## Process this file with automake to produce Makefile.in
  2. protoc_inputs = \
  3. conformance.proto
  4. protoc_outputs = \
  5. conformance.pb.cc \
  6. conformance.pb.h
  7. other_language_protoc_outputs = \
  8. conformance.rb \
  9. com/google/protobuf/conformance/Conformance.java \
  10. Conformance.pbobjc.h \
  11. Conformance.pbobjc.m
  12. bin_PROGRAMS = conformance-test-runner conformance-cpp
  13. conformance_test_runner_LDADD = $(top_srcdir)/src/libprotobuf.la
  14. conformance_test_runner_SOURCES = conformance_test.cc conformance_test_runner.cc
  15. nodist_conformance_test_runner_SOURCES = conformance.pb.cc
  16. conformance_test_runner_CPPFLAGS = -I$(top_srcdir)/src
  17. # Explicit deps beacuse BUILT_SOURCES are only done before a "make all/check"
  18. # so a direct "make test_cpp" could fail if parallel enough.
  19. conformance_test_runner-conformance_test.$(OBJEXT): conformance.pb.h
  20. conformance_test_runner-conformance_test_runner.$(OBJEXT): conformance.pb.h
  21. conformance_cpp_LDADD = $(top_srcdir)/src/libprotobuf.la
  22. conformance_cpp_SOURCES = conformance_cpp.cc
  23. nodist_conformance_cpp_SOURCES = conformance.pb.cc
  24. conformance_cpp_CPPFLAGS = -I$(top_srcdir)/src
  25. # Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
  26. # so a direct "make test_cpp" could fail if parallel enough.
  27. conformance_cpp-conformance_cpp.$(OBJEXT): conformance.pb.h
  28. if OBJC_CONFORMANCE_TEST
  29. bin_PROGRAMS += conformance-objc
  30. conformance_objc_SOURCES = conformance_objc.m ../objectivec/GPBProtocolBuffers.m
  31. nodist_conformance_objc_SOURCES = Conformance.pbobjc.m
  32. # On travis, the build fails without the isysroot because whatever system
  33. # headers are being found don't include generics support for
  34. # NSArray/NSDictionary, the only guess is their image at one time had an odd
  35. # setup for Xcode and old frameworks are being found.
  36. conformance_objc_CPPFLAGS = -I$(top_srcdir)/objectivec -isysroot `xcrun --sdk macosx --show-sdk-path`
  37. conformance_objc_LDFLAGS = -framework Foundation
  38. # Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check"
  39. # so a direct "make test_objc" could fail if parallel enough.
  40. conformance_objc-conformance_objc.$(OBJEXT): Conformance.pbobjc.h
  41. endif
  42. if USE_EXTERNAL_PROTOC
  43. protoc_middleman: $(protoc_inputs)
  44. $(PROTOC) -I$(srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=.$^
  45. touch protoc_middleman
  46. else
  47. # We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is
  48. # relative to srcdir, which may not be the same as the current directory when
  49. # building out-of-tree.
  50. protoc_middleman: $(top_srcdir)/src/protoc$(EXEEXT) $(protoc_inputs)
  51. oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --objc_out=$$oldpwd --python_out=$$oldpwd $(protoc_inputs) )
  52. touch protoc_middleman
  53. endif
  54. $(protoc_outputs): protoc_middleman
  55. $(other_language_protoc_outputs): protoc_middleman
  56. BUILT_SOURCES = $(protoc_outputs) $(other_language_protoc_outputs)
  57. CLEANFILES = $(protoc_outputs) protoc_middleman javac_middleman conformance-java conformance-csharp $(other_language_protoc_outputs)
  58. MAINTAINERCLEANFILES = \
  59. Makefile.in
  60. javac_middleman: ConformanceJava.java protoc_middleman $(other_language_protoc_outputs)
  61. javac -classpath ../java/target/classes ConformanceJava.java com/google/protobuf/conformance/Conformance.java
  62. @touch javac_middleman
  63. conformance-java: javac_middleman
  64. @echo "Writing shortcut script conformance-java..."
  65. @echo '#! /bin/sh' > conformance-java
  66. @echo 'java -classpath .:../java/target/classes ConformanceJava "$$@"' >> conformance-java
  67. @chmod +x conformance-java
  68. # Currently the conformance code is alongside the rest of the C#
  69. # source, as it's easier to maintain there. We assume we've already
  70. # built that, so we just need a script to run it.
  71. conformance-csharp: $(other_language_protoc_outputs)
  72. @echo "Writing shortcut script conformance-csharp..."
  73. @echo '#! /bin/sh' > conformance-csharp
  74. @echo 'mono ../csharp/src/Google.Protobuf.Conformance/bin/Release/Google.Protobuf.Conformance.exe "$$@"' >> conformance-csharp
  75. @chmod +x conformance-csharp
  76. # Targets for actually running tests.
  77. test_cpp: protoc_middleman conformance-test-runner conformance-cpp
  78. ./conformance-test-runner --failure_list failure_list_cpp.txt ./conformance-cpp
  79. test_java: protoc_middleman conformance-test-runner conformance-java
  80. ./conformance-test-runner ./conformance-java
  81. test_csharp: protoc_middleman conformance-test-runner conformance-csharp
  82. ./conformance-test-runner --failure_list failure_list_csharp.txt ./conformance-csharp
  83. test_ruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs)
  84. RUBYLIB=../ruby/lib:. ./conformance-test-runner --failure_list failure_list_ruby.txt ./conformance_ruby.rb
  85. # These depend on library paths being properly set up. The easiest way to
  86. # run them is to just use "tox" from the python dir.
  87. test_python: protoc_middleman conformance-test-runner
  88. ./conformance-test-runner --failure_list failure_list_python.txt ./conformance_python.py
  89. test_python_cpp: protoc_middleman conformance-test-runner
  90. ./conformance-test-runner --failure_list failure_list_python_cpp.txt ./conformance_python.py
  91. if OBJC_CONFORMANCE_TEST
  92. test_objc: protoc_middleman conformance-test-runner conformance-objc
  93. ./conformance-test-runner --failure_list failure_list_objc.txt ./conformance-objc
  94. endif