|
|
|
"""Abseil compiler options.
|
|
|
|
|
|
|
|
This is the source of truth for Abseil compiler options. To modify Abseil
|
|
|
|
compilation options:
|
|
|
|
|
|
|
|
(1) Edit the appropriate list in this file based on the platform the flag is
|
|
|
|
needed on.
|
|
|
|
(2) Run `<path_to_absl>/copts/generate_copts.py`.
|
|
|
|
|
|
|
|
The generated copts are consumed by configure_copts.bzl and
|
|
|
|
AbseilConfigureCopts.cmake.
|
|
|
|
"""
|
|
|
|
|
|
|
|
# /Wall with msvc includes unhelpful warnings such as C4711, C4710, ...
|
|
|
|
MSVC_BIG_WARNING_FLAGS = [
|
|
|
|
"/W3",
|
|
|
|
]
|
|
|
|
|
|
|
|
LLVM_TEST_DISABLE_WARNINGS_FLAGS = [
|
|
|
|
"-Wno-c99-extensions",
|
|
|
|
"-Wno-deprecated-declarations",
|
|
|
|
"-Wno-missing-noreturn",
|
|
|
|
"-Wno-missing-prototypes",
|
|
|
|
"-Wno-missing-variable-declarations",
|
|
|
|
"-Wno-null-conversion",
|
|
|
|
"-Wno-shadow",
|
|
|
|
"-Wno-shift-sign-overflow",
|
|
|
|
"-Wno-sign-compare",
|
|
|
|
"-Wno-unused-function",
|
|
|
|
"-Wno-unused-member-function",
|
|
|
|
"-Wno-unused-parameter",
|
|
|
|
"-Wno-unused-private-field",
|
|
|
|
"-Wno-unused-template",
|
|
|
|
"-Wno-used-but-marked-unused",
|
|
|
|
"-Wno-zero-as-null-pointer-constant",
|
|
|
|
# gtest depends on this GNU extension being offered.
|
|
|
|
"-Wno-gnu-zero-variadic-macro-arguments",
|
|
|
|
]
|
|
|
|
|
|
|
|
MSVC_DEFINES = [
|
|
|
|
"/DNOMINMAX", # Don't define min and max macros (windows.h)
|
|
|
|
# Don't bloat namespace with incompatible winsock versions.
|
|
|
|
"/DWIN32_LEAN_AND_MEAN",
|
|
|
|
# Don't warn about usage of insecure C functions.
|
|
|
|
"/D_CRT_SECURE_NO_WARNINGS",
|
|
|
|
"/D_SCL_SECURE_NO_WARNINGS",
|
|
|
|
# Introduced in VS 2017 15.8, allow overaligned types in aligned_storage
|
|
|
|
"/D_ENABLE_EXTENDED_ALIGNED_STORAGE",
|
|
|
|
]
|
|
|
|
|
|
|
|
COPT_VARS = {
|
|
|
|
"ABSL_GCC_FLAGS": [
|
|
|
|
"-Wall",
|
|
|
|
"-Wextra",
|
|
|
|
"-Wcast-qual",
|
|
|
|
"-Wconversion-null",
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"-Wformat-security",
|
|
|
|
"-Wmissing-declarations",
|
|
|
|
"-Woverlength-strings",
|
|
|
|
"-Wpointer-arith",
|
|
|
|
"-Wundef",
|
|
|
|
"-Wunused-local-typedefs",
|
|
|
|
"-Wunused-result",
|
|
|
|
"-Wvarargs",
|
|
|
|
"-Wvla", # variable-length array
|
|
|
|
"-Wwrite-strings",
|
|
|
|
# Don't define min and max macros (Build on Windows using gcc)
|
|
|
|
"-DNOMINMAX",
|
|
|
|
],
|
|
|
|
"ABSL_GCC_TEST_FLAGS": [
|
|
|
|
"-Wno-conversion-null",
|
|
|
|
"-Wno-deprecated-declarations",
|
|
|
|
"-Wno-missing-declarations",
|
|
|
|
"-Wno-sign-compare",
|
|
|
|
"-Wno-unused-function",
|
|
|
|
"-Wno-unused-parameter",
|
|
|
|
"-Wno-unused-private-field",
|
|
|
|
],
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"ABSL_LLVM_FLAGS": [
|
|
|
|
"-Wall",
|
|
|
|
"-Wextra",
|
|
|
|
"-Wcast-qual",
|
|
|
|
"-Wconversion",
|
|
|
|
"-Wfloat-overflow-conversion",
|
|
|
|
"-Wfloat-zero-conversion",
|
|
|
|
"-Wfor-loop-analysis",
|
|
|
|
"-Wformat-security",
|
|
|
|
"-Wgnu-redeclared-enum",
|
|
|
|
"-Winfinite-recursion",
|
|
|
|
"-Winvalid-constexpr",
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"-Wliteral-conversion",
|
|
|
|
"-Wmissing-declarations",
|
|
|
|
"-Woverlength-strings",
|
|
|
|
"-Wpointer-arith",
|
|
|
|
"-Wself-assign",
|
Export of internal Abseil changes
--
9fc37c11b9e46287acef00ee06ed9adcba54dd13 by Greg Falcon <gfalcon@google.com>:
Rename absl::hash_internal::HashState to absl::hash_internal::MixingHashState.
Before this change, we had two classes named HashState: absl::HashState, the public API used for type erasure, and absl::hash_internal::HashState, the internal concrete implementation ordinarily used.
The internal class used to be named `CityHashState`, but we renamed it to `HashState` it when we changed underlying hash implementation to wyhash. This inadvertent naming conflict made the code much harder to read, and this change intends to undo that.
PiperOrigin-RevId: 373481959
--
4aec55ffddebd085c239352a2e20721091f719a1 by Greg Falcon <gfalcon@google.com>:
Introduce absl::HashOf(), a convenience wrapper around absl::Hash that calculates hashes from the values of its arguments.
PiperOrigin-RevId: 373461406
--
86b5fd8db50bbc8bd0aa9258523527381fe0445d by Abseil Team <absl-team@google.com>:
Improve speed of BlockingCounter by making its most common path lock free.
With the new implementation, the fast path of BlockingCounter::DecrementCount()
is only a fetch_sub operation. This is most times much more efficient than the
previous implementation (full mutex lock/unlock). As a matter of fact, in most
actual usecases in practice, the waiter thread is already waiting on the
Wait() call when DecrementCount() is called, which makes Mutex::Unlock() take
the slow path as there's a waiter thread that it might need to wake up.
PiperOrigin-RevId: 373394164
--
65c876be5eac0cd32583ff8535ede4109d39cf3f by Martijn Vels <mvels@google.com>:
Move the 'sample copied cord' logic into MaybeTrackCord(),
This changes move the logic for selecting if a cord should remain being sampled from Cord to CordzInfo::MaybeTrackCord, and updates the documentation for the latter method.
PiperOrigin-RevId: 373363168
--
e84410bd0aada293a81dfb82656c952e209e21fb by Martijn Vels <mvels@google.com>:
Add check for the first call to cordz_should_profile() for each thread.
This prevents the first cord of a newly created thread to be always sampled, which is a 'bad' kind of determinism for sampling.
PiperOrigin-RevId: 373229768
--
bf09c589dc099ac8f4af780bf7e609c53c27574c by Samuel Benzaquen <sbenza@google.com>:
Refactor the Flags structure into an enum.
This gives us more control over the representation and allows for easier
merging during parsing.
PiperOrigin-RevId: 373163038
--
b947b0c51083b7b6508284b5d31819596c91729e by Derek Mauro <dmauro@google.com>:
Fixes warnings about shadowed variables
Fixes #956
PiperOrigin-RevId: 373158133
GitOrigin-RevId: 9fc37c11b9e46287acef00ee06ed9adcba54dd13
Change-Id: I91f35699f9bf439d1a870c6493946a310afe088c
4 years ago
|
|
|
"-Wshadow-all",
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"-Wstring-conversion",
|
|
|
|
"-Wtautological-overlap-compare",
|
|
|
|
"-Wundef",
|
|
|
|
"-Wuninitialized",
|
|
|
|
"-Wunreachable-code",
|
|
|
|
"-Wunused-comparison",
|
|
|
|
"-Wunused-local-typedefs",
|
|
|
|
"-Wunused-result",
|
|
|
|
"-Wvla",
|
|
|
|
"-Wwrite-strings",
|
|
|
|
# Warnings that are enabled by group warning flags like -Wall that we
|
|
|
|
# explicitly disable.
|
|
|
|
"-Wno-float-conversion",
|
|
|
|
"-Wno-implicit-float-conversion",
|
|
|
|
"-Wno-implicit-int-float-conversion",
|
|
|
|
"-Wno-implicit-int-conversion",
|
|
|
|
"-Wno-shorten-64-to-32",
|
|
|
|
"-Wno-sign-conversion",
|
|
|
|
# Don't define min and max macros (Build on Windows using clang)
|
|
|
|
"-DNOMINMAX",
|
|
|
|
],
|
|
|
|
"ABSL_LLVM_TEST_FLAGS":
|
|
|
|
LLVM_TEST_DISABLE_WARNINGS_FLAGS,
|
|
|
|
"ABSL_CLANG_CL_FLAGS":
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
(MSVC_BIG_WARNING_FLAGS + MSVC_DEFINES),
|
|
|
|
"ABSL_CLANG_CL_TEST_FLAGS":
|
|
|
|
LLVM_TEST_DISABLE_WARNINGS_FLAGS,
|
|
|
|
"ABSL_MSVC_FLAGS":
|
|
|
|
MSVC_BIG_WARNING_FLAGS + MSVC_DEFINES + [
|
|
|
|
# Increase the number of sections available in object files
|
|
|
|
"/bigobj",
|
|
|
|
"/wd4005", # macro-redefinition
|
|
|
|
"/wd4068", # unknown pragma
|
|
|
|
# qualifier applied to function type has no meaning; ignored
|
|
|
|
"/wd4180",
|
|
|
|
# conversion from 'type1' to 'type2', possible loss of data
|
|
|
|
"/wd4244",
|
|
|
|
# conversion from 'size_t' to 'type', possible loss of data
|
|
|
|
"/wd4267",
|
|
|
|
# The decorated name was longer than the compiler limit
|
|
|
|
"/wd4503",
|
|
|
|
# forcing value to bool 'true' or 'false' (performance warning)
|
|
|
|
"/wd4800",
|
|
|
|
],
|
|
|
|
"ABSL_MSVC_TEST_FLAGS": [
|
|
|
|
"/wd4018", # signed/unsigned mismatch
|
|
|
|
"/wd4101", # unreferenced local variable
|
|
|
|
"/wd4503", # decorated name length exceeded, name was truncated
|
|
|
|
"/wd4996", # use of deprecated symbol
|
|
|
|
"/DNOMINMAX", # disable the min() and max() macros from <windows.h>
|
|
|
|
],
|
|
|
|
"ABSL_MSVC_LINKOPTS": [
|
|
|
|
# Object file doesn't export any previously undefined symbols
|
|
|
|
"-ignore:4221",
|
|
|
|
],
|
|
|
|
# "HWAES" is an abbreviation for "hardware AES" (AES - Advanced Encryption
|
|
|
|
# Standard). These flags are used for detecting whether or not the target
|
|
|
|
# architecture has hardware support for AES instructions which can be used
|
|
|
|
# to improve performance of some random bit generators.
|
|
|
|
"ABSL_RANDOM_HWAES_ARM64_FLAGS": ["-march=armv8-a+crypto"],
|
|
|
|
"ABSL_RANDOM_HWAES_ARM32_FLAGS": ["-mfpu=neon"],
|
|
|
|
"ABSL_RANDOM_HWAES_X64_FLAGS": [
|
|
|
|
"-maes",
|
|
|
|
"-msse4.1",
|
|
|
|
],
|
|
|
|
"ABSL_RANDOM_HWAES_MSVC_X64_FLAGS": [],
|
|
|
|
}
|