# Abseil-specific compiler flags. See absl/copts.bzl for description. # DO NOT CHANGE THIS FILE WITHOUT THE CORRESPONDING CHANGE TO absl/copts.bzl list(APPEND GCC_FLAGS -Wall -Wextra -Wcast-qual -Wconversion-null -Wmissing-declarations -Woverlength-strings -Wpointer-arith -Wunused-local-typedefs -Wunused-result -Wvarargs -Wwrite-strings -Wno-sign-compare ) list(APPEND GCC_TEST_FLAGS -Wno-conversion-null -Wno-missing-declarations -Wno-sign-compare -Wno-unused-function -Wno-unused-parameter -Wno-unused-private-field ) list(APPEND LLVM_FLAGS -Wall -Wextra -Weverything -Wno-c++98-compat-pedantic -Wno-conversion -Wno-covered-switch-default -Wno-deprecated -Wno-disabled-macro-expansion -Wno-double-promotion -Wno-comma -Wno-extra-semi -Wno-packed -Wno-padded -Wno-sign-compare -Wno-float-conversion -Wno-float-equal -Wno-format-nonliteral -Wno-gcc-compat -Wno-global-constructors -Wno-exit-time-destructors -Wno-nested-anon-types -Wno-non-modular-include-in-module -Wno-old-style-cast -Wno-range-loop-analysis -Wno-reserved-id-macro -Wno-shorten-64-to-32 -Wno-switch-enum -Wno-thread-safety-negative -Wno-undef -Wno-unknown-warning-option -Wno-unreachable-code -Wno-unused-macros -Wno-weak-vtables -Wbitfield-enum-conversion -Wbool-conversion -Wconstant-conversion -Wenum-conversion -Wint-conversion -Wliteral-conversion -Wnon-literal-null-conversion -Wnull-conversion -Wobjc-literal-conversion -Wno-sign-conversion -Wstring-conversion ) list(APPEND LLVM_TEST_FLAGS -Wno-c99-extensions -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 -Wno-gnu-zero-variadic-macro-arguments ) list(APPEND MSVC_FLAGS /W3 /wd4005 /wd4018 /wd4068 /wd4180 /wd4244 /wd4267 /wd4800 /DNOMINMAX /DWIN32_LEAN_AND_MEAN /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS /D_ENABLE_EXTENDED_ALIGNED_STORAGE ) list(APPEND MSVC_TEST_FLAGS /wd4101 /wd4503 ) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(ABSL_DEFAULT_COPTS "${GCC_FLAGS}") set(ABSL_TEST_COPTS "${GCC_FLAGS};${GCC_TEST_FLAGS}") set(ABSL_EXCEPTIONS_FLAG "-fexceptions") elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") # MATCHES so we get both Clang and AppleClang set(ABSL_DEFAULT_COPTS "${LLVM_FLAGS}") set(ABSL_TEST_COPTS "${LLVM_FLAGS};${LLVM_TEST_FLAGS}") set(ABSL_EXCEPTIONS_FLAG "-fexceptions") elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") set(ABSL_DEFAULT_COPTS "${MSVC_FLAGS}") set(ABSL_TEST_COPTS "${MSVC_FLAGS};${MSVC_TEST_FLAGS}") set(ABSL_EXCEPTIONS_FLAG "/U_HAS_EXCEPTIONS;/D_HAS_EXCEPTIONS=1;/EHsc") else() message(WARNING "Unknown compiler: ${CMAKE_CXX_COMPILER}. Building with no default flags") set(ABSL_DEFAULT_COPTS "") set(ABSL_TEST_COPTS "") set(ABSL_EXCEPTIONS_FLAG "") endif() # This flag is used internally for Bazel builds and is kept here for consistency set(ABSL_EXCEPTIONS_FLAG_LINKOPTS "") if("${CMAKE_CXX_STANDARD}" EQUAL 98) message(FATAL_ERROR "Abseil requires at least C++11") elseif(NOT "${CMAKE_CXX_STANDARD}") message(STATUS "No CMAKE_CXX_STANDARD set, assuming 11") set(ABSL_CXX_STANDARD 11) else() set(ABSL_CXX_STANDARD "${CMAKE_CXX_STANDARD}") endif()