diff options
Diffstat (limited to 'storage/innobase/innodb.cmake')
-rw-r--r-- | storage/innobase/innodb.cmake | 86 |
1 files changed, 9 insertions, 77 deletions
diff --git a/storage/innobase/innodb.cmake b/storage/innobase/innodb.cmake index 07ed7ed67ab..385e87f828e 100644 --- a/storage/innobase/innodb.cmake +++ b/storage/innobase/innodb.cmake @@ -1,5 +1,5 @@ # Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved. -# Copyright (c) 2017, 2019, MariaDB Corporation. +# Copyright (c) 2017, 2020, MariaDB Corporation. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -82,31 +82,6 @@ IF(INNODB_COMPILER_HINTS) ADD_DEFINITIONS("-DCOMPILER_HINTS") ENDIF() -SET(MUTEXTYPE "event" CACHE STRING "Mutex type: event, sys or futex") - -IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU") -# After: WL#5825 Using C++ Standard Library with MySQL code -# we no longer use -fno-exceptions -# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") - -# Add -Wconversion if compiling with GCC -## As of Mar 15 2011 this flag causes 3573+ warnings. If you are reading this -## please fix them and enable the following code: -#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion") - - IF (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "i386" AND - CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6) - INCLUDE(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-fno-builtin-memcmp" HAVE_NO_BUILTIN_MEMCMP) - IF (HAVE_NO_BUILTIN_MEMCMP) - # Work around http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052 - SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/rem/rem0cmp.cc - PROPERTIES COMPILE_FLAGS -fno-builtin-memcmp) - ENDIF() - ENDIF() -ENDIF() - # Enable InnoDB's UNIV_DEBUG in debug builds SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DUNIV_DEBUG") @@ -140,54 +115,21 @@ IF(HAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE) ADD_DEFINITIONS(-DHAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE=1) ENDIF() +IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR + CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion -Wno-sign-conversion") + SET_SOURCE_FILES_PROPERTIES(fts/fts0pars.cc + PROPERTIES COMPILE_FLAGS -Wno-conversion) +ENDIF() + IF(NOT MSVC) # Work around MDEV-18417, MDEV-18656, MDEV-18417 IF(WITH_ASAN AND CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "6.0.0") SET_SOURCE_FILES_PROPERTIES(trx/trx0rec.cc PROPERTIES COMPILE_FLAGS -O1) ENDIF() - -# Only use futexes on Linux if GCC atomics are available -IF(NOT MSVC AND NOT CMAKE_CROSSCOMPILING) - CHECK_C_SOURCE_RUNS( - " - #include <stdio.h> - #include <unistd.h> - #include <errno.h> - #include <assert.h> - #include <linux/futex.h> - #include <unistd.h> - #include <sys/syscall.h> - - int futex_wait(int* futex, int v) { - return(syscall(SYS_futex, futex, FUTEX_WAIT_PRIVATE, v, NULL, NULL, 0)); - } - - int futex_signal(int* futex) { - return(syscall(SYS_futex, futex, FUTEX_WAKE, 1, NULL, NULL, 0)); - } - - int main() { - int ret; - int m = 1; - - /* It is setup to fail and return EWOULDBLOCK. */ - ret = futex_wait(&m, 0); - assert(ret == -1 && errno == EWOULDBLOCK); - /* Shouldn't wake up any threads. */ - assert(futex_signal(&m) == 0); - - return(0); - }" - HAVE_IB_LINUX_FUTEX) -ENDIF() - -IF(HAVE_IB_LINUX_FUTEX) - ADD_DEFINITIONS(-DHAVE_IB_LINUX_FUTEX=1) ENDIF() -ENDIF(NOT MSVC) - CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) CHECK_CXX_SOURCE_COMPILES("struct t1{ int a; char *b; }; struct t1 c= { .a=1, .b=0 }; main() { }" HAVE_C99_INITIALIZERS) @@ -199,7 +141,7 @@ SET(MUTEXTYPE "event" CACHE STRING "Mutex type: event, sys or futex") IF(MUTEXTYPE MATCHES "event") ADD_DEFINITIONS(-DMUTEX_EVENT) -ELSEIF(MUTEXTYPE MATCHES "futex" AND DEFINED HAVE_IB_LINUX_FUTEX) +ELSEIF(MUTEXTYPE MATCHES "futex" AND CMAKE_SYSTEM_NAME STREQUAL "Linux") ADD_DEFINITIONS(-DMUTEX_FUTEX) ELSE() ADD_DEFINITIONS(-DMUTEX_SYS) @@ -225,16 +167,6 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "SunPro" PROPERTIES COMPILE_FLAGS -xO3) ENDIF() -# Avoid generating Hardware Capabilities due to crc32 instructions -IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") - MY_CHECK_CXX_COMPILER_FLAG("-Wa,-nH") - IF(have_CXX__Wa__nH) - ADD_COMPILE_FLAGS( - ut/ut0crc32.cc - COMPILE_FLAGS "-Wa,-nH" - ) - ENDIF() -ENDIF() IF(MSVC) # Avoid "unreferenced label" warning in generated file |