summaryrefslogtreecommitdiff
path: root/CMake/AbseilConfigureCopts.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMake/AbseilConfigureCopts.cmake')
-rw-r--r--CMake/AbseilConfigureCopts.cmake145
1 files changed, 145 insertions, 0 deletions
diff --git a/CMake/AbseilConfigureCopts.cmake b/CMake/AbseilConfigureCopts.cmake
new file mode 100644
index 00000000..96e0390b
--- /dev/null
+++ b/CMake/AbseilConfigureCopts.cmake
@@ -0,0 +1,145 @@
+# 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()