# Copyright (c) 2009-2021, Google LLC # All rights reserved. # # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file or at # https://developers.google.com/open-source/licenses/bsd load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix") load( "//upb/bazel:build_defs.bzl", "make_shell_script", ) load( ":build_defs.bzl", "staleness_test", ) licenses(["notice"]) exports_files(["staleness_test.py"]) py_library( name = "staleness_test_lib", testonly = 1, srcs = ["staleness_test_lib.py"], # This is public only for use by the staleness_test() macro. Please do not # depend on this target directly. visibility = ["//visibility:public"], ) py_binary( name = "make_cmakelists", srcs = ["make_cmakelists.py"], ) genrule( name = "gen_cmakelists", srcs = [ "//upb:BUILD", ], outs = ["generated-in/CMakeLists.txt"], cmd = "$(location :make_cmakelists) " + "$(location //upb:BUILD) $@", tools = [":make_cmakelists"], ) genrule( name = "copy_protos", srcs = [ "//src/google/protobuf:descriptor_upb_c_proto", "//src/google/protobuf:descriptor_upb_minitable_proto", ], outs = [ "generated-in/google/protobuf/descriptor.upb.h", "generated-in/google/protobuf/descriptor.upb_minitable.c", "generated-in/google/protobuf/descriptor.upb_minitable.h", ], cmd = "cp $(SRCS) $(@D)/generated-in/google/protobuf", ) staleness_test( name = "test_generated_files", outs = [ "CMakeLists.txt", "google/protobuf/descriptor.upb.h", "google/protobuf/descriptor.upb_minitable.c", "google/protobuf/descriptor.upb_minitable.h", ], generated_pattern = "generated-in/%s", tags = ["manual"], ) # Test the CMake build ######################################################### make_shell_script( name = "gen_run_cmake_build", out = "run_cmake_build.sh", contents = "set -ex\n" + "cd $(dirname $1) && cp -r . .. && cd ../..\n" + "mkdir build && cd build && cmake ../cmake && make -j8 && make test", ) sh_test( name = "cmake_build", srcs = ["run_cmake_build.sh"], args = ["$(location :gen_cmakelists)"], data = [ ":copy_protos", ":gen_cmakelists", "//third_party/utf8_range:utf8_range_srcs", "//upb:source_files", "//upb/base:source_files", "//upb/hash:source_files", "//upb/lex:source_files", "//upb/mem:source_files", "//upb/message:source_files", "//upb/mini_descriptor:source_files", "//upb/mini_table:source_files", "//upb/port:source_files", "//upb/reflection:source_files", "//upb/text:source_files", "//upb/wire:source_files", ], target_compatible_with = select({ "@platforms//os:windows": ["@platforms//:incompatible"], "//conditions:default": [], }), deps = ["@bazel_tools//tools/bash/runfiles"], ) pkg_files( name = "upb_cmake_dist", srcs = [ ":copy_protos", ":gen_cmakelists", "//third_party/utf8_range:utf8_range_srcs", "//upb:source_files", "//upb/base:source_files", "//upb/hash:source_files", "//upb/lex:source_files", "//upb/mem:source_files", "//upb/message:source_files", "//upb/mini_descriptor:source_files", "//upb/mini_table:source_files", "//upb/port:source_files", "//upb/reflection:source_files", "//upb/text:source_files", "//upb/wire:source_files", ], strip_prefix = strip_prefix.from_root(""), visibility = ["//rust:__pkg__"], )