You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

264 lines
9.7 KiB

16 years ago
  1. # Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
  2. # Copyright (c) 2011, 2018, MariaDB Corporation
  3. #
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation; version 2 of the License.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program; if not, write to the Free Software
  15. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  16. # This file includes build settings used for MySQL release
  17. INCLUDE(CheckIncludeFiles)
  18. INCLUDE(CheckLibraryExists)
  19. INCLUDE(CheckTypeSize)
  20. # XXX package_name.cmake uses this too, move it somewhere global
  21. CHECK_TYPE_SIZE("void *" SIZEOF_VOIDP)
  22. IF(SIZEOF_VOIDP EQUAL 4)
  23. SET(32BIT 1)
  24. ENDIF()
  25. IF(SIZEOF_VOIDP EQUAL 8)
  26. SET(64BIT 1)
  27. ENDIF()
  28. SET(FEATURE_SET "community" CACHE STRING
  29. " Selection of features. Options are
  30. - xsmall :
  31. - small: embedded
  32. - classic: embedded + archive + federated + blackhole
  33. - large : embedded + archive + federated + blackhole + innodb
  34. - xlarge: embedded + archive + federated + blackhole + innodb + partition
  35. - community: all features (currently == xlarge)
  36. "
  37. )
  38. SET(FEATURE_SET_xsmall 1)
  39. SET(FEATURE_SET_small 2)
  40. SET(FEATURE_SET_classic 3)
  41. SET(FEATURE_SET_large 5)
  42. SET(FEATURE_SET_xlarge 6)
  43. SET(FEATURE_SET_community 7)
  44. IF(FEATURE_SET)
  45. STRING(TOLOWER ${FEATURE_SET} feature_set)
  46. SET(num ${FEATURE_SET_${feature_set}})
  47. IF(NOT num)
  48. MESSAGE(FATAL_ERROR "Invalid FEATURE_SET option '${feature_set}'.
  49. Should be xsmall, small, classic, large, or community
  50. ")
  51. ENDIF()
  52. SET(PLUGIN_PARTITION "NO")
  53. IF(num EQUAL FEATURE_SET_xsmall)
  54. SET(WITH_NONE ON)
  55. ENDIF()
  56. IF(num GREATER FEATURE_SET_xsmall)
  57. SET(WITH_EMBEDDED_SERVER ON CACHE BOOL "")
  58. ENDIF()
  59. IF(num GREATER FEATURE_SET_small)
  60. SET(PLUGIN_ARCHIVE "STATIC")
  61. SET(PLUGIN_BLACKHOLE "STATIC")
  62. SET(PLUGIN_FEDERATEDX "STATIC")
  63. SET(PLUGIN_FEEDBACK "STATIC")
  64. ENDIF()
  65. IF(num GREATER FEATURE_SET_classic)
  66. SET(PLUGIN_INNOBASE "STATIC")
  67. ENDIF()
  68. IF(num GREATER FEATURE_SET_large)
  69. SET(PLUGIN_PARTITION "STATIC")
  70. #SET(PLUGIN_CASSANDRA "STATIC")
  71. ENDIF()
  72. IF(num GREATER FEATURE_SET_xlarge)
  73. # OPTION(WITH_ALL ON)
  74. # better no set this, otherwise server would be linked
  75. # statically with experimental stuff like audit_null
  76. ENDIF()
  77. ENDIF()
  78. SET(WITH_INNODB_SNAPPY OFF CACHE STRING "")
  79. IF(WIN32)
  80. SET(WITH_LIBARCHIVE STATIC CACHE STRING "")
  81. ELSEIF(RPM)
  82. SET(WITH_SSL system CACHE STRING "")
  83. SET(WITH_ZLIB system CACHE STRING "")
  84. SET(CHECKMODULE /usr/bin/checkmodule CACHE FILEPATH "")
  85. SET(SEMODULE_PACKAGE /usr/bin/semodule_package CACHE FILEPATH "")
  86. SET(WITH_LIBARCHIVE ON CACHE STRING "")
  87. ELSEIF(DEB)
  88. SET(WITH_SSL system CACHE STRING "")
  89. SET(WITH_ZLIB system CACHE STRING "")
  90. SET(WITH_LIBWRAP ON)
  91. SET(HAVE_EMBEDDED_PRIVILEGE_CONTROL ON)
  92. SET(WITH_LIBARCHIVE ON CACHE STRING "")
  93. ELSE()
  94. SET(WITH_SSL bundled CACHE STRING "")
  95. SET(WITH_ZLIB bundled CACHE STRING "")
  96. SET(WITH_JEMALLOC static CACHE STRING "")
  97. SET(WITH_LIBARCHIVE STATIC CACHE STRING "")
  98. ENDIF()
  99. IF(NOT COMPILATION_COMMENT)
  100. SET(COMPILATION_COMMENT "MariaDB Server")
  101. ENDIF()
  102. IF(WIN32)
  103. IF(NOT CMAKE_USING_VC_FREE_TOOLS)
  104. # Sign executables with authenticode certificate
  105. SET(SIGNCODE 1 CACHE BOOL "")
  106. ENDIF()
  107. ENDIF()
  108. IF(UNIX)
  109. SET(WITH_EXTRA_CHARSETS all CACHE STRING "")
  110. IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
  111. IF(NOT IGNORE_AIO_CHECK)
  112. # Ensure aio is available on Linux (required by InnoDB)
  113. CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H)
  114. CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
  115. IF(NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
  116. MESSAGE(FATAL_ERROR "
  117. aio is required on Linux, you need to install the required library:
  118. Debian/Ubuntu: apt-get install libaio-dev
  119. RedHat/Fedora/Oracle Linux: yum install libaio-devel
  120. SuSE: zypper install libaio-devel
  121. If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake.
  122. ")
  123. ENDIF()
  124. # Remove libaio dependency from mysqld
  125. #SET(XTRADB_PREFER_STATIC_LIBAIO 1)
  126. # Unfortunately, linking shared libmysqld with static aio
  127. # does not work, unless we add also dynamic one. This also means
  128. # libmysqld.so will depend on libaio.so
  129. #SET(LIBMYSQLD_SO_EXTRA_LIBS aio)
  130. ENDIF()
  131. ENDIF()
  132. ENDIF()
  133. # Compiler options
  134. IF(UNIX)
  135. # Default GCC flags
  136. IF(CMAKE_COMPILER_IS_GNUCC)
  137. SET(COMMON_C_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized")
  138. SET(CMAKE_C_FLAGS_DEBUG "-O ${COMMON_C_FLAGS}")
  139. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}")
  140. ENDIF()
  141. IF(CMAKE_COMPILER_IS_GNUCXX)
  142. SET(COMMON_CXX_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized")
  143. SET(CMAKE_CXX_FLAGS_DEBUG "-O ${COMMON_CXX_FLAGS}")
  144. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")
  145. ENDIF()
  146. # IBM Z flags
  147. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
  148. IF(RPM MATCHES "(rhel|centos)6" OR RPM MATCHES "(suse|sles)11")
  149. SET(z_flags "-funroll-loops -march=z9-109 -mtune=z10 ")
  150. ELSEIF(RPM MATCHES "(rhel|centos)7" OR RPM MATCHES "(suse|sles)12")
  151. SET(z_flags "-funroll-loops -march=z196 -mtune=zEC12 ")
  152. ELSE()
  153. SET(z_flags "")
  154. ENDIF()
  155. IF(CMAKE_COMPILER_IS_GNUCC)
  156. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${z_flags}${CMAKE_C_FLAGS_RELWITHDEBINFO}")
  157. ENDIF()
  158. IF(CMAKE_COMPILER_IS_GNUCXX)
  159. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${z_flags}${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
  160. ENDIF()
  161. UNSET(z_flags)
  162. ENDIF()
  163. # HPUX flags
  164. IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
  165. IF(CMAKE_C_COMPILER_ID MATCHES "HP")
  166. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
  167. SET(COMMON_C_FLAGS "+DSitanium2 -mt -AC99")
  168. SET(COMMON_CXX_FLAGS "+DSitanium2 -mt -Aa")
  169. SET(CMAKE_C_FLAGS_DEBUG "+O0 -g ${COMMON_C_FLAGS}")
  170. SET(CMAKE_CXX_FLAGS_DEBUG "+O0 -g ${COMMON_CXX_FLAGS}")
  171. # We have seen compiler bugs with optimisation and -g, so disabled for now
  172. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_C_FLAGS}")
  173. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_CXX_FLAGS}")
  174. ENDIF()
  175. ENDIF()
  176. SET(WITH_SSL no)
  177. ENDIF()
  178. # Linux flags
  179. IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
  180. IF(CMAKE_C_COMPILER_ID MATCHES "Intel")
  181. SET(COMMON_C_FLAGS "-static-intel -static-libgcc -g -mp -restrict")
  182. SET(COMMON_CXX_FLAGS "-static-intel -static-libgcc -g -mp -restrict -fno-exceptions -fno-rtti")
  183. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
  184. SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -no-ftz -no-prefetch")
  185. SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -no-ftz -no-prefetch")
  186. ENDIF()
  187. SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}")
  188. SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}")
  189. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_C_FLAGS}")
  190. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_CXX_FLAGS}")
  191. SET(WITH_SSL no)
  192. ENDIF()
  193. ENDIF()
  194. # Default Clang flags
  195. IF(CMAKE_C_COMPILER_ID MATCHES "Clang")
  196. SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing")
  197. SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}")
  198. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}")
  199. ENDIF()
  200. IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  201. SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing")
  202. SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}")
  203. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")
  204. ENDIF()
  205. # Solaris flags
  206. IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
  207. IF(CMAKE_SYSTEM_VERSION VERSION_GREATER "5.9")
  208. # Link mysqld with mtmalloc on Solaris 10 and later
  209. SET(WITH_MYSQLD_LDFLAGS "-lmtmalloc" CACHE STRING "")
  210. ENDIF()
  211. IF(CMAKE_C_COMPILER_ID MATCHES "SunPro")
  212. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i386")
  213. SET(COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic")
  214. SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -features=no%except -xlibmil -xlibmopt -xtarget=generic")
  215. SET(CMAKE_C_FLAGS_DEBUG "-xO1 ${COMMON_C_FLAGS}")
  216. SET(CMAKE_CXX_FLAGS_DEBUG "-xO1 ${COMMON_CXX_FLAGS}")
  217. IF(32BIT)
  218. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_C_FLAGS}")
  219. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_CXX_FLAGS}")
  220. ELSEIF(64BIT)
  221. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS}")
  222. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS}")
  223. ENDIF()
  224. ELSE()
  225. # Assume !x86 is SPARC
  226. SET(COMMON_C_FLAGS "-g -Xa -xstrconst -mt")
  227. SET(COMMON_CXX_FLAGS "-g0 -noex -mt")
  228. IF(32BIT)
  229. SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -xarch=sparc")
  230. SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -xarch=sparc")
  231. ENDIF()
  232. SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}")
  233. SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}")
  234. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS}")
  235. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS}")
  236. ENDIF()
  237. ENDIF()
  238. ENDIF()
  239. ENDIF()