15
15
16
16
# This file includes build settings used for MySQL release
17
17
18
+ INCLUDE (CheckIncludeFiles)
19
+ INCLUDE (CheckLibraryExists)
20
+ INCLUDE (CheckTypeSize)
21
+
22
+ # XXX package_name.cmake uses this too, move it somewhere global
23
+ CHECK_TYPE_SIZE("void *" SIZEOF_VOIDP)
24
+ IF (SIZEOF_VOIDP EQUAL 4)
25
+ SET (32BIT 1)
26
+ ENDIF ()
27
+ IF (SIZEOF_VOIDP EQUAL 8)
28
+ SET (64BIT 1)
29
+ ENDIF ()
18
30
19
31
SET (FEATURE_SET "community" CACHE STRING
20
32
" Selection of features. Options are
@@ -76,15 +88,14 @@ IF(FEATURE_SET)
76
88
SET (WITH_${eng} _STORAGE_ENGINE OFF CACHE BOOL "" )
77
89
ELSE ()
78
90
SET (WITH_${eng} _STORAGE_ENGINE ON CACHE BOOL "" )
79
- ENDIF ()
91
+ ENDIF ()
80
92
ENDFOREACH ()
81
93
ENDIF ()
82
94
83
- OPTION (ENABLE_LOCAL_INFILE "" ON )
95
+ OPTION (ENABLED_LOCAL_INFILE "" ON )
84
96
SET (WITH_SSL bundled CACHE STRING "" )
85
97
SET (WITH_ZLIB bundled CACHE STRING "" )
86
98
87
-
88
99
IF (NOT COMPILATION_COMMENT)
89
100
SET (COMPILATION_COMMENT "MySQL Community Server (GPL)" )
90
101
ENDIF ()
@@ -103,46 +114,75 @@ IF(UNIX)
103
114
ENDIF ()
104
115
105
116
OPTION (WITH_PIC "" ON ) # Why?
106
- ENDIF ()
107
117
118
+ # Ensure aio is available on Linux (required by InnoDB)
119
+ IF (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
120
+ CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H)
121
+ CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
122
+ IF (NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
123
+ MESSAGE (FATAL_ERROR "aio is required on Linux" )
124
+ ENDIF ()
125
+ ENDIF ()
126
+
127
+ ENDIF ()
108
128
109
129
# Compiler options
110
130
IF (UNIX )
131
+
111
132
# Default GCC flags
133
+ IF (CMAKE_COMPILER_IS_GNUCC)
134
+ SET (COMMON_C_FLAGS "-g -static-libgcc -fno-omit-frame-pointer" )
135
+ SET (CMAKE_C_FLAGS_DEBUG "-O ${COMMON_C_FLAGS} " )
136
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS} " )
137
+ ENDIF ()
112
138
IF (CMAKE_COMPILER_IS_GNUCXX)
113
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O3 -static-libgcc -fno-omit-frame-pointer" )
114
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O3 -static-libgcc -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" )
139
+ SET (COMMON_CXX_FLAGS "-g -static-libgcc -fno-omit-frame-pointer" )
140
+ SET (CMAKE_CXX_FLAGS_DEBUG "-O ${COMMON_CXX_FLAGS} " )
141
+ SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS} " )
115
142
ENDIF ()
116
-
117
143
118
144
# HPUX flags
119
145
IF (CMAKE_SYSTEM_NAME MATCHES "HP-UX" )
120
146
IF (CMAKE_C_COMPILER_ID MATCHES "HP" )
121
147
IF (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64" )
122
- SET (CMAKE_C_FLAGS
123
- "${CMAKE_C_FLAGS} +DD64 +DSitanium2 -mt -AC99" )
124
- SET (CMAKE_CXX_FLAGS
125
- "${CMAKE_CXX_FLAGS} +DD64 +DSitanium2 -mt -Aa" )
126
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} +O2" )
127
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} +O2" )
148
+ SET (COMMON_C_FLAGS "+DSitanium2 -mt -AC99" )
149
+ SET (COMMON_CXX_FLAGS "+DSitanium2 -mt -Aa" )
150
+ SET (CMAKE_C_FLAGS_DEBUG "+O0 -g ${COMMON_C_FLAGS} " )
151
+ SET (CMAKE_CXX_FLAGS_DEBUG "+O0 -g ${COMMON_CXX_FLAGS} " )
152
+ # We have seen compiler bugs with optimisation and -g, so disabled for now
153
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_C_FLAGS} " )
154
+ SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_CXX_FLAGS} " )
128
155
ENDIF ()
129
156
ENDIF ()
130
- SET (WITH_SSL)
157
+ SET (WITH_SSL no )
131
158
ENDIF ()
132
159
133
160
# Linux flags
134
161
IF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
135
162
IF (CMAKE_C_COMPILER_ID MATCHES "Intel" )
136
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch" )
137
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch" )
163
+ SET (COMMON_C_FLAGS "-static-intel -static-libgcc -g -mp -restrict" )
164
+ SET (COMMON_CXX_FLAGS "-static-intel -static-libgcc -g -mp -restrict -fno-exceptions -fno-rtti" )
165
+ IF (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64" )
166
+ SET (COMMON_C_FLAGS "${COMMON_C_FLAGS} -no-ftz -no-prefetch" )
167
+ SET (COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -no-ftz -no-prefetch" )
168
+ ENDIF ()
169
+ SET (CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS} " )
170
+ SET (CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS} " )
171
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_C_FLAGS} " )
172
+ SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_CXX_FLAGS} " )
138
173
SET (WITH_SSL no )
139
174
ENDIF ()
140
175
ENDIF ()
141
176
142
177
# OSX flags
143
178
IF (APPLE )
144
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-g -Os -fno-common" )
145
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Os -felide-constructors -fno-common" )
179
+ SET (COMMON_C_FLAGS "-g -fno-common" )
180
+ # XXX: why are we using -felide-constructors on OSX?
181
+ SET (COMMON_CXX_FLAGS "-g -fno-common -felide-constructors" )
182
+ SET (CMAKE_C_FLAGS_DEBUG "-O ${COMMON_C_FLAGS} " )
183
+ SET (CMAKE_CXX_FLAGS_DEBUG "-O ${COMMON_CXX_FLAGS} " )
184
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${COMMON_C_FLAGS} " )
185
+ SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${COMMON_CXX_FLAGS} " )
146
186
ENDIF ()
147
187
148
188
# Solaris flags
@@ -153,37 +193,48 @@ IF(UNIX)
153
193
ENDIF ()
154
194
IF (CMAKE_C_COMPILER_ID MATCHES "SunPro" )
155
195
IF (CMAKE_SYSTEM_PROCESSOR MATCHES "i386" )
156
- IF ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
157
- # Solaris x86
158
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO
159
- "-g -xO2 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic " )
160
- SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO
161
- "-g0 - xO2 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -features=no%except -xlibmil -xlibmopt -xtarget=generic " )
162
- ELSE ( )
163
- # Solaris x64
164
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO
165
- "-g - xO3 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic " )
166
- SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO
167
- "-g0 -xO3 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -features=no%except -xlibmil -xlibmopt -xtarget=generic" )
168
- ENDIF ()
169
- ELSE ()
170
- IF ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
171
- # Solaris sparc 32 bit
172
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-g -xO3 -Xa -xstrconst -mt -xarch=sparc" )
173
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g0 -xO3 -noex -mt -xarch=sparc" )
174
- ELSE ()
175
- # Solaris sparc 64 bit
176
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-g -xO3 -Xa -xstrconst -mt " )
177
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g0 - xO3 -noex -mt " )
178
- ENDIF ( )
179
- ENDIF ()
196
+ SET (COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic" )
197
+ SET (COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic" )
198
+ SET (CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS} " )
199
+ SET ( CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS} " )
200
+ IF (32BIT)
201
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "- xO2 ${COMMON_C_FLAGS} " )
202
+ SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_CXX_FLAGS} " )
203
+ ELSEIF (64BIT)
204
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS} " )
205
+ SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "- xO3 ${COMMON_CXX_FLAGS} " )
206
+ ENDIF ()
207
+ ELSE ()
208
+ # Assume !x86 is SPARC
209
+ SET (COMMON_C_FLAGS "-g -Xa -xstrconst -mt" )
210
+ SET (COMMON_CXX_FLAGS "-g0 -noex -mt" )
211
+ IF (32BIT)
212
+ SET (COMMON_C_FLAGS " ${COMMON_C_FLAGS} -xarch=sparc" )
213
+ SET (COMMON_CXX_FLAGS " ${COMMON_CXX_FLAGS} -xarch=sparc" )
214
+ ENDIF ()
215
+ SET (CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS} " )
216
+ SET ( CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS} " )
217
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "- xO3 ${COMMON_C_FLAGS} " )
218
+ SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS} " )
219
+ ENDIF ()
180
220
ENDIF ()
181
221
ENDIF ()
182
222
223
+ IF (CMAKE_C_FLAGS_DEBUG)
224
+ SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} "
225
+ CACHE STRING "Debug C compile flags" )
226
+ ENDIF ()
227
+ IF (CMAKE_CXX_FLAGS_DEBUG )
228
+ SET (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} "
229
+ CACHE STRING "Debug C++ compile flags" )
230
+ ENDIF ()
231
+ IF (CMAKE_C_FLAGS_RELWITHDEBINFO)
232
+ SET (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} "
233
+ CACHE STRING "RelWithDebInfo C compile flags" )
234
+ ENDIF ()
183
235
IF (CMAKE_CXX_FLAGS_RELWITHDEBINFO )
184
236
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} "
185
- CACHE STRING "Compile flags" )
186
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} "
187
- CACHE STRING "Compile flags" )
237
+ CACHE STRING "RelWithDebInfo C++ compile flags" )
188
238
ENDIF ()
239
+
189
240
ENDIF ()
0 commit comments