From fb44166ff4c65c64acb9a008e0c8eb852461699b Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Mon, 26 Feb 2024 14:13:09 +0100 Subject: [PATCH] Treat external repositories as system headers for warning purposes. This should reduce the noise necessary to disable warnings. --- .bazelrc | 13 ++++++++++++- .github/actions/set-up/action.yaml | 11 +++++++++++ elisp/binary.cc | 16 ---------------- elisp/emacs.cc | 16 ---------------- elisp/launcher.cc | 16 ---------------- elisp/main.h | 16 ---------------- elisp/process.cc | 16 ---------------- elisp/process.h | 16 ---------------- elisp/proto/module.c | 15 --------------- elisp/test.cc | 16 ---------------- examples/ext/.bazelrc | 5 +++++ private/defs.bzl | 9 +++++++++ 12 files changed, 37 insertions(+), 128 deletions(-) diff --git a/.bazelrc b/.bazelrc index 0023bdb2..7f9ee17e 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,4 +1,4 @@ -# Copyright 2021, 2022, 2023 Google LLC +# Copyright 2021, 2022, 2023, 2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,10 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. +common --enable_platform_specific_config + # Run Pylint by default. build --aspects='//private:defs.bzl%check_python' build --output_groups='+check_python' +# The external_include_paths feature has to be specified in .bazelrc because it +# needs to apply to all compile actions in all repositories. +# TODO: File bug against Bazel to make this work as repository-level feature. +build --features=external_include_paths --host_features=external_include_paths + +# The next line shouldn’t be necessary. +# TODO: File bug against Bazel. +build:windows --copt=/external:W0 + import %workspace%/c-std.bazelrc try-import %workspace%/github.bazelrc diff --git a/.github/actions/set-up/action.yaml b/.github/actions/set-up/action.yaml index dbcb5725..c5ff58a9 100644 --- a/.github/actions/set-up/action.yaml +++ b/.github/actions/set-up/action.yaml @@ -129,3 +129,14 @@ runs: startsWith(inputs.bazel-version, '6.3.') || startsWith(inputs.bazel-version, '6.4.') ) + - name: Remove unsupported options + shell: bash + # --host_features was introduced in Bazel 6.1. + run: | + set -efuC + for file in .bazelrc examples/ext/.bazelrc; do + sed -- 's/--host_features=[_[:alnum:]]*//g' "${file}" > "${file}.temp" + mv -- "${file}.temp" "${file}" + done + if: >- + startsWith(inputs.bazel-version, '6.0.') diff --git a/elisp/binary.cc b/elisp/binary.cc index 53206d81..467136ca 100644 --- a/elisp/binary.cc +++ b/elisp/binary.cc @@ -16,24 +16,8 @@ #include -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/status/statusor.h" #include "absl/types/span.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #include "elisp/platform.h" #include "elisp/process.h" diff --git a/elisp/emacs.cc b/elisp/emacs.cc index 924fbf13..52b617b9 100644 --- a/elisp/emacs.cc +++ b/elisp/emacs.cc @@ -16,24 +16,8 @@ #include -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/status/statusor.h" #include "absl/types/span.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #include "elisp/platform.h" #include "elisp/process.h" diff --git a/elisp/launcher.cc b/elisp/launcher.cc index bcaaaf51..9f8082a0 100644 --- a/elisp/launcher.cc +++ b/elisp/launcher.cc @@ -14,28 +14,12 @@ #include -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/container/fixed_array.h" #include "absl/log/log.h" #include "absl/meta/type_traits.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/span.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #include "elisp/platform.h" #include "elisp/main.h" diff --git a/elisp/main.h b/elisp/main.h index f97ffa62..4bbbb683 100644 --- a/elisp/main.h +++ b/elisp/main.h @@ -21,24 +21,8 @@ #include -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/status/statusor.h" #include "absl/types/span.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #include "elisp/platform.h" diff --git a/elisp/process.cc b/elisp/process.cc index 14bc60eb..89dab58b 100644 --- a/elisp/process.cc +++ b/elisp/process.cc @@ -52,16 +52,6 @@ #include #include -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/algorithm/container.h" #include "absl/base/attributes.h" #include "absl/base/nullability.h" @@ -78,12 +68,6 @@ #include "absl/strings/str_join.h" #include "absl/types/span.h" #include "tools/cpp/runfiles/runfiles.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #ifdef __APPLE__ # include // for _NSGetEnviron diff --git a/elisp/process.h b/elisp/process.h index 10a5c2e4..d2010609 100644 --- a/elisp/process.h +++ b/elisp/process.h @@ -22,24 +22,8 @@ #include #include // IWYU pragma: keep -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/status/statusor.h" #include "absl/types/span.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #include "elisp/platform.h" diff --git a/elisp/proto/module.c b/elisp/proto/module.c index 98d332e4..51dfc3c0 100644 --- a/elisp/proto/module.c +++ b/elisp/proto/module.c @@ -131,15 +131,6 @@ # error Emacs module header too old #endif -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -# pragma warning(disable : 4090 4244 4267 4334) -#endif #include "absl/base/attributes.h" #include "absl/base/config.h" #include "google/protobuf/any.upb.h" @@ -165,12 +156,6 @@ #include "upb/util/required_fields.h" #include "upb/wire/decode.h" #include "upb/wire/encode.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif /// Global variables diff --git a/elisp/test.cc b/elisp/test.cc index 4f158477..20157e93 100644 --- a/elisp/test.cc +++ b/elisp/test.cc @@ -16,24 +16,8 @@ #include -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wpedantic" -# pragma GCC diagnostic ignored "-Wconversion" -# pragma GCC diagnostic ignored "-Wsign-conversion" -# pragma GCC diagnostic ignored "-Woverflow" -#endif -#ifdef _MSC_VER -# pragma warning(push, 3) -#endif #include "absl/status/statusor.h" #include "absl/types/span.h" -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif -#ifdef _MSC_VER -# pragma warning(pop) -#endif #include "elisp/platform.h" #include "elisp/process.h" diff --git a/examples/ext/.bazelrc b/examples/ext/.bazelrc index 02603282..c5646948 100644 --- a/examples/ext/.bazelrc +++ b/examples/ext/.bazelrc @@ -12,6 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +# The external_include_paths feature has to be specified in .bazelrc because it +# needs to apply to all compile actions in all repositories. +# TODO: File bug against Bazel to make this work as repository-level feature. +build --features=external_include_paths --host_features=external_include_paths + import %workspace%/../../c-std.bazelrc try-import %workspace%/../../github.bazelrc diff --git a/private/defs.bzl b/private/defs.bzl index 044b94c5..0cf5e6e1 100644 --- a/private/defs.bzl +++ b/private/defs.bzl @@ -440,6 +440,15 @@ COPTS = select({ "-pedantic", "-pedantic-errors", ], +}) + select({ + Label("//private:clang"): [ + # This shouldn’t be needed, but the external_include_paths feature + # doesn’t work on macOS. + # TODO: File bug against Bazel. + "--system-header-prefix=absl/", + "--system-header-prefix=upb/", + ], + Label("//conditions:default"): [], }) CXXOPTS = select({