|
|
|
"""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",
|
|
|
|
"-Wshadow",
|
|
|
|
"-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": [],
|
|
|
|
}
|