@@ -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} " )
@@ -73,11 +75,9 @@ ENDIF()
7375SET (BUILDTYPE_DOCSTRING
7476 "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
7577 CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel" )
76-
78+
7779IF (WITH_DEBUG)
7880 SET (CMAKE_BUILD_TYPE "Debug" CACHE STRING ${BUILDTYPE_DOCSTRING} FORCE )
79- SET (MYSQL_MAINTAINER_MODE ON CACHE BOOL
80- "MySQL maintainer-specific development environment" )
8181 IF (UNIX AND NOT APPLE )
8282 # Compiling with PIC speeds up embedded build, on PIC sensitive systems
8383 # Predefine it to ON, in case user chooses to build embedded.
@@ -107,6 +107,15 @@ ELSE()
107107ENDIF ()
108108PROJECT (${MYSQL_PROJECT_NAME} )
109109
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+
110119IF (BUILD_CONFIG)
111120 INCLUDE (
112121 ${CMAKE_SOURCE_DIR} /cmake/build_configurations/${BUILD_CONFIG}.cmake )
@@ -130,38 +139,12 @@ FOREACH(_base
130139ENDFOREACH ()
131140
132141
133-
134142# Following autotools tradition, add preprocessor definitions
135143# specified in environment variable CPPFLAGS
136144IF (DEFINED ENV{CPPFLAGS})
137145 ADD_DEFINITIONS ($ENV{CPPFLAGS} )
138146ENDIF ()
139147
140- #
141- # Control aspects of the development environment which are
142- # specific to MySQL maintainers and developers.
143- #
144- INCLUDE (maintainer )
145-
146- OPTION (MYSQL_MAINTAINER_MODE
147- "MySQL maintainer-specific development environment" OFF )
148-
149- # Whether the maintainer mode compiler options should be enabled.
150- IF (MYSQL_MAINTAINER_MODE)
151- IF (CMAKE_C_COMPILER_ID MATCHES "GNU" )
152- SET_MYSQL_MAINTAINER_GNU_C_OPTIONS ()
153- ENDIF ()
154- IF (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
155- SET_MYSQL_MAINTAINER_GNU_CXX_OPTIONS ()
156- ENDIF ()
157- IF (CMAKE_C_COMPILER_ID MATCHES "Intel" )
158- SET_MYSQL_MAINTAINER_INTEL_C_OPTIONS ()
159- ENDIF ()
160- IF (CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
161- SET_MYSQL_MAINTAINER_INTEL_CXX_OPTIONS ()
162- ENDIF ()
163- ENDIF ()
164-
165148# Add macros
166149INCLUDE (character_sets )
167150INCLUDE (zlib )
@@ -192,7 +175,6 @@ OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON)
192175MARK_AS_ADVANCED (CYBOZU BACKUP_TEST WITHOUT_SERVER DISABLE_SHARED )
193176
194177
195-
196178include (CheckCSourceCompiles )
197179include (CheckCXXSourceCompiles )
198180# We need some extra FAIL_REGEX patterns
@@ -373,13 +355,13 @@ MYSQL_CHECK_READLINE()
373355# not run with the warning options as to not perturb fragile checks
374356# (i.e. do not make warnings into errors).
375357#
376- IF (MYSQL_MAINTAINER_MODE)
377- # Set compiler flags required under maintainer mode.
378- MESSAGE ( STATUS "C warning options: ${MY_MAINTAINER_C_WARNINGS} " )
379- SET ( CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} ${MY_MAINTAINER_C_WARNINGS} " )
380- MESSAGE ( STATUS "C++ warning options: ${MY_MAINTAINER_CXX_WARNINGS} " )
381- SET ( CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} ${MY_MAINTAINER_CXX_WARNINGS} " )
382- ENDIF ( )
358+ # Why doesn't these flags affect the entire build?
359+ # Because things may already have been included with ADD_SUBDIRECTORY
360+ #
361+ OPTION ( MYSQL_MAINTAINER_MODE
362+ "MySQL maintainer-specific development environment" OFF )
363+
364+ INCLUDE ( maintainer )
383365
384366IF (NOT WITHOUT_SERVER)
385367SET (MYSQLD_STATIC_PLUGIN_LIBS "" CACHE INTERNAL "" )
@@ -395,7 +377,6 @@ ADD_SUBDIRECTORY(regex)
395377ADD_SUBDIRECTORY (mysys )
396378ADD_SUBDIRECTORY (libmysql )
397379
398-
399380IF (WITH_UNIT_TESTS)
400381 ENABLE_TESTING ()
401382ENDIF ()
@@ -487,7 +468,6 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
487468 )
488469 INSTALL (FILES README DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme)
489470 INSTALL (FILES ${CMAKE_BINARY_DIR} /Docs/INFO_SRC ${CMAKE_BINARY_DIR} /Docs/INFO_BIN DESTINATION ${INSTALL_DOCDIR} )
490-
491471 IF (UNIX )
492472 INSTALL (FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme)
493473 ENDIF ()
@@ -507,3 +487,37 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
507487ENDIF ()
508488
509489INCLUDE (CPack )
490+
491+ # C compiler flags consist of:
492+ # CPPFLAGS Taken from environment, see above.
493+ # ADD_DEFINITIONS In each individual CMakeLists.txt
494+ # CMAKE_C_FLAGS From command line.
495+ # We extend these in maintainer.cmake
496+ # ENV{CFLAGS} From environment, but environment is ignored if
497+ # CMAKE_C_FLAGS is also given on command line
498+ # CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}
499+ # We extend these in compiler_options.cmake
500+ #
501+ # Note that CMakeCache.txt contains cmake builtins for these variables,
502+ # *not* the values that will actually be used:
503+
504+ IF (CMAKE_GENERATOR MATCHES "Makefiles" )
505+ MESSAGE (STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE} " )
506+ ENDIF ()
507+ GET_PROPERTY (cwd_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS )
508+ MESSAGE (STATUS "COMPILE_DEFINITIONS: ${cwd_definitions} " )
509+ MESSAGE (STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS} " )
510+ MESSAGE (STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS} " )
511+ IF (CMAKE_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Makefiles" )
512+ STRING (TOUPPER "${CMAKE_BUILD_TYPE} " CMAKEBT)
513+ MESSAGE (STATUS "CMAKE_C_FLAGS_${CMAKEBT} : ${CMAKE_C_FLAGS_${CMAKEBT} }" )
514+ MESSAGE (STATUS "CMAKE_CXX_FLAGS_${CMAKEBT} : ${CMAKE_CXX_FLAGS_${CMAKEBT} }" )
515+ ENDIF ()
516+ IF (NOT CMAKE_GENERATOR MATCHES "Makefiles" )
517+ MESSAGE (STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG} " )
518+ MESSAGE (STATUS "CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG} " )
519+ MESSAGE (STATUS
520+ "CMAKE_C_FLAGS_RELWITHDEBINFO: ${CMAKE_C_FLAGS_RELWITHDEBINFO} " )
521+ MESSAGE (STATUS
522+ "CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} " )
523+ ENDIF ()
0 commit comments