# Copyright (c) 2024, Oracle and/or its affiliates. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License, version 2.0, # as published by the Free Software Foundation. # # This program is designed to work with certain software (including # but not limited to OpenSSL) that is licensed under separate terms, # as designated in a particular file or component or in included license # documentation. The authors of MySQL hereby grant you an additional # permission to link the program and your derivative works with the # separately licensed software that they have either included with # the program or referenced in the documentation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA DISABLE_MISSING_PROFILE_WARNING() MY_CHECK_CXX_COMPILER_WARNING("-Warray-bounds" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() MY_CHECK_CXX_COMPILER_WARNING("-Wchar-subscripts" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() MY_CHECK_CXX_COMPILER_WARNING("-Wstringop-overflow" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() MY_CHECK_CXX_COMPILER_WARNING("-Wmissing-profile" HAS_MISSING_PROFILE) IF(HAS_MISSING_PROFILE) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_MISSING_PROFILE}") ENDIF() MY_CHECK_CXX_COMPILER_WARNING("-Wchar-subscripts" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() MY_CHECK_CXX_COMPILER_WARNING("-Wunused-lambda-capture" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() MY_CHECK_CXX_COMPILER_WARNING("-Wzero-as-null-pointer-constant" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() # absl/crc/internal/crc_memcpy_x86_64.cc:91:34: # warning: ignoring attributes on template argument __m128i [-Wignored-attributes] # 91 | std::array<__m128i, vec_regions> data MY_CHECK_CXX_COMPILER_WARNING("-Wignored-attributes" HAS_WARN_FLAG) IF(HAS_WARN_FLAG) STRING_APPEND(CMAKE_CXX_FLAGS " ${HAS_WARN_FLAG}") ENDIF() IF(FREEBSD) # Missing posix_memalign() ADD_DEFINITIONS(-D_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) ENDIF() SET(ABSL_PROPAGATE_CXX_STD ON) # The Clang build fails for shared protobuf/abseil builds: # invalid application of 'alignof' to an incomplete type 'mapped_type' # note: due to ..... being dllexported IF(MSVC AND NOT WIN32_CLANG) SET(absl_BUILD_SHARED_LIBS ON) SET(absl_BUILD_SHARED_LIBS ON CACHE INTERNAL "" FORCE) ENDIF() IF(LINUX) SET(absl_BUILD_SHARED_LIBS ON) ENDIF() IF(MSVC AND (FPROFILE_GENERATE OR FPROFILE_USE)) # The use of CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS is incompatible with # the MSVC /GL compiler option which is added by fprofile.cmake, # along with the linker flags /LTCG, /GENPROFILE and /USEPROFILE STRING(REPLACE "/GL" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") STRING(REPLACE "/GENPROFILE" "" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") STRING(REPLACE "/USEPROFILE" "" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") STRING(REPLACE "/LTCG" "" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") ENDIF() # Suppress linker warnings generated as a consequence of combining # CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS with __declspec(dllexport) IF(MSVC) STRING(APPEND CMAKE_SHARED_LINKER_FLAGS " /IGNORE:4197") ENDIF() MACRO(do_not_install) ENDMACRO() # Avoid ODR violations when running protoc for grpc. # This broke group replication. IF(UNIX) # STRING_APPEND(CMAKE_C_FLAGS " -fvisibility=hidden") # STRING_APPEND(CMAKE_CXX_FLAGS " -fvisibility=hidden") ENDIF() ADD_SUBDIRECTORY(abseil-cpp-20230802.1)