| # Copyright 2020 The Pigweed Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| # use this file except in compliance with the License. You may obtain a copy of |
| # the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| import("//build_overrides/pigweed.gni") |
| |
| import("$dir_pw_build/target_types.gni") |
| import("$dir_pw_protobuf_compiler/proto.gni") |
| import("protobuf.gni") |
| |
| # This file defines a GN source_set for an external installation of protobuf. |
| # To use, checkout the protobuf source into a directory, then set the build arg |
| # dir_pw_third_party_protobuf to point to that directory. The protobuf library |
| # will be available in GN at "$dir_pw_third_party/protobuf". |
| # |
| # This is known to work with commit 300dfcc5bf46d0fae35146db2195891df4959e4 in |
| # the protobuf repository. These targets may not work with other versions. |
| # |
| # If the dir_pw_third_party_protobuf build argument is not set, the protobuf |
| # targets are effectively disabled. |
| if (dir_pw_third_party_protobuf != "") { |
| have_pthreads = current_os == "linux" || current_os == "mac" |
| |
| config("includes") { |
| include_dirs = [ "$dir_pw_third_party_protobuf/src" ] |
| } |
| |
| config("defines") { |
| defines = [ "HAVE_ZLIB=0" ] |
| if (have_pthreads) { |
| defines += [ "HAVE_PTHREAD=1" ] |
| } |
| } |
| |
| config("cc_flags") { |
| cflags_cc = [ |
| "-Wno-cast-qual", |
| "-Wno-shadow", |
| "-Wno-sign-compare", |
| "-Wno-unused-parameter", |
| ] |
| } |
| |
| pw_source_set("libprotobuf_lite") { |
| sources = [ |
| "$dir_pw_third_party_protobuf/src/google/protobuf/any_lite.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/arena.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/extension_set.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/generated_enum_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/generated_message_table_driven_lite.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/generated_message_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/implicit_weak_message.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/coded_stream.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/io_win32.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/strtod.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/zero_copy_stream.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/map.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/message_lite.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/parse_context.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/repeated_field.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/bytestream.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/common.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/int128.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/status.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/statusor.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/stringpiece.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/stringprintf.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/structurally_valid.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/strutil.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/time.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/wire_format_lite.cc", |
| ] |
| public_configs = [ |
| ":includes", |
| ":cc_flags", |
| ] |
| configs = [ ":defines" ] |
| } |
| |
| pw_source_set("libprotobuf") { |
| sources = [ |
| "$dir_pw_third_party_protobuf/src/google/protobuf/any.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/any.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/api.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/compiler/importer.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/compiler/parser.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/descriptor.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/descriptor.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/descriptor_database.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/duration.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/dynamic_message.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/empty.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/extension_set_heavy.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/field_mask.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/generated_message_reflection.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/generated_message_table_driven.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/gzip_stream.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/printer.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/io/tokenizer.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/map_field.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/message.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/reflection_ops.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/service.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/source_context.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/struct.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/stubs/substitute.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/text_format.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/timestamp.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/type.pb.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/unknown_field_set.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/delimited_message_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/field_comparator.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/field_mask_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/datapiece.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/error_listener.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/field_mask_utility.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/json_escaping.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/json_objectwriter.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/json_stream_parser.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/object_writer.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/proto_writer.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/protostream_objectwriter.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/type_info.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/type_info_test_helper.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/internal/utility.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/json_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/message_differencer.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/time_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/util/type_resolver_util.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/wire_format.cc", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/wrappers.pb.cc", |
| ] |
| public_deps = [ ":libprotobuf_lite" ] |
| configs = [ ":defines" ] |
| } |
| |
| pw_proto_library("wellknown_types") { |
| sources = [ |
| "$dir_pw_third_party_protobuf/src/google/protobuf/any.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/api.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/descriptor.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/duration.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/empty.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/field_mask.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/source_context.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/struct.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/timestamp.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/type.proto", |
| "$dir_pw_third_party_protobuf/src/google/protobuf/wrappers.proto", |
| ] |
| strip_prefix = "$dir_pw_third_party_protobuf/src/" |
| } |
| } else { |
| # As mentioned above, these targets are effectively disabled if the build |
| # argument pointing to the protobuf source directory is not set. |
| group("libprotobuf_lite") { |
| } |
| group("libprotobuf") { |
| } |
| } |