@@ -27,10 +27,12 @@ ENDIF()
2727
2828# We use the LOCATION target property (CMP0026)
2929# and get_target_property() for non-existent targets (CMP0045)
30+ # and INSTALL_NAME_DIR (CMP0042)
3031IF (CMAKE_VERSION VERSION_EQUAL "3.0.0" OR
3132 CMAKE_VERSION VERSION_GREATER "3.0.0" )
3233 CMAKE_POLICY (SET CMP0026 OLD )
3334 CMAKE_POLICY (SET CMP0045 OLD )
35+ CMAKE_POLICY (SET CMP0042 OLD )
3436ENDIF ()
3537
3638MESSAGE (STATUS "Running cmake version ${CMAKE_VERSION} " )
@@ -74,15 +76,8 @@ SET(BUILDTYPE_DOCSTRING
7476 "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
7577 CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel" )
7678
77- # Possibly temporary fix: Clang on 32 bit causes non-debug server to crash
78- IF (CMAKE_OSX_ARCHITECTURES MATCHES "i386" )
79- SET (CMAKE_CXX_COMPILER g++)
80- ENDIF ()
81-
8279IF (WITH_DEBUG)
8380 SET (CMAKE_BUILD_TYPE "Debug" CACHE STRING ${BUILDTYPE_DOCSTRING} FORCE )
84- SET (MYSQL_MAINTAINER_MODE ON CACHE BOOL
85- "MySQL maintainer-specific development environment" )
8681 IF (UNIX AND NOT APPLE )
8782 # Compiling with PIC speeds up embedded build, on PIC sensitive systems
8883 # Predefine it to ON, in case user chooses to build embedded.
@@ -112,6 +107,15 @@ ELSE()
112107ENDIF ()
113108PROJECT (${MYSQL_PROJECT_NAME} )
114109
110+ # Maintainer mode is default on only for Linux debug builds using GCC/G++
111+ IF (CMAKE_BUILD_TYPE MATCHES "Debug" OR WITH_DEBUG)
112+ IF (CMAKE_SYSTEM_NAME MATCHES "Linux" AND
113+ CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX)
114+ SET (MYSQL_MAINTAINER_MODE ON CACHE BOOL
115+ "MySQL maintainer-specific development environment" )
116+ ENDIF ()
117+ ENDIF ()
118+
115119OPTION (WITH_DEFAULT_COMPILER_OPTIONS
116120 "Use flags from cmake/build_configurations/compiler_options.cmake"
117121 ON )
@@ -168,31 +172,6 @@ IF(WITH_DEFAULT_FEATURE_SET)
168172 INCLUDE (${CMAKE_SOURCE_DIR} /cmake/build_configurations/feature_set.cmake )
169173ENDIF ()
170174
171- #
172- # Control aspects of the development environment which are
173- # specific to MySQL maintainers and developers.
174- #
175- INCLUDE (maintainer )
176-
177- OPTION (MYSQL_MAINTAINER_MODE
178- "MySQL maintainer-specific development environment" OFF )
179-
180- # Whether the maintainer mode compiler options should be enabled.
181- IF (MYSQL_MAINTAINER_MODE)
182- IF (CMAKE_C_COMPILER_ID MATCHES "GNU" )
183- SET_MYSQL_MAINTAINER_GNU_C_OPTIONS ()
184- ENDIF ()
185- IF (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
186- SET_MYSQL_MAINTAINER_GNU_CXX_OPTIONS ()
187- ENDIF ()
188- IF (CMAKE_C_COMPILER_ID MATCHES "Intel" )
189- SET_MYSQL_MAINTAINER_INTEL_C_OPTIONS ()
190- ENDIF ()
191- IF (CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
192- SET_MYSQL_MAINTAINER_INTEL_CXX_OPTIONS ()
193- ENDIF ()
194- ENDIF ()
195-
196175# Add macros
197176INCLUDE (character_sets )
198177INCLUDE (cpu_info )
@@ -436,21 +415,10 @@ MYSQL_CHECK_LIBEVENT()
436415# Why doesn't these flags affect the entire build?
437416# Because things may already have been included with ADD_SUBDIRECTORY
438417#
439- IF (MYSQL_MAINTAINER_MODE)
440- # Set compiler flags required under maintainer mode.
441- MESSAGE (STATUS "C warning options: ${MY_MAINTAINER_C_WARNINGS} " )
442- SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_MAINTAINER_C_WARNINGS} " )
443- MESSAGE (STATUS "C++ warning options: ${MY_MAINTAINER_CXX_WARNINGS} " )
444- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_MAINTAINER_CXX_WARNINGS} " )
445- ENDIF ()
446-
447- IF (CMAKE_COMPILER_IS_GNUCXX)
448- STRING (REGEX MATCH "-Werror"
449- BUILD_WITH_WERROR ${CMAKE_CXX_FLAGS} )
450- IF (BUILD_WITH_WERROR)
451- SET ("COMPILE_FLAG_WERROR" 1)
452- ENDIF ()
453- ENDIF ()
418+ OPTION (MYSQL_MAINTAINER_MODE
419+ "MySQL maintainer-specific development environment" OFF )
420+
421+ INCLUDE (maintainer )
454422
455423IF (WITH_UNIT_TESTS)
456424 ENABLE_TESTING ()
@@ -599,3 +567,37 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
599567ENDIF ()
600568
601569INCLUDE (CPack )
570+
571+ # C compiler flags consist of:
572+ # CPPFLAGS Taken from environment, see above.
573+ # ADD_DEFINITIONS In each individual CMakeLists.txt
574+ # CMAKE_C_FLAGS From command line.
575+ # We extend these in maintainer.cmake
576+ # ENV{CFLAGS} From environment, but environment is ignored if
577+ # CMAKE_C_FLAGS is also given on command line
578+ # CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}
579+ # We extend these in compiler_options.cmake
580+ #
581+ # Note that CMakeCache.txt contains cmake builtins for these variables,
582+ # *not* the values that will actually be used:
583+
584+ IF (CMAKE_GENERATOR MATCHES "Makefiles" )
585+ MESSAGE (STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE} " )
586+ ENDIF ()
587+ GET_PROPERTY (cwd_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS )
588+ MESSAGE (STATUS "COMPILE_DEFINITIONS: ${cwd_definitions} " )
589+ MESSAGE (STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS} " )
590+ MESSAGE (STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS} " )
591+ IF (CMAKE_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Makefiles" )
592+ STRING (TOUPPER "${CMAKE_BUILD_TYPE} " CMAKEBT)
593+ MESSAGE (STATUS "CMAKE_C_FLAGS_${CMAKEBT} : ${CMAKE_C_FLAGS_${CMAKEBT} }" )
594+ MESSAGE (STATUS "CMAKE_CXX_FLAGS_${CMAKEBT} : ${CMAKE_CXX_FLAGS_${CMAKEBT} }" )
595+ ENDIF ()
596+ IF (NOT CMAKE_GENERATOR MATCHES "Makefiles" )
597+ MESSAGE (STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG} " )
598+ MESSAGE (STATUS "CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG} " )
599+ MESSAGE (STATUS
600+ "CMAKE_C_FLAGS_RELWITHDEBINFO: ${CMAKE_C_FLAGS_RELWITHDEBINFO} " )
601+ MESSAGE (STATUS
602+ "CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} " )
603+ ENDIF ()
0 commit comments