diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 205 |
1 files changed, 204 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 412cdcd..2b270b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,209 @@ elseif(UNIX) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id") endif() +<<<<<<< HEAD +FIND_PACKAGE(Lua) +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf/Makefile.am") + set(PROTOBUF_FOUND TRUE) +endif() +find_program(RAGEL NAMES ragel) + +if(LUA_FOUND) + include_directories(${LUA_INCLUDE_DIR}) + + add_library(upb_c SHARED + upb/bindings/lua/upb.c + upb/bindings/lua/def.c + upb/bindings/lua/msg.c + ) + target_link_libraries(upb_c LINK_PRIVATE + upbpb_pic + upbdef_pic + upbhandlers_pic upb_pic ) + + add_library(pb_c SHARED + upb/bindings/lua/upb/pb.c + ) + target_link_libraries(pb_c LINK_PRIVATE upb_c upbpb_pic) + + set_target_properties(upb_c + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "upb/bindings/lua" + PREFIX "" + SUFFIX ".so") + set_target_properties(pb_c + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "upb/bindings/lua/upb" + PREFIX "" + SUFFIX ".so") + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/tools/upbc + DEPENDS ${CMAKE_SOURCE_DIR}/tools/upbc + ${CMAKE_SOURCE_DIR}/tools/upbc.lua + ${CMAKE_SOURCE_DIR}/tools/make_c_api.lua + ${CMAKE_SOURCE_DIR}/upb/bindings/lua/upb.lua + ${CMAKE_SOURCE_DIR}/upb/bindings/lua/upb/pb.lua + upb_c + pb_c + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/tools/upbc + ${CMAKE_SOURCE_DIR}/tools/upbc.lua + ${CMAKE_SOURCE_DIR}/tools/make_c_api.lua + ${CMAKE_CURRENT_BINARY_DIR}/tools) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lua/upb.lua + DEPENDS ${CMAKE_SOURCE_DIR}/upb/bindings/lua/upb.lua + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/upb/bindings/lua/upb.lua + ${CMAKE_CURRENT_BINARY_DIR}/upb/bindings/lua) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lua/upb/pb.lua + DEPENDS ${CMAKE_SOURCE_DIR}/upb/bindings/lua/upb/pb.lua + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/upb/bindings/lua/upb/pb.lua + ${CMAKE_CURRENT_BINARY_DIR}/upb/bindings/lua/upb) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/upb/pb/compile_decoder_x64.h + DEPENDS upb/pb/compile_decoder_x64.dasc + COMMAND + cd ${CMAKE_CURRENT_SOURCE_DIR} && + lua third_party/dynasm/dynasm.lua + -c upb/pb/compile_decoder_x64.dasc + > ${CMAKE_CURRENT_BINARY_DIR}/upb/pb/compile_decoder_x64.h + ) + + add_custom_target( + genfiles2 ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/upb/pb/compile_decoder_x64.h + ) + + add_test( + NAME testlua + COMMAND lua ${CMAKE_SOURCE_DIR}/tests/bindings/lua/test_upb.lua + ${CMAKE_SOURCE_DIR}/tests/bindings/lua/test_upb.pb.lua + ) + set_property(TEST testlua PROPERTY ENVIRONMENT + LUA_PATH=${CMAKE_SOURCE_DIR}/third_party/lunit/?.lua$<SEMICOLON>${CMAKE_SOURCE_DIR}/upb/bindings/lua/?.lua + LUA_CPATH=${CMAKE_BINARY_DIR}/upb/bindings/lua/?.so + ) + set_tests_properties(testlua + PROPERTIES + DEPENDS "upb_c;pb_c" + ) + enable_testing() +endif() + +if(LUA_FOUND AND PROTOBUF_FOUND) + set(protobuf_BUILD_TESTS OFF CACHE BOOL "enable tests for proto2" FORCE) + set(protobuf_BUILD_SHARED_LIBS OFF CACHE BOOL "enable shared libs for proto2" FORCE) + set(protobuf_BUILD_CONFORMANCE ON CACHE BOOL "Build conformance tests" FORCE) + add_subdirectory(third_party/protobuf/cmake) + + add_custom_target( + upbc ALL + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/make_c_api.lua + ${CMAKE_CURRENT_SOURCE_DIR}/tools/upbc.lua + ${CMAKE_CURRENT_BINARY_DIR}/tools/upbc + ${CMAKE_CURRENT_BINARY_DIR}/lua/upb.lua + ${CMAKE_CURRENT_BINARY_DIR}/lua/upb/pb.lua + ) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/conformance.upb.h + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/test_messages_proto3.upb.h + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/test_messages_proto3.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/any.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/duration.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/field_mask.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/struct.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/timestamp.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/wrappers.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/conformance.upb.c + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tools/upbc + ${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf/conformance/conformance.proto + COMMAND protoc --include_imports + ${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf/conformance/conformance.proto + ${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf/src/google/protobuf/test_messages_proto3.proto + -I${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf/conformance + -I${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf/src + -o${CMAKE_CURRENT_BINARY_DIR}/conformance.pb && + tools/upbc ${CMAKE_CURRENT_BINARY_DIR}/conformance.pb + ) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/descriptor.upb.h + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/descriptor.upb.c + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tools/upbc + ${CMAKE_CURRENT_SOURCE_DIR}/google/protobuf/descriptor.proto + COMMAND protoc + ${CMAKE_CURRENT_SOURCE_DIR}/google/protobuf/descriptor.proto + -I${CMAKE_CURRENT_SOURCE_DIR} + -o${CMAKE_CURRENT_BINARY_DIR}/descriptor.pb && + tools/upbc ${CMAKE_CURRENT_BINARY_DIR}/descriptor.pb + ) + + add_custom_target( + genfiles ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/conformance.upb.h + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/descriptor.upb.h + ) + + add_executable(conformance_upb + tests/conformance_upb.c + ${CMAKE_CURRENT_BINARY_DIR}/conformance.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/test_messages_proto3.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/any.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/duration.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/field_mask.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/struct.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/timestamp.upb.c + ${CMAKE_CURRENT_BINARY_DIR}/google/protobuf/wrappers.upb.c + ) + target_link_libraries(conformance_upb LINK_PRIVATE + upb + ) + + add_custom_target( + conformance + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/conformance_upb + ${CMAKE_CURRENT_BINARY_DIR}/third_party/protobuf/cmake/conformance_test_runner + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/third_party/protobuf/cmake/conformance_test_runner ${CMAKE_CURRENT_BINARY_DIR}/conformance_upb + ) + +endif() + +if (RAGEL) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/upb/json/parser.c + DEPENDS upb/json/parser.rl + COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} && RAGEL -C -o ${CMAKE_CURRENT_BINARY_DIR}/upb/json/parser.c upb/json/parser.rl + ) +endif() + +configure_file(tools/copy_genfiles.sh.in tools/copy_genfiles.sh) + +set(UPB_SRCS + upb/decode.c + upb/encode.c + upb/msg.c + upb/table.c + upb/upb.c +) + +set (UPBDEF_SRCS + upb/def.c + upb/msgfactory.c +) + +set(UPBHANDLERS_SRCS + upb/sink.c + upb/handlers.c +) + +set(UPBPB_SRCS +======= enable_testing() add_library(upb @@ -95,11 +298,11 @@ add_library(upb_descriptor target_link_libraries(upb_descriptor upb) add_library(upb_pb +>>>>>>> cmake-mac-fixes upb/pb/compile_decoder.c upb/pb/decoder.c upb/pb/decoder.int.h upb/pb/encoder.c - upb/pb/glue.c upb/pb/textprinter.c upb/pb/varint.c upb/pb/varint.int.h |