summaryrefslogtreecommitdiff
path: root/storage/innobase/innodb.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/innodb.cmake')
-rw-r--r--storage/innobase/innodb.cmake86
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