summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2018-02-08 19:06:25 +0400
committerAlexander Barkov <bar@mariadb.org>2018-02-08 19:06:25 +0400
commit3cad31f2a758f797ef0acac5625d0e007ecbce93 (patch)
tree73c054636c4858b2a51eddf7eaa653746d67524e /cmake
parent560b9895d413bdfedda0a0ca871a635858990c05 (diff)
parent5c057b3fef3aa92cfadbd63043799b430132a494 (diff)
downloadmariadb-git-3cad31f2a758f797ef0acac5625d0e007ecbce93.tar.gz
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Diffstat (limited to 'cmake')
-rw-r--r--cmake/build_configurations/mysql_release.cmake1
-rw-r--r--cmake/check_compiler_flag.cmake14
-rw-r--r--cmake/maintainer.cmake65
3 files changed, 30 insertions, 50 deletions
diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake
index 8221029a2d6..c3c42efa7a0 100644
--- a/cmake/build_configurations/mysql_release.cmake
+++ b/cmake/build_configurations/mysql_release.cmake
@@ -1,4 +1,5 @@
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, 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
diff --git a/cmake/check_compiler_flag.cmake b/cmake/check_compiler_flag.cmake
index 6b29ac5ab6b..ab5a15f8457 100644
--- a/cmake/check_compiler_flag.cmake
+++ b/cmake/check_compiler_flag.cmake
@@ -32,25 +32,25 @@ MACRO (MY_CHECK_CXX_COMPILER_FLAG flag)
SET(CMAKE_REQUIRED_FLAGS "${SAVE_CMAKE_REQUIRED_FLAGS}")
ENDMACRO()
-FUNCTION(MY_CHECK_AND_SET_COMPILER_FLAG flag)
+FUNCTION(MY_CHECK_AND_SET_COMPILER_FLAG flag_to_set)
# At the moment this is gcc-only.
# Let's avoid expensive compiler tests on Windows:
IF(WIN32)
RETURN()
ENDIF()
- MY_CHECK_C_COMPILER_FLAG(${flag})
- MY_CHECK_CXX_COMPILER_FLAG(${flag})
- STRING(REGEX REPLACE "[-,= +]" "_" result "${flag}")
+ STRING(REGEX REPLACE "^-Wno-" "-W" flag_to_check ${flag_to_set})
+ MY_CHECK_C_COMPILER_FLAG(${flag_to_check})
+ MY_CHECK_CXX_COMPILER_FLAG(${flag_to_check})
+ STRING(REGEX REPLACE "[-,= +]" "_" result "${flag_to_check}")
FOREACH(lang C CXX)
IF (have_${lang}_${result})
IF(ARGN)
FOREACH(type ${ARGN})
- SET(CMAKE_${lang}_FLAGS_${type} "${CMAKE_${lang}_FLAGS_${type}} ${flag}" PARENT_SCOPE)
+ SET(CMAKE_${lang}_FLAGS_${type} "${CMAKE_${lang}_FLAGS_${type}} ${flag_to_set}" PARENT_SCOPE)
ENDFOREACH()
ELSE()
- SET(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} ${flag}" PARENT_SCOPE)
+ SET(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} ${flag_to_set}" PARENT_SCOPE)
ENDIF()
ENDIF()
ENDFOREACH()
ENDFUNCTION()
-
diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake
index 77f55837fdb..6993bae3975 100644
--- a/cmake/maintainer.cmake
+++ b/cmake/maintainer.cmake
@@ -14,54 +14,33 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Common warning flags for GCC, G++, Clang and Clang++
-SET(MY_WARNING_FLAGS "-Wall -Wextra -Wformat-security -Wno-init-self")
-MY_CHECK_C_COMPILER_FLAG("-Wvla") # Requires GCC 4.3+ or Clang
-IF(have_C__Wvla)
- SET(MY_WARNING_FLAGS "${MY_WARNING_FLAGS} -Wvla")
-ENDIF()
-
-MY_CHECK_C_COMPILER_FLAG("-Wno-format-truncation")
-IF(HAVE_C__Wno_format_truncation)
- SET(MY_WARNING_FLAGS "${MY_WARNING_FLAGS} -Wno-format-truncation")
-ENDIF()
-
-# Common warning flags for GCC and Clang
-SET(MY_C_WARNING_FLAGS
- "${MY_WARNING_FLAGS} -Wwrite-strings -Wdeclaration-after-statement")
-
-# Common warning flags for G++ and Clang++
-SET(MY_CXX_WARNING_FLAGS
- "${MY_WARNING_FLAGS} -Woverloaded-virtual -Wno-unused-parameter")
-
-# Extra warning flags for Clang++
-IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- SET(MY_CXX_WARNING_FLAGS
- "${MY_CXX_WARNING_FLAGS} -Wno-null-conversion -Wno-unused-private-field")
-ENDIF()
-
-# Turn on Werror (warning => error) when using maintainer mode.
-IF(MYSQL_MAINTAINER_MODE MATCHES "ERR")
- SET(MY_C_WARNING_FLAGS "${MY_C_WARNING_FLAGS} -DFORCE_INIT_OF_VARS -Werror")
- SET(MY_CXX_WARNING_FLAGS "${MY_CXX_WARNING_FLAGS} -DFORCE_INIT_OF_VARS -Werror")
-ENDIF()
-
-# Set warning flags for GCC/Clang
-IF(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
- SET(MY_MAINTAINER_C_WARNINGS "${MY_C_WARNING_FLAGS}")
-ENDIF()
-# Set warning flags for G++/Clang++
-IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
- SET(MY_MAINTAINER_CXX_WARNINGS "${MY_CXX_WARNING_FLAGS} -Wnon-virtual-dtor")
-ENDIF()
+SET(MY_WARNING_FLAGS
+ -Wall
+ -Wdeclaration-after-statement
+ -Wextra
+ -Wformat-security
+ -Wno-format-truncation
+ -Wno-init-self
+ -Wno-nonnull-compare
+ -Wno-null-conversion
+ -Wno-unused-parameter
+ -Wno-unused-private-field
+ -Woverloaded-virtual
+ -Wnon-virtual-dtor
+ -Wvla
+ -Wwrite-strings
+ )
IF(MYSQL_MAINTAINER_MODE MATCHES "ON")
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_MAINTAINER_C_WARNINGS}")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_MAINTAINER_CXX_WARNINGS}")
+ SET(WHERE)
ELSEIF(MYSQL_MAINTAINER_MODE MATCHES "AUTO")
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${MY_MAINTAINER_C_WARNINGS}")
- SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${MY_MAINTAINER_CXX_WARNINGS}")
+ SET(WHERE DEBUG)
ENDIF()
+FOREACH(F ${MY_WARNING_FLAGS})
+ MY_CHECK_AND_SET_COMPILER_FLAG(${F} ${WHERE})
+ENDFOREACH()
+
IF(CMAKE_C_COMPILER_ID MATCHES "GNU")
STRING(REPLACE " -E " " -E -dDI " CMAKE_C_CREATE_PREPROCESSED_SOURCE ${CMAKE_C_CREATE_PREPROCESSED_SOURCE})
ENDIF()