Browse Source

Added cmake build files for the conformance test runner.

I want to use the conformance tests from upb, which is switching
to CMake.
Josh Haberman 7 years ago
parent
commit
4249692ce6
2 changed files with 52 additions and 0 deletions
  1. 5 0
      cmake/CMakeLists.txt
  2. 47 0
      cmake/conformance.cmake

+ 5 - 0
cmake/CMakeLists.txt

@@ -30,6 +30,7 @@ endif()
 
 # Options
 option(protobuf_BUILD_TESTS "Build tests" ON)
+option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF)
 option(protobuf_BUILD_EXAMPLES "Build examples" OFF)
 option(protobuf_BUILD_PROTOC_BINARIES "Build libprotoc and protoc compiler" ON)
 if (BUILD_SHARED_LIBS)
@@ -218,6 +219,10 @@ if (protobuf_BUILD_TESTS)
   include(tests.cmake)
 endif (protobuf_BUILD_TESTS)
 
+if (protobuf_BUILD_CONFORMANCE)
+  include(conformance.cmake)
+endif (protobuf_BUILD_CONFORMANCE)
+
 include(install.cmake)
 
 if (protobuf_BUILD_EXAMPLES)

+ 47 - 0
cmake/conformance.cmake

@@ -0,0 +1,47 @@
+
+add_custom_command(
+  OUTPUT ${protobuf_source_dir}/conformance/conformance.pb.cc
+  DEPENDS protoc ${protobuf_source_dir}/conformance/conformance.proto
+  COMMAND protoc ${protobuf_source_dir}/conformance/conformance.proto
+      --proto_path=${protobuf_source_dir}/conformance
+      --cpp_out=${protobuf_source_dir}/conformance
+)
+
+add_custom_command(
+  OUTPUT ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.pb.cc
+         ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.pb.cc
+  DEPENDS protoc ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.proto
+          protoc ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.proto
+  COMMAND protoc ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.proto
+                 ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.proto
+      --proto_path=${protobuf_source_dir}/src
+      --cpp_out=${protobuf_source_dir}/src
+)
+
+add_executable(conformance_test_runner
+  ${protobuf_source_dir}/conformance/conformance.pb.cc
+  ${protobuf_source_dir}/conformance/conformance_test.cc
+  ${protobuf_source_dir}/conformance/conformance_test_runner.cc
+  ${protobuf_source_dir}/conformance/third_party/jsoncpp/json.h
+  ${protobuf_source_dir}/conformance/third_party/jsoncpp/jsoncpp.cpp
+  ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.pb.cc
+  ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.pb.cc
+)
+
+add_executable(conformance_cpp
+  ${protobuf_source_dir}/conformance/conformance.pb.cc
+  ${protobuf_source_dir}/conformance/conformance_cpp.cc
+  ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.pb.cc
+  ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.pb.cc
+)
+
+target_include_directories(
+  conformance_test_runner
+  PUBLIC ${protobuf_source_dir}/conformance)
+
+target_include_directories(
+  conformance_cpp
+  PUBLIC ${protobuf_source_dir}/conformance)
+
+target_link_libraries(conformance_test_runner libprotobuf)
+target_link_libraries(conformance_cpp libprotobuf)