diff options
37 files changed, 455 insertions, 277 deletions
@@ -2,47 +2,91 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build_overrides/build.gni") +import("build/config/services.gni") + +config("root_config_overrides") { + if (build_with_chromium) { + include_dirs = [ "." ] + } +} + # All compilable non-test targets in the repository (both executables and # source_sets). group("gn_all") { deps = [ - "//api", - "//base", - "//discovery/mdns:embedder_demo", - "//platform", - "//sample:hello", - "//third_party/abseil", - "//third_party/chromium_quic", - "//third_party/chromium_quic:demo_client", - "//third_party/chromium_quic:demo_server", - "//third_party/tinycbor", - "//tools/cddl", + "api", + "base", + "msgs", + "platform", + "sample:hello", + "third_party/abseil", + "third_party/tinycbor", + "tools/cddl", ] -} -executable("demo") { - sources = [ - "//demo/demo.cc", - ] + if (use_mdns_responder) { + deps += [ "discovery/mdns:embedder_demo" ] + } - deps = [ - "//api:api_with_chromium_quic", - "//base", - "//discovery/mdns", - "//platform", - ] + if (use_chromium_quic) { + deps += [ + "third_party/chromium_quic", + "third_party/chromium_quic:demo_client", + "third_party/chromium_quic:demo_server", + ] + } } -executable("unittests") { +executable("openscreen_unittests") { testonly = true deps = [ - "//api:api_unittests", - "//base:base_unittests", - "//discovery/mdns:mdns_unittests", - "//msgs:unittests", - "//platform:platform_unittests", - "//sample:hello_unittests", - "//third_party/abseil", + "api:api_unittests", + "base:base_unittests", + "discovery/mdns:mdns_unittests", + "msgs:unittests", + "platform:platform_unittests", + "sample:hello_unittests", + "third_party/abseil", "//third_party/googletest:gtest_main", ] } + +if (!build_with_chromium) { + # TODO(btolsch): This is to keep the openscreen bots happy with a `unittests` + # target and executable. Remove this after the bot recipe can be updated. + group("unittests") { + testonly = true + deps = [ + ":openscreen_unittests", + ] + } + + copy("unittests_rename") { + testonly = true + sources = [ + "$root_out_dir/openscreen_unittests", + ] + outputs = [ + "$root_out_dir/unittests", + ] + deps = [ + ":openscreen_unittests", + ] + } +} + +if (use_chromium_quic && use_mdns_responder) { + executable("demo") { + sources = [ + "demo/demo.cc", + ] + + deps = [ + "api:api_with_chromium_quic", + "base", + "discovery/mdns", + "platform", + ] + } +} @@ -158,7 +158,7 @@ the build flags available. ./out/Default/unittests ``` -## Continuous build and try jobs +## Continuous build and try jobs openscreen uses [LUCI builders](https://ci.chromium.org/p/openscreen/builders) to monitor the build and test health of the library. Current builders include: @@ -195,7 +195,7 @@ committed changes locally, simply run: ``` This will run our `PRESUBMIT.sh` script to check style, and if it passes, a new -code review will be posted on `chromium-review.googlesource.com`. +code review will be posted on `chromium-review.googlesource.com`. If you make additional commits to your local branch, then running `git cl upload` again in the same branch will merge those commits into the ongoing @@ -234,3 +234,16 @@ After your patch has received one or more LGTM commit it by clicking the `SUBMIT` button (or, confusingly, `COMMIT QUEUE +2`) in Gerrit. This will run your patch through the builders again before committing to the main openscreen repository. + +## Chromium Build Differences + +Currently, openscreen is also built in Chromium, with some build differences. +The files that are built are determined by the following build variables: + - `build_with_chromium`: `true` when building as part of a Chromium checkout, + `false` otherwise. Set by `//build_overrides/build.gni`. + - `use_mdns_responder`: `true` by default, `false` when `build_with_chromium` + is `true`. Controls whether the default mDNSResponder mDNS implementation is + used. Set by `//build/config/services.gni`. + - `use_chromium_quic`: `true` by default, `false` when `build_with_chromium` + is `true`. Controls whether the Chromium QUIC implementation clone is used. + Set by `//build/config/services.gni`. diff --git a/api/BUILD.gn b/api/BUILD.gn index 750b0dd9..7423f926 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -2,6 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("../build/config/services.gni") + source_set("api") { public_deps = [ "public:api", @@ -11,20 +13,21 @@ source_set("api") { ] } -source_set("api_with_chromium_quic") { - public_deps = [ - ":api", - ] - deps = [ - "impl:chromium_quic_integration", - ] +if (use_chromium_quic) { + source_set("api_with_chromium_quic") { + public_deps = [ + ":api", + ] + deps = [ + "impl:chromium_quic_integration", + ] + } } source_set("api_unittests") { testonly = true sources = [ - "impl/mdns_responder_service_unittest.cc", "impl/presentation/presentation_connection_unittest.cc", "impl/presentation/presentation_controller_unittest.cc", "impl/presentation/presentation_receiver_unittest.cc", @@ -40,12 +43,17 @@ source_set("api_unittests") { deps = [ ":api", + "../third_party/abseil", "impl/quic:test_support", "impl/testing", "impl/testing:fakes_unittests", "public:test_support", - "//third_party/abseil", "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] + configs += [ "..:root_config_overrides" ] + + if (use_mdns_responder) { + sources += [ "impl/mdns_responder_service_unittest.cc" ] + } } diff --git a/api/impl/BUILD.gn b/api/impl/BUILD.gn index 2e5efeae..4ba40a5b 100644 --- a/api/impl/BUILD.gn +++ b/api/impl/BUILD.gn @@ -2,16 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("../../build/config/services.gni") + source_set("impl") { sources = [ - "internal_services.cc", - "internal_services.h", "mdns_platform_service.cc", "mdns_platform_service.h", - "mdns_responder_service.cc", - "mdns_responder_service.h", - "mdns_service_listener_factory.cc", - "mdns_service_publisher_factory.cc", "network_service_manager.cc", "presentation/presentation_common.cc", "presentation/presentation_common.h", @@ -28,34 +24,48 @@ source_set("impl") { "service_publisher_impl.h", ] + if (use_mdns_responder) { + sources += [ + "internal_services.cc", + "internal_services.h", + "mdns_responder_service.cc", + "mdns_responder_service.h", + "mdns_service_listener_factory.cc", + "mdns_service_publisher_factory.cc", + ] + } + public_deps = [ + "../../msgs", "../public:api", - "//msgs", ] deps = [ + "../../base", + "../../platform", "quic", - "//base", - "//platform", ] + configs += [ "../..:root_config_overrides" ] } -source_set("chromium_quic_integration") { - sources = [ - "protocol_connection_client_factory.cc", - "protocol_connection_server_factory.cc", - "quic/quic_connection_factory_impl.cc", - "quic/quic_connection_factory_impl.h", - "quic/quic_connection_impl.cc", - "quic/quic_connection_impl.h", - ] +if (use_chromium_quic) { + source_set("chromium_quic_integration") { + sources = [ + "protocol_connection_client_factory.cc", + "protocol_connection_server_factory.cc", + "quic/quic_connection_factory_impl.cc", + "quic/quic_connection_factory_impl.h", + "quic/quic_connection_impl.cc", + "quic/quic_connection_impl.h", + ] - public_configs = [ "//third_party/chromium_quic:chromium_quic_config" ] + public_configs = [ "//third_party/chromium_quic:chromium_quic_config" ] - deps = [ - "quic", - "//base", - "//msgs", - "//platform", - "//third_party/chromium_quic", - ] + deps = [ + "quic", + "//base", + "//msgs", + "//platform", + "//third_party/chromium_quic", + ] + } } diff --git a/api/impl/presentation/presentation_common.cc b/api/impl/presentation/presentation_common.cc index fabc567b..773e8826 100644 --- a/api/impl/presentation/presentation_common.cc +++ b/api/impl/presentation/presentation_common.cc @@ -4,7 +4,7 @@ #include "api/impl/presentation/presentation_common.h" -#include "third_party/abseil/src/absl/strings/ascii.h" +#include "absl/strings/ascii.h" namespace openscreen { namespace presentation { @@ -43,4 +43,4 @@ PresentationID::PresentationID(std::string presentation_id) } } // namespace presentation -} // namespace openscreen
\ No newline at end of file +} // namespace openscreen diff --git a/api/impl/presentation/presentation_connection.cc b/api/impl/presentation/presentation_connection.cc index 8f525226..65722b3d 100644 --- a/api/impl/presentation/presentation_connection.cc +++ b/api/impl/presentation/presentation_connection.cc @@ -7,6 +7,7 @@ #include <algorithm> #include <memory> +#include "absl/strings/string_view.h" #include "api/impl/presentation/presentation_common.h" #include "api/public/network_service_manager.h" #include "api/public/presentation/presentation_controller.h" @@ -15,7 +16,6 @@ #include "base/std_util.h" #include "msgs/osp_messages.h" #include "platform/api/logging.h" -#include "third_party/abseil/src/absl/strings/string_view.h" // TODO(issue/27): Address TODOs in this file namespace openscreen { diff --git a/api/impl/presentation/presentation_connection_unittest.cc b/api/impl/presentation/presentation_connection_unittest.cc index ab3ed21d..1df47ca6 100644 --- a/api/impl/presentation/presentation_connection_unittest.cc +++ b/api/impl/presentation/presentation_connection_unittest.cc @@ -6,13 +6,13 @@ #include <memory> +#include "absl/strings/string_view.h" #include "api/impl/quic/testing/fake_quic_connection.h" #include "api/impl/quic/testing/fake_quic_connection_factory.h" #include "api/impl/quic/testing/quic_test_support.h" #include "api/impl/testing/fake_clock.h" #include "api/public/network_service_manager.h" #include "api/public/presentation/presentation_controller.h" -#include "third_party/abseil/src/absl/strings/string_view.h" #include "third_party/googletest/src/googlemock/include/gmock/gmock.h" #include "third_party/googletest/src/googletest/include/gtest/gtest.h" diff --git a/api/impl/quic/BUILD.gn b/api/impl/quic/BUILD.gn index 8d3a5f83..72d5d706 100644 --- a/api/impl/quic/BUILD.gn +++ b/api/impl/quic/BUILD.gn @@ -16,9 +16,10 @@ source_set("quic") { deps = [ "../../public:api", - "//base", - "//platform", + "../../../base", + "../../../platform", ] + configs += [ "../../..:root_config_overrides" ] } source_set("test_support") { @@ -33,9 +34,10 @@ source_set("test_support") { ] deps = [ - "//base", - "//msgs", - "//platform", + "../../../base", + "../../../msgs", + "../../../platform", "//third_party/googletest:gmock", ] + configs += [ "../../..:root_config_overrides" ] } diff --git a/api/impl/quic/quic_connection_impl.cc b/api/impl/quic/quic_connection_impl.cc index 2abf2e41..5371f68c 100644 --- a/api/impl/quic/quic_connection_impl.cc +++ b/api/impl/quic/quic_connection_impl.cc @@ -7,10 +7,10 @@ #include <limits> #include <memory> +#include "absl/types/optional.h" #include "api/impl/quic/quic_connection_factory_impl.h" #include "base/error.h" #include "platform/api/logging.h" -#include "third_party/abseil/src/absl/types/optional.h" #include "third_party/chromium_quic/src/net/third_party/quic/platform/impl/quic_chromium_clock.h" namespace openscreen { diff --git a/api/impl/testing/BUILD.gn b/api/impl/testing/BUILD.gn index db6084e9..b9090b95 100644 --- a/api/impl/testing/BUILD.gn +++ b/api/impl/testing/BUILD.gn @@ -14,9 +14,10 @@ source_set("testing") { ] deps = [ - "//discovery/mdns", - "//platform", + "../../../discovery/mdns:mdns_interface", + "../../../platform", ] + configs += [ "../../..:root_config_overrides" ] } source_set("fakes_unittests") { @@ -28,7 +29,8 @@ source_set("fakes_unittests") { deps = [ ":testing", - "//third_party/abseil", + "../../../third_party/abseil", "//third_party/googletest:gtest", ] + configs += [ "../../..:root_config_overrides" ] } diff --git a/api/public/BUILD.gn b/api/public/BUILD.gn index e22645e7..17b29435 100644 --- a/api/public/BUILD.gn +++ b/api/public/BUILD.gn @@ -34,12 +34,13 @@ source_set("api") { ] public_deps = [ - "//msgs", + "../../msgs", ] deps = [ - "//base", - "//platform", + "../../base", + "../../platform", ] + configs += [ "../..:root_config_overrides" ] } source_set("test_support") { diff --git a/api/public/message_demuxer.cc b/api/public/message_demuxer.cc index 8ad5257e..4ceec7f5 100644 --- a/api/public/message_demuxer.cc +++ b/api/public/message_demuxer.cc @@ -170,7 +170,7 @@ MessageDemuxer::HandleStreamBufferResult MessageDemuxer::HandleStreamBufferLoop( &default_callbacks_, buffer); } } - OSP_LOG_IF(VERBOSE, !result.handled) << "no message handler matched"; + OSP_VLOG_IF(!result.handled) << "no message handler matched"; } while (result.consumed && !buffer->empty()); return result; } diff --git a/api/public/presentation/presentation_connection.h b/api/public/presentation/presentation_connection.h index 5a3f030b..e8624629 100644 --- a/api/public/presentation/presentation_connection.h +++ b/api/public/presentation/presentation_connection.h @@ -11,13 +11,13 @@ #include <string> #include <vector> +#include "absl/strings/string_view.h" +#include "absl/types/optional.h" #include "api/public/message_demuxer.h" #include "base/ip_address.h" #include "base/macros.h" #include "platform/api/logging.h" #include "platform/api/time.h" -#include "third_party/abseil/src/absl/strings/string_view.h" -#include "third_party/abseil/src/absl/types/optional.h" namespace openscreen { diff --git a/api/public/presentation/presentation_controller.h b/api/public/presentation/presentation_controller.h index ada59183..64233282 100644 --- a/api/public/presentation/presentation_controller.h +++ b/api/public/presentation/presentation_controller.h @@ -9,12 +9,12 @@ #include <memory> #include <string> +#include "absl/types/optional.h" #include "api/public/presentation/presentation_connection.h" #include "api/public/protocol_connection.h" #include "api/public/service_listener.h" #include "base/error.h" #include "platform/api/time.h" -#include "third_party/abseil/src/absl/types/optional.h" namespace openscreen { namespace presentation { diff --git a/base/BUILD.gn b/base/BUILD.gn index 7bba1f4a..187620fe 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn @@ -18,8 +18,9 @@ source_set("base") { ] deps = [ - "//third_party/abseil", + "../third_party/abseil", ] + configs += [ "..:root_config_overrides" ] } source_set("base_unittests") { @@ -33,8 +34,9 @@ source_set("base_unittests") { deps = [ ":base", - "//third_party/abseil", + "../third_party/abseil", "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] + configs += [ "..:root_config_overrides" ] } diff --git a/base/ip_address.cc b/base/ip_address.cc index fc7924df..27213f98 100644 --- a/base/ip_address.cc +++ b/base/ip_address.cc @@ -7,8 +7,8 @@ #include <cstring> #include <iomanip> +#include "absl/types/optional.h" #include "platform/api/logging.h" -#include "third_party/abseil/src/absl/types/optional.h" namespace openscreen { diff --git a/build/config/services.gni b/build/config/services.gni new file mode 100644 index 00000000..1d3d3466 --- /dev/null +++ b/build/config/services.gni @@ -0,0 +1,13 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build_overrides/build.gni") + +use_chromium_quic = true +use_mdns_responder = true + +if (build_with_chromium) { + use_chromium_quic = false + use_mdns_responder = false +} diff --git a/demo/demo.cc b/demo/demo.cc index 9e51eb4d..5fb42203 100644 --- a/demo/demo.cc +++ b/demo/demo.cc @@ -12,6 +12,7 @@ #include <string> #include <vector> +#include "absl/strings/string_view.h" #include "api/public/mdns_service_listener_factory.h" #include "api/public/mdns_service_publisher_factory.h" #include "api/public/message_demuxer.h" @@ -28,7 +29,6 @@ #include "platform/api/logging.h" #include "platform/api/network_interface.h" #include "platform/api/time.h" -#include "third_party/abseil/src/absl/strings/string_view.h" #include "third_party/tinycbor/src/src/cbor.h" namespace openscreen { diff --git a/discovery/mdns/BUILD.gn b/discovery/mdns/BUILD.gn index 61f35931..76590be9 100644 --- a/discovery/mdns/BUILD.gn +++ b/discovery/mdns/BUILD.gn @@ -2,36 +2,21 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -executable("embedder_demo") { - sources = [ - "embedder_demo.cc", - ] - - deps = [ - ":mdns", - ] -} +import("../../build/config/services.gni") -source_set("mdns") { +source_set("mdns_interface") { sources = [ "domain_name.cc", "domain_name.h", "mdns_responder_adapter.cc", "mdns_responder_adapter.h", - "mdns_responder_adapter_impl.cc", - "mdns_responder_adapter_impl.h", - "mdns_responder_platform.cc", - "mdns_responder_platform.h", ] public_deps = [ - "//base", - "//platform", - ] - - deps = [ - "//third_party/mDNSResponder:core", + "../../base", + "../../platform", ] + configs += [ "../..:root_config_overrides" ] } source_set("mdns_unittests") { @@ -39,12 +24,48 @@ source_set("mdns_unittests") { sources = [ "domain_name_unittest.cc", - "mdns_responder_adapter_impl_unittest.cc", ] deps = [ - ":mdns", + ":mdns_interface", "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] + configs += [ "../..:root_config_overrides" ] + + if (use_mdns_responder) { + sources += [ "mdns_responder_adapter_impl_unittest.cc" ] + deps += [ ":mdns" ] + } +} + +if (use_mdns_responder) { + executable("embedder_demo") { + sources = [ + "embedder_demo.cc", + ] + + deps = [ + ":mdns", + ] + } + + source_set("mdns") { + sources = [ + "mdns_responder_adapter_impl.cc", + "mdns_responder_adapter_impl.h", + "mdns_responder_platform.cc", + "mdns_responder_platform.h", + ] + + public_deps = [ + ":mdns_interface", + "../../base", + "../../platform", + ] + + deps = [ + "../../third_party/mDNSResponder:core", + ] + } } diff --git a/discovery/mdns/domain_name.cc b/discovery/mdns/domain_name.cc index e96e9fea..67efcd5e 100644 --- a/discovery/mdns/domain_name.cc +++ b/discovery/mdns/domain_name.cc @@ -87,7 +87,7 @@ Error DomainName::Append(const DomainName& after) { } std::vector<std::string> DomainName::GetLabels() const { - OSP_DCHECK_GT(domain_name_.size(), 0); + OSP_DCHECK_GT(domain_name_.size(), 0u); std::vector<std::string> result; auto it = domain_name_.begin(); while (*it != 0) { @@ -106,7 +106,7 @@ bool DomainNameComparator::operator()(const DomainName& a, std::ostream& operator<<(std::ostream& os, const DomainName& domain_name) { const auto& data = domain_name.domain_name(); - OSP_DCHECK_GT(data.size(), 0); + OSP_DCHECK_GT(data.size(), 0u); auto it = data.begin(); while (*it != 0) { size_t length = *it++; diff --git a/msgs/BUILD.gn b/msgs/BUILD.gn index f886dea3..aec80a78 100644 --- a/msgs/BUILD.gn +++ b/msgs/BUILD.gn @@ -12,17 +12,18 @@ source_set("msgs") { ":cddl_gen", ] deps = [ - "//third_party/abseil", - "//third_party/tinycbor", + "../third_party/abseil", + "../third_party/tinycbor", ] + configs += [ "..:root_config_overrides" ] } config("cddl_gen_config") { - include_dirs = [ "$root_gen_dir" ] + include_dirs = [ "$root_gen_dir" + "/" + rebase_path("..", "//") ] } action("cddl_gen") { - script = "//tools/cddl/cddl.py" + script = "../tools/cddl/cddl.py" sources = [ "osp_messages.cddl", ] @@ -47,7 +48,7 @@ action("cddl_gen") { ] + rebase_path(sources, root_build_dir) deps = [ - "//tools/cddl", + "../tools/cddl", ] } @@ -62,4 +63,5 @@ source_set("unittests") { ":msgs", "//third_party/googletest:gtest", ] + configs += [ "..:root_config_overrides" ] } diff --git a/msgs/presentation/BUILD.gn b/msgs/presentation/BUILD.gn deleted file mode 100644 index 7273b23f..00000000 --- a/msgs/presentation/BUILD.gn +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2018 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -source_set("presentation") { - sources = [ - "messages.cc", - "messages.h", - ] - - deps = [ - "//third_party/tinycbor", - ] -} - -source_set("unittests") { - testonly = true - - sources = [ - "messages_unittest.cc", - ] - - deps = [ - ":presentation", - "//third_party/googletest:gtest", - ] -} diff --git a/platform/BUILD.gn b/platform/BUILD.gn index 18d12f4f..daa89a5f 100644 --- a/platform/BUILD.gn +++ b/platform/BUILD.gn @@ -16,29 +16,23 @@ source_set("platform") { "api/network_interface.h", "api/socket.h.", "api/time.h", - "base/event_loop.cc", # TODO: separate API from impl. - "base/event_loop.h", # TODO: separate API from impl. + "base/event_loop.cc", + "base/event_loop.h", + "base/time.cc", ] + deps = [] public_deps = [ - "//base", - "//third_party/abseil", + "../base", + "../third_party/abseil", ] + configs += [ "..:root_config_overrides" ] if (build_with_chromium) { - sources += [ - "chromium/event_waiter.cc", - "chromium/logging.cc", - "chromium/network_interface.cc", - "chromium/socket.cc", - "chromium/socket.h", - "chromium/time.cc", - ] + deps += [ ":chromium" ] + public_deps += [ "//base" ] } else { # !build_with_chromium - sources += [ - "base/logging.cc", - "base/time.cc", - ] + sources += [ "base/logging.cc" ] if (is_linux) { sources += [ "linux/network_interface.cc" ] @@ -61,6 +55,21 @@ source_set("platform") { } } +if (build_with_chromium) { + source_set("chromium") { + sources = [ + "chromium/logging.cc", + ] + + deps = [ + "../third_party/abseil", + "//base", + ] + + configs += [ "..:root_config_overrides" ] + } +} + source_set("platform_unittests") { testonly = true @@ -78,4 +87,6 @@ source_set("platform_unittests") { ":platform", "//third_party/googletest:gtest", ] + + configs += [ "..:root_config_overrides" ] } diff --git a/platform/api/logging.h b/platform/api/logging.h index 4f3c4184..1f051f03 100644 --- a/platform/api/logging.h +++ b/platform/api/logging.h @@ -7,7 +7,7 @@ #include <sstream> -#include "third_party/abseil/src/absl/strings/string_view.h" +#include "absl/strings/string_view.h" namespace openscreen { namespace platform { @@ -64,9 +64,6 @@ class LogMessage { __FILE__, __LINE__) \ .stream() -// Necessary for auto macro in OSP_LOG_IF -#define OSP_LOG_VERBOSE OSP_VLOG - #define OSP_LOG_INFO \ openscreen::platform::LogMessage(openscreen::platform::LogLevel::kInfo, \ __FILE__, __LINE__) \ @@ -99,6 +96,7 @@ class Voidify { #define OSP_LAZY_STREAM(stream, condition) \ !(condition) ? (void)0 : openscreen::platform::detail::Voidify() & (stream) #define OSP_EAT_STREAM OSP_LAZY_STREAM(OSP_LOG, false) +#define OSP_VLOG_IF(condition) OSP_LAZY_STREAM(OSP_VLOG, (condition)) #define OSP_LOG_IF(level, condition) \ OSP_LAZY_STREAM(OSP_LOG_##level, (condition)) @@ -141,11 +139,12 @@ class Voidify { #define OSP_DCHECK_GE(a, b) OSP_EAT_STREAM << !((a) >= (b)) #endif -#define OSP_DVLOG OSP_LOG_IF(VERBOSE, OSP_DCHECK_IS_ON()) +#define OSP_DVLOG OSP_VLOG_IF(OSP_DCHECK_IS_ON()) #define OSP_DLOG_INFO OSP_LOG_IF(INFO, OSP_DCHECK_IS_ON()) #define OSP_DLOG_WARN OSP_LOG_IF(WARN, OSP_DCHECK_IS_ON()) #define OSP_DLOG_ERROR OSP_LOG_IF(ERROR, OSP_DCHECK_IS_ON()) #define OSP_DLOG_FATAL OSP_LOG_IF(FATAL, OSP_DCHECK_IS_ON()) +#define OSP_DVLOG_IF(condition) OSP_VLOG_IF(OSP_DCHECK_IS_ON() && (condition)) #define OSP_DLOG_IF(level, condition) \ OSP_LOG_IF(level, OSP_DCHECK_IS_ON() && (condition)) diff --git a/platform/base/event_loop.cc b/platform/base/event_loop.cc index 2b2b23a5..90587b49 100644 --- a/platform/base/event_loop.cc +++ b/platform/base/event_loop.cc @@ -24,7 +24,7 @@ Error ReceiveDataFromEvent(const UdpSocketReadableEvent& read_event, << len.error().message(); return len.error(); } - OSP_DCHECK_LE(len.value(), kUdpMaxPacketSize); + OSP_DCHECK_LE(len.value(), static_cast<size_t>(kUdpMaxPacketSize)); data->length = len.value(); data->socket = read_event.socket; return Error::None(); diff --git a/platform/chromium/logging.cc b/platform/chromium/logging.cc new file mode 100644 index 00000000..90d3a104 --- /dev/null +++ b/platform/chromium/logging.cc @@ -0,0 +1,52 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "platform/api/logging.h" + +#include "base/logging.h" + +namespace openscreen { +namespace platform { +namespace { + +::logging::LogSeverity MapLogLevel(LogLevel level) { + switch (level) { + case LogLevel::kVerbose: + return ::logging::LOG_VERBOSE; + case LogLevel::kInfo: + return ::logging::LOG_INFO; + case LogLevel::kWarning: + return ::logging::LOG_WARNING; + case LogLevel::kError: + return ::logging::LOG_ERROR; + case LogLevel::kFatal: + return ::logging::LOG_FATAL; + } +} + +} // namespace + +// We don't initialize Chromium's logging. +void LogInit(const char* filename) {} + +// We don't set Chromium's logging level. +void SetLogLevel(LogLevel level) {} + +void LogWithLevel(LogLevel level, + absl::string_view file, + int line, + absl::string_view msg) { + ::logging::LogMessage(file.data(), line, MapLogLevel(level)).stream() << msg; +} + +void Break() { +#if defined(OFFICIAL_BUILD) && defined(NDEBUG) + IMMEDIATE_CRASH(); +#else + ::base::debug::BreakDebugger(); +#endif +} + +} // namespace platform +} // namespace openscreen diff --git a/platform/linux/network_interface.cc b/platform/linux/network_interface.cc index 303c96f5..dbc2e3d3 100644 --- a/platform/linux/network_interface.cc +++ b/platform/linux/network_interface.cc @@ -23,10 +23,10 @@ #include <algorithm> #include <cstring> +#include "absl/strings/string_view.h" #include "base/ip_address.h" #include "base/scoped_pipe.h" #include "platform/api/logging.h" -#include "third_party/abseil/src/absl/strings/string_view.h" namespace openscreen { namespace platform { diff --git a/sample/BUILD.gn b/sample/BUILD.gn index 09b03b8b..118da316 100644 --- a/sample/BUILD.gn +++ b/sample/BUILD.gn @@ -23,6 +23,7 @@ source_set("hello_unittests") { "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] + configs += [ "..:root_config_overrides" ] } shared_library("hello_shared") { @@ -32,6 +33,7 @@ shared_library("hello_shared") { ] defines = [ "OPENSCREEN_SHARED_IMPLEMENTATION" ] + public_configs = [ "..:root_config_overrides" ] } static_library("hello_static") { @@ -39,4 +41,5 @@ static_library("hello_static") { "hello_static.cc", "hello_static.h", ] + public_configs = [ "..:root_config_overrides" ] } diff --git a/third_party/abseil/BUILD.gn b/third_party/abseil/BUILD.gn index 59d600ce..1aa744bf 100644 --- a/third_party/abseil/BUILD.gn +++ b/third_party/abseil/BUILD.gn @@ -2,55 +2,66 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -config("abseil_config") { - include_dirs = [ "//third_party/abseil/src" ] -} +import("//build_overrides/build.gni") + +if (build_with_chromium) { + source_set("abseil") { + public_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + } +} else { + config("abseil_config") { + include_dirs = [ "//third_party/abseil/src" ] + } -source_set("abseil") { - cflags_cc = [ "-Wno-sign-compare" ] + source_set("abseil") { + cflags_cc = [ "-Wno-sign-compare" ] - sources = [ - "src/absl/base/attributes.h", - "src/absl/base/config.h", - "src/absl/base/internal/atomic_hook.h", - "src/absl/base/internal/identity.h", - "src/absl/base/internal/inline_variable.h", - "src/absl/base/internal/invoke.h", - "src/absl/base/internal/raw_logging.cc", - "src/absl/base/internal/raw_logging.h", - "src/absl/base/internal/throw_delegate.cc", - "src/absl/base/internal/throw_delegate.h", - "src/absl/base/log_severity.h", - "src/absl/base/macros.h", - "src/absl/base/optimization.h", - "src/absl/base/policy_checks.h", - "src/absl/base/port.h", - "src/absl/memory/memory.h", - "src/absl/meta/type_traits.h", - "src/absl/strings/ascii.cc", - "src/absl/strings/ascii.h", - "src/absl/strings/internal/charconv_bigint.cc", - "src/absl/strings/internal/charconv_bigint.h", - "src/absl/strings/internal/charconv_parse.cc", - "src/absl/strings/internal/charconv_parse.h", - "src/absl/strings/internal/memutil.cc", - "src/absl/strings/internal/memutil.h", - "src/absl/strings/charconv.cc", - "src/absl/strings/charconv.h", - "src/absl/strings/match.cc", - "src/absl/strings/match.h", - "src/absl/strings/numbers.cc", - "src/absl/strings/numbers.h", - "src/absl/strings/string_view.cc", - "src/absl/strings/string_view.h", - "src/absl/types/bad_optional_access.cc", - "src/absl/types/bad_optional_access.h", - "src/absl/types/optional.cc", - "src/absl/types/optional.h", - ] + sources = [ + "src/absl/base/attributes.h", + "src/absl/base/config.h", + "src/absl/base/internal/atomic_hook.h", + "src/absl/base/internal/identity.h", + "src/absl/base/internal/inline_variable.h", + "src/absl/base/internal/invoke.h", + "src/absl/base/internal/raw_logging.cc", + "src/absl/base/internal/raw_logging.h", + "src/absl/base/internal/throw_delegate.cc", + "src/absl/base/internal/throw_delegate.h", + "src/absl/base/log_severity.h", + "src/absl/base/macros.h", + "src/absl/base/optimization.h", + "src/absl/base/policy_checks.h", + "src/absl/base/port.h", + "src/absl/memory/memory.h", + "src/absl/meta/type_traits.h", + "src/absl/strings/ascii.cc", + "src/absl/strings/ascii.h", + "src/absl/strings/charconv.cc", + "src/absl/strings/charconv.h", + "src/absl/strings/internal/charconv_bigint.cc", + "src/absl/strings/internal/charconv_bigint.h", + "src/absl/strings/internal/charconv_parse.cc", + "src/absl/strings/internal/charconv_parse.h", + "src/absl/strings/internal/memutil.cc", + "src/absl/strings/internal/memutil.h", + "src/absl/strings/match.cc", + "src/absl/strings/match.h", + "src/absl/strings/numbers.cc", + "src/absl/strings/numbers.h", + "src/absl/strings/string_view.cc", + "src/absl/strings/string_view.h", + "src/absl/types/bad_optional_access.cc", + "src/absl/types/bad_optional_access.h", + "src/absl/types/optional.cc", + "src/absl/types/optional.h", + ] - configs -= [ "//build/config:symbol_visibility_hidden" ] - configs += [ "//build/config:symbol_visibility_default" ] - configs -= [ "//build:default_include_dirs" ] - public_configs = [ ":abseil_config" ] + configs -= [ "//build/config:symbol_visibility_hidden" ] + configs += [ "//build/config:symbol_visibility_default" ] + configs -= [ "//build:default_include_dirs" ] + public_configs = [ ":abseil_config" ] + } } diff --git a/third_party/googletest/BUILD.gn b/third_party/googletest/BUILD.gn index 729b0889..b7a718ea 100644 --- a/third_party/googletest/BUILD.gn +++ b/third_party/googletest/BUILD.gn @@ -2,64 +2,68 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -config("gtest_config") { - visibility = [ ":*" ] +import("//build_overrides/build.gni") - include_dirs = [ "src/googletest/include" ] +if (!build_with_chromium) { + config("gmock_config") { + visibility = [ ":*" ] - cflags_cc = [] - if (is_clang) { - cflags_cc += [ "-Wno-exit-time-destructors" ] + cflags_cc = [ + # issue/15: GMock does not support the override keyword. + "-Wno-inconsistent-missing-override", + ] + if (is_clang) { + cflags_cc += [ "-Wno-exit-time-destructors" ] + } + + include_dirs = [ "src/googlemock/include" ] } -} -config("gmock_config") { - visibility = [ ":*" ] + config("gtest_config") { + visibility = [ ":*" ] - cflags_cc = [ - # issue/15: GMock does not support the override keyword. - "-Wno-inconsistent-missing-override", - ] - if (is_clang) { - cflags_cc += [ "-Wno-exit-time-destructors" ] - } + include_dirs = [ "src/googletest/include" ] - include_dirs = [ "src/googlemock/include" ] -} + cflags_cc = [] + if (is_clang) { + cflags_cc += [ "-Wno-exit-time-destructors" ] + } + } -source_set("gtest") { - testonly = true - sources = [ - "src/googletest/include/gtest.h", - "src/googletest/src/gtest-all.cc", - ] + source_set("gmock") { + testonly = true + sources = [ + "src/googlemock/include/gmock.h", + "src/googlemock/src/gmock-all.cc", + ] - public_configs = [ ":gtest_config" ] + public_configs = [ + ":gmock_config", + ":gtest_config", + ] - include_dirs = [ "src/googletest" ] -} + include_dirs = [ "src/googlemock" ] + } -source_set("gtest_main") { - testonly = true - sources = [ - "src/googletest/src/gtest_main.cc", - ] - deps = [ - ":gtest", - ] -} + source_set("gtest") { + testonly = true + sources = [ + "src/googletest/include/gtest.h", + "src/googletest/src/gtest-all.cc", + ] -source_set("gmock") { - testonly = true - sources = [ - "src/googlemock/include/gmock.h", - "src/googlemock/src/gmock-all.cc", - ] + public_configs = [ ":gtest_config" ] - public_configs = [ - ":gmock_config", - ":gtest_config", - ] + include_dirs = [ "src/googletest" ] + } - include_dirs = [ "src/googlemock" ] + source_set("gtest_main") { + testonly = true + sources = [ + "src/googletest/src/gtest_main.cc", + ] + deps = [ + ":gtest", + ] + } } diff --git a/third_party/tinycbor/BUILD.gn b/third_party/tinycbor/BUILD.gn index f478381c..5127febb 100644 --- a/third_party/tinycbor/BUILD.gn +++ b/third_party/tinycbor/BUILD.gn @@ -2,6 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build_overrides/build.gni") + source_set("tinycbor") { sources = [ "src/src/cbor.h", @@ -14,8 +16,12 @@ source_set("tinycbor") { "src/src/utf8_p.h", ] - configs -= [ "//build/config:symbol_visibility_hidden" ] - configs += [ "//build/config:symbol_visibility_default" ] + config_path = "//build/config" + if (build_with_chromium) { + config_path += "/gcc" + } + configs -= [ "$config_path:symbol_visibility_hidden" ] + configs += [ "$config_path:symbol_visibility_default" ] defines = [ "WITHOUT_OPEN_MEMSTREAM" ] } diff --git a/tools/cddl/BUILD.gn b/tools/cddl/BUILD.gn index 32772ef3..01fe2546 100644 --- a/tools/cddl/BUILD.gn +++ b/tools/cddl/BUILD.gn @@ -14,7 +14,8 @@ executable("cddl") { ] deps = [ - "//platform", - "//third_party/abseil", + "../../platform", + "../../third_party/abseil", ] + configs += [ "../..:root_config_overrides" ] } diff --git a/tools/cddl/codegen.cc b/tools/cddl/codegen.cc index 2ed3bc52..80d788d7 100644 --- a/tools/cddl/codegen.cc +++ b/tools/cddl/codegen.cc @@ -11,7 +11,7 @@ #include <utility> #include <vector> -#include "third_party/abseil/src/absl/types/optional.h" +#include "absl/types/optional.h" // Convert '-' to '_' to use a CDDL identifier as a C identifier. std::string ToUnderscoreId(const std::string& x) { diff --git a/tools/cddl/parse.cc b/tools/cddl/parse.cc index 74c40c7d..f7ba3ded 100644 --- a/tools/cddl/parse.cc +++ b/tools/cddl/parse.cc @@ -12,9 +12,9 @@ #include <sstream> #include <vector> +#include "absl/strings/ascii.h" +#include "absl/strings/match.h" #include "platform/api/logging.h" -#include "third_party/abseil/src/absl/strings/ascii.h" -#include "third_party/abseil/src/absl/strings/match.h" static_assert(sizeof(absl::string_view::size_type) == sizeof(size_t), "We assume string_view's size_type is the same as size_t. If " diff --git a/tools/cddl/parse.h b/tools/cddl/parse.h index 92f6b7ce..d029c851 100644 --- a/tools/cddl/parse.h +++ b/tools/cddl/parse.h @@ -11,7 +11,7 @@ #include <string> #include <vector> -#include "third_party/abseil/src/absl/strings/string_view.h" +#include "absl/strings/string_view.h" struct AstNode { // These types all correspond to types in the grammar, which can be found in diff --git a/tools/cddl/sema.cc b/tools/cddl/sema.cc index 1b938482..61632c1f 100644 --- a/tools/cddl/sema.cc +++ b/tools/cddl/sema.cc @@ -14,9 +14,9 @@ #include <string> #include <vector> -#include "third_party/abseil/src/absl/strings/numbers.h" -#include "third_party/abseil/src/absl/strings/string_view.h" -#include "third_party/abseil/src/absl/types/optional.h" +#include "absl/strings/numbers.h" +#include "absl/strings/string_view.h" +#include "absl/types/optional.h" CddlType::CddlType() : map(nullptr), op(CddlType::Op::kNone), constraint_type(nullptr) {} diff --git a/tools/cddl/sema.h b/tools/cddl/sema.h index 38399f62..ee5b52da 100644 --- a/tools/cddl/sema.h +++ b/tools/cddl/sema.h @@ -12,7 +12,7 @@ #include <utility> #include <vector> -#include "third_party/abseil/src/absl/types/optional.h" +#include "absl/types/optional.h" #include "tools/cddl/parse.h" struct CddlGroup; |