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.

222 lines
8.2 KiB

16 years ago
  1. # Copyright (C) 2010 Sun Microsystems, Inc
  2. #
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; version 2 of the License.
  6. #
  7. # This program is distributed in the hope that it will be useful,
  8. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. # GNU General Public License for more details.
  11. #
  12. # You should have received a copy of the GNU General Public License
  13. # along with this program; if not, write to the Free Software
  14. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  15. # This file includes build settings used for MySQL release
  16. INCLUDE(CheckIncludeFiles)
  17. INCLUDE(CheckLibraryExists)
  18. INCLUDE(CheckTypeSize)
  19. # XXX package_name.cmake uses this too, move it somewhere global
  20. CHECK_TYPE_SIZE("void *" SIZEOF_VOIDP)
  21. IF(SIZEOF_VOIDP EQUAL 4)
  22. SET(32BIT 1)
  23. ENDIF()
  24. IF(SIZEOF_VOIDP EQUAL 8)
  25. SET(64BIT 1)
  26. ENDIF()
  27. SET(FEATURE_SET "community" CACHE STRING
  28. " Selection of features. Options are
  29. - xsmall :
  30. - small: embedded
  31. - classic: embedded + archive + federated + blackhole
  32. - large : embedded + archive + federated + blackhole + innodb
  33. - xlarge: embedded + archive + federated + blackhole + innodb + partition
  34. - community: all features (currently == xlarge)
  35. "
  36. )
  37. SET(FEATURE_SET_xsmall 1)
  38. SET(FEATURE_SET_small 2)
  39. SET(FEATURE_SET_classic 3)
  40. SET(FEATURE_SET_large 5)
  41. SET(FEATURE_SET_xlarge 6)
  42. SET(FEATURE_SET_community 7)
  43. IF(FEATURE_SET)
  44. STRING(TOLOWER ${FEATURE_SET} feature_set)
  45. SET(num ${FEATURE_SET_${feature_set}})
  46. IF(NOT num)
  47. MESSAGE(FATAL_ERROR "Invalid FEATURE_SET option '${feature_set}'.
  48. Should be xsmall, small, classic, large, or community
  49. ")
  50. ENDIF()
  51. SET(WITH_PARTITION_STORAGE_ENGINE OFF)
  52. IF(num EQUAL FEATURE_SET_xsmall)
  53. SET(WITH_NONE ON)
  54. ENDIF()
  55. IF(num GREATER FEATURE_SET_xsmall)
  56. SET(WITH_EMBEDDED_SERVER ON CACHE BOOL "")
  57. ENDIF()
  58. IF(num GREATER FEATURE_SET_small)
  59. SET(WITH_ARCHIVE_STORAGE_ENGINE ON)
  60. SET(WITH_BLACKHOLE_STORAGE_ENGINE ON)
  61. SET(WITH_FEDERATED_STORAGE_ENGINE ON)
  62. ENDIF()
  63. IF(num GREATER FEATURE_SET_classic)
  64. SET(WITH_INNOBASE_STORAGE_ENGINE ON)
  65. ENDIF()
  66. IF(num GREATER FEATURE_SET_large)
  67. SET(WITH_PARTITION_STORAGE_ENGINE ON)
  68. ENDIF()
  69. IF(num GREATER FEATURE_SET_xlarge)
  70. # OPTION(WITH_ALL ON)
  71. # better no set this, otherwise server would be linked
  72. # statically with experimental stuff like audit_null
  73. ENDIF()
  74. # Update cache with current values, remove engines we do not care about
  75. # from build.
  76. FOREACH(eng ARCHIVE BLACKHOLE FEDERATED INNOBASE PARTITION EXAMPLE)
  77. IF(NOT WITH_${eng}_STORAGE_ENGINE)
  78. SET(WITHOUT_${eng}_STORAGE_ENGINE ON CACHE BOOL "")
  79. MARK_AS_ADVANCED(WITHOUT_${eng}_STORAGE_ENGINE)
  80. SET(WITH_${eng}_STORAGE_ENGINE OFF CACHE BOOL "")
  81. ELSE()
  82. SET(WITH_${eng}_STORAGE_ENGINE ON CACHE BOOL "")
  83. ENDIF()
  84. ENDFOREACH()
  85. ENDIF()
  86. OPTION(ENABLED_LOCAL_INFILE "" ON)
  87. SET(WITH_SSL bundled CACHE STRING "")
  88. SET(WITH_ZLIB bundled CACHE STRING "")
  89. IF(NOT COMPILATION_COMMENT)
  90. SET(COMPILATION_COMMENT "MySQL Community Server (GPL)")
  91. ENDIF()
  92. IF(WIN32)
  93. # Sign executables with authenticode certificate
  94. SET(SIGNCODE 1 CACHE BOOL "")
  95. ENDIF()
  96. IF(UNIX)
  97. SET(WITH_EXTRA_CHARSETS all CACHE STRING "")
  98. IF(EXISTS "${CMAKE_SOURCE_DIR}/COPYING")
  99. OPTION(WITH_READLINE "" ON)
  100. ELSE()
  101. OPTION(WITH_LIBEDIT "" ON)
  102. ENDIF()
  103. OPTION(WITH_PIC "" ON) # Why?
  104. # Ensure aio is available on Linux (required by InnoDB)
  105. IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
  106. CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H)
  107. CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
  108. IF(NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
  109. MESSAGE(FATAL_ERROR "aio is required on Linux")
  110. ENDIF()
  111. ENDIF()
  112. ENDIF()
  113. # Compiler options
  114. IF(UNIX)
  115. # Default GCC flags
  116. IF(CMAKE_COMPILER_IS_GNUCC)
  117. SET(COMMON_C_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing")
  118. SET(CMAKE_C_FLAGS_DEBUG "-O ${COMMON_C_FLAGS}")
  119. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}")
  120. ENDIF()
  121. IF(CMAKE_COMPILER_IS_GNUCXX)
  122. SET(COMMON_CXX_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing")
  123. SET(CMAKE_CXX_FLAGS_DEBUG "-O ${COMMON_CXX_FLAGS}")
  124. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")
  125. ENDIF()
  126. # HPUX flags
  127. IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
  128. IF(CMAKE_C_COMPILER_ID MATCHES "HP")
  129. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
  130. SET(COMMON_C_FLAGS "+DSitanium2 -mt -AC99")
  131. SET(COMMON_CXX_FLAGS "+DSitanium2 -mt -Aa")
  132. SET(CMAKE_C_FLAGS_DEBUG "+O0 -g ${COMMON_C_FLAGS}")
  133. SET(CMAKE_CXX_FLAGS_DEBUG "+O0 -g ${COMMON_CXX_FLAGS}")
  134. # We have seen compiler bugs with optimisation and -g, so disabled for now
  135. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_C_FLAGS}")
  136. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_CXX_FLAGS}")
  137. ENDIF()
  138. ENDIF()
  139. SET(WITH_SSL no)
  140. ENDIF()
  141. # Linux flags
  142. IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
  143. IF(CMAKE_C_COMPILER_ID MATCHES "Intel")
  144. SET(COMMON_C_FLAGS "-static-intel -static-libgcc -g -mp -restrict")
  145. SET(COMMON_CXX_FLAGS "-static-intel -static-libgcc -g -mp -restrict -fno-exceptions -fno-rtti")
  146. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
  147. SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -no-ftz -no-prefetch")
  148. SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -no-ftz -no-prefetch")
  149. ENDIF()
  150. SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}")
  151. SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}")
  152. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_C_FLAGS}")
  153. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_CXX_FLAGS}")
  154. SET(WITH_SSL no)
  155. ENDIF()
  156. ENDIF()
  157. # OSX flags
  158. IF(APPLE)
  159. SET(COMMON_C_FLAGS "-g -fno-common -fno-strict-aliasing")
  160. # XXX: why are we using -felide-constructors on OSX?
  161. SET(COMMON_CXX_FLAGS "-g -fno-common -felide-constructors -fno-strict-aliasing")
  162. SET(CMAKE_C_FLAGS_DEBUG "-O ${COMMON_C_FLAGS}")
  163. SET(CMAKE_CXX_FLAGS_DEBUG "-O ${COMMON_CXX_FLAGS}")
  164. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${COMMON_C_FLAGS}")
  165. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${COMMON_CXX_FLAGS}")
  166. ENDIF()
  167. # Solaris flags
  168. IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
  169. IF(CMAKE_SYSTEM_VERSION VERSION_GREATER "5.9")
  170. # Link mysqld with mtmalloc on Solaris 10 and later
  171. SET(WITH_MYSQLD_LDFLAGS "-lmtmalloc" CACHE STRING "")
  172. ENDIF()
  173. IF(CMAKE_C_COMPILER_ID MATCHES "SunPro")
  174. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i386")
  175. SET(COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic")
  176. SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -features=no%except -xlibmil -xlibmopt -xtarget=generic")
  177. SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}")
  178. SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}")
  179. IF(32BIT)
  180. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_C_FLAGS}")
  181. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO2 ${COMMON_CXX_FLAGS}")
  182. ELSEIF(64BIT)
  183. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS}")
  184. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS}")
  185. ENDIF()
  186. ELSE()
  187. # Assume !x86 is SPARC
  188. SET(COMMON_C_FLAGS "-g -Xa -xstrconst -mt")
  189. SET(COMMON_CXX_FLAGS "-g0 -noex -mt")
  190. IF(32BIT)
  191. SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -xarch=sparc")
  192. SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -xarch=sparc")
  193. ENDIF()
  194. SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}")
  195. SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}")
  196. SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_C_FLAGS}")
  197. SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-xO3 ${COMMON_CXX_FLAGS}")
  198. ENDIF()
  199. ENDIF()
  200. ENDIF()
  201. ENDIF()