mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	page_is_corrupted(): Do not allocate the buffers from stack, but from the heap, in xb_fil_cur_open(). row_quiesce_write_cfg(): Issue one type of message when we fail to create the .cfg file. update_statistics_for_table(), read_statistics_for_table(), delete_statistics_for_table(), rename_table_in_stat_tables(): Use a common stack buffer for Index_stat, Column_stat, Table_stat. ha_connect::FileExists(): Invoke push_warning_printf() so that we can avoid allocating a buffer for snprintf(). translog_init_with_table(): Do not duplicate TRANSLOG_PAGE_SIZE_BUFF. Let us also globally enable the GCC 4.4 and clang 3.0 option -Wframe-larger-than=16384 to reduce the possibility of introducing such stack overflow in the future. For RocksDB and Mroonga we relax these limits. Reviewed by: Vladislav Lesin
		
			
				
	
	
		
			457 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			457 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
# -*- indent-tabs-mode: nil -*-
 | 
						|
#
 | 
						|
# Copyright(C) 2012-2015 Kouhei Sutou <kou@clear-code.com>
 | 
						|
# Copyright(C) 2013 Kentoku SHIBA
 | 
						|
#
 | 
						|
# This library is free software; you can redistribute it and/or
 | 
						|
# modify it under the terms of the GNU Lesser General Public
 | 
						|
# License as published by the Free Software Foundation; either
 | 
						|
# version 2.1 of the License, or (at your option) any later version.
 | 
						|
#
 | 
						|
# This library is distributed in the hope that it will be useful,
 | 
						|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
# Lesser General Public License for more details.
 | 
						|
#
 | 
						|
# You should have received a copy of the GNU Lesser General Public
 | 
						|
# License along with this library; if not, write to the Free Software
 | 
						|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
 | 
						|
 | 
						|
cmake_minimum_required(VERSION 2.8...3.12)
 | 
						|
project(mroonga)
 | 
						|
 | 
						|
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
 | 
						|
  set(MRN_BUNDLED FALSE)
 | 
						|
else()
 | 
						|
  set(MRN_BUNDLED TRUE)
 | 
						|
endif()
 | 
						|
 | 
						|
include(TestBigEndian)
 | 
						|
test_big_endian(BIG_ENDIAN)
 | 
						|
if(BIG_ENDIAN)
 | 
						|
  set(MRN_BIG_ENDIAN_NOT_SUPPORTED_MESSAGE
 | 
						|
    "Mroonga doesn't support on big-endian")
 | 
						|
  if(MRN_BUNDLED)
 | 
						|
    message(STATUS ${MRN_BIG_ENDIAN_NOT_SUPPORTED_MESSAGE})
 | 
						|
    return()
 | 
						|
  else()
 | 
						|
    message(FATAL_ERROR ${MRN_BIG_ENDIAN_NOT_SUPPORTED_MESSAGE})
 | 
						|
  endif()
 | 
						|
endif()
 | 
						|
 | 
						|
if(MSVC)
 | 
						|
  if(MSVC_VERSION LESS 1800)
 | 
						|
    set(MRN_OLD_MSVC_MESSAGE "Mroonga supports only MSVC 2013 or later")
 | 
						|
    if(MRN_BUNDLED)
 | 
						|
      message(STATUS ${MRN_OLD_MSVC_MESSAGE})
 | 
						|
      return()
 | 
						|
    else()
 | 
						|
      message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE})
 | 
						|
    endif()
 | 
						|
  endif()
 | 
						|
else()
 | 
						|
  STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
 | 
						|
         CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 | 
						|
  STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
 | 
						|
         CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
 | 
						|
  STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
 | 
						|
         CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
 | 
						|
  MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=49152)
 | 
						|
endif()
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  if(WITHOUT_MROONGA OR
 | 
						|
      WITHOUT_MROONGA_STORAGE_ENGINE OR
 | 
						|
      "${PLUGIN_MROONGA}" STREQUAL "NO")
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
  if(WITHOUT_DYNAMIC_PLUGINS)
 | 
						|
    if(NOT (PLUGIN_MROONGA STREQUAL STATIC))
 | 
						|
      return()
 | 
						|
    endif()
 | 
						|
  endif()
 | 
						|
endif()
 | 
						|
 | 
						|
set(MRN_BUNDLED_GROONGA_RELATIVE_DIR "vendor/groonga")
 | 
						|
set(MRN_BUNDLED_GROONGA_DIR
 | 
						|
  "${CMAKE_CURRENT_SOURCE_DIR}/${MRN_BUNDLED_GROONGA_RELATIVE_DIR}")
 | 
						|
if(EXISTS "${MRN_BUNDLED_GROONGA_DIR}")
 | 
						|
  set(MRN_GROONGA_BUNDLED TRUE)
 | 
						|
  if(MSVC)
 | 
						|
    # Bundled Mroonga does not support MSVC yet
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
else()
 | 
						|
  set(MRN_GROONGA_BUNDLED FALSE)
 | 
						|
endif()
 | 
						|
 | 
						|
set(MRN_PLUGIN_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  set(MRN_SOURCE_DIR ${CMAKE_SOURCE_DIR}/storage/mroonga)
 | 
						|
else()
 | 
						|
  set(MRN_SOURCE_DIR ${CMAKE_SOURCE_DIR})
 | 
						|
endif()
 | 
						|
 | 
						|
file(READ ${MRN_SOURCE_DIR}/version_full   MRN_VERSION)
 | 
						|
file(READ ${MRN_SOURCE_DIR}/version_major  MRN_VERSION_MAJOR)
 | 
						|
file(READ ${MRN_SOURCE_DIR}/version_minor  MRN_VERSION_MINOR)
 | 
						|
file(READ ${MRN_SOURCE_DIR}/version_micro  MRN_VERSION_MICRO)
 | 
						|
file(READ ${MRN_SOURCE_DIR}/version_in_hex MRN_VERSION_IN_HEX)
 | 
						|
file(READ ${MRN_SOURCE_DIR}/plugin_version MRN_PLUGIN_VERSION)
 | 
						|
 | 
						|
if(MRN_GROONGA_BUNDLED)
 | 
						|
  option(MRN_GROONGA_EMBED
 | 
						|
    "Embed libgroonga"
 | 
						|
    ON)
 | 
						|
  if(MRN_GROONGA_EMBED)
 | 
						|
    set(GRN_EMBED ON)
 | 
						|
  endif()
 | 
						|
 | 
						|
  set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR
 | 
						|
    "${MRN_BUNDLED_GROONGA_DIR}/vendor/plugins/groonga-normalizer-mysql")
 | 
						|
  option(MRN_GROONGA_NORMALIZER_MYSQL_EMBED
 | 
						|
    "Embed groonga-normalizer-mysql Groonga plugin"
 | 
						|
    ON)
 | 
						|
  if(EXISTS ${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR})
 | 
						|
    set(GROONGA_NORMALIZER_MYSQL_FOUND ON)
 | 
						|
  else()
 | 
						|
    set(GROONGA_NORMALIZER_MYSQL_FOUND OFF)
 | 
						|
    set(MRN_GROONGA_NORMALIZER_MYSQL_EMBED OFF)
 | 
						|
  endif()
 | 
						|
  if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
 | 
						|
    set(GROONGA_NORMALIZER_MYSQL_EMBED ON)
 | 
						|
  endif()
 | 
						|
 | 
						|
  file(READ "${MRN_BUNDLED_GROONGA_DIR}/bundled_lz4_version"
 | 
						|
    MRN_BUNDLED_LZ4_VERSION)
 | 
						|
  string(STRIP
 | 
						|
    "${MRN_BUNDLED_LZ4_VERSION}"
 | 
						|
    MRN_BUNDLED_LZ4_VERSION)
 | 
						|
  set(MRN_BUNDLED_LZ4_DIR
 | 
						|
    "${MRN_BUNDLED_GROONGA_DIR}/vendor/lz4-${MRN_BUNDLED_LZ4_VERSION}")
 | 
						|
  if(EXISTS ${MRN_BUNDLED_LZ4_DIR})
 | 
						|
    set(GRN_WITH_BUNDLED_LZ4 ON)
 | 
						|
    set(GRN_WITH_LZ4 "yes")
 | 
						|
  else()
 | 
						|
    set(GRN_WITH_LZ4 "no")
 | 
						|
  endif()
 | 
						|
 | 
						|
  add_subdirectory("${MRN_BUNDLED_GROONGA_RELATIVE_DIR}")
 | 
						|
else()
 | 
						|
  set(MRN_GROONGA_EMBED OFF)
 | 
						|
 | 
						|
  file(READ ${MRN_SOURCE_DIR}/required_groonga_version REQUIRED_GROONGA_VERSION)
 | 
						|
  string(STRIP "${REQUIRED_GROONGA_VERSION}" REQUIRED_GROONGA_VERSION)
 | 
						|
 | 
						|
  file(READ
 | 
						|
    ${MRN_SOURCE_DIR}/required_groonga_normalizer_mysql_version
 | 
						|
    REQUIRED_GROONGA_NORMALIZER_MYSQL_VERSION)
 | 
						|
  string(STRIP
 | 
						|
    "${REQUIRED_GROONGA_NORMALIZER_MYSQL_VERSION}"
 | 
						|
    REQUIRED_GROONGA_NORMALIZER_MYSQL_VERSION)
 | 
						|
endif()
 | 
						|
 | 
						|
set(MRN_PACKAGE_STRING "${PROJECT_NAME} ${MRN_VERSION}")
 | 
						|
 | 
						|
include(CheckCCompilerFlag)
 | 
						|
include(CheckCXXCompilerFlag)
 | 
						|
include(${MRN_SOURCE_DIR}/build/cmake_modules/ReadFileList.cmake)
 | 
						|
 | 
						|
set(MRN_C_COMPILE_FLAGS "")
 | 
						|
set(MRN_CXX_COMPILE_FLAGS "")
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  set(MRN_RELATIVE_DIR_PREFIX "${MRN_SOURCE_DIR}/")
 | 
						|
else()
 | 
						|
  set(MRN_RELATIVE_DIR_PREFIX "")
 | 
						|
endif()
 | 
						|
 | 
						|
read_file_list(${CMAKE_CURRENT_SOURCE_DIR}/sources.am MRN_SOURCES)
 | 
						|
read_file_list(${CMAKE_CURRENT_SOURCE_DIR}/lib/libmrn_no_mysql_sources.am
 | 
						|
  LIBMRN_NO_MYSQL_SOURCES)
 | 
						|
string(REGEX REPLACE "([^;]+)" "${MRN_RELATIVE_DIR_PREFIX}lib/\\1"
 | 
						|
  LIBMRN_NO_MYSQL_SOURCES "${LIBMRN_NO_MYSQL_SOURCES}")
 | 
						|
read_file_list(${CMAKE_CURRENT_SOURCE_DIR}/lib/libmrn_need_mysql_sources.am
 | 
						|
  LIBMRN_NEED_MYSQL_SOURCES)
 | 
						|
string(REGEX REPLACE "([^;]+)" "${MRN_RELATIVE_DIR_PREFIX}lib/\\1"
 | 
						|
  LIBMRN_NEED_MYSQL_SOURCES "${LIBMRN_NEED_MYSQL_SOURCES}")
 | 
						|
read_file_list(${CMAKE_CURRENT_SOURCE_DIR}/udf/sources.am MRN_UDF_SOURCES)
 | 
						|
string(REGEX REPLACE "([^;]+)" "${MRN_RELATIVE_DIR_PREFIX}udf/\\1"
 | 
						|
  MRN_UDF_SOURCES "${MRN_UDF_SOURCES}")
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  set(MYSQL_SOURCE_DIR ${CMAKE_SOURCE_DIR})
 | 
						|
  set(MYSQL_BUILD_DIR ${MYSQL_SOURCE_DIR})
 | 
						|
  set(MYSQL_CONFIG ${CMAKE_SOURCE_DIR}/scripts/mysql_config)
 | 
						|
else()
 | 
						|
  set(MYSQL_SOURCE_DIR "/PATH/TO/MYSQL/SOURCE/DIRECTORY/"
 | 
						|
    CACHE PATH "MySQL source directory")
 | 
						|
  if(NOT EXISTS ${MYSQL_SOURCE_DIR})
 | 
						|
    message(FATAL_ERROR
 | 
						|
      "MySQL source directory (MYSQL_SOURCE_DIR) doesn't exist: <${MYSQL_SOURCE_DIR}>")
 | 
						|
  endif()
 | 
						|
  set(MYSQL_BUILD_DIR ${MYSQL_SOURCE_DIR} CACHE PATH "MySQL build directory")
 | 
						|
  set(MYSQL_CONFIG "mysql_config" CACHE PATH "mysql-config command path")
 | 
						|
endif()
 | 
						|
find_path(MYSQL_CONFIG "${MYSQL_CONFIG}")
 | 
						|
 | 
						|
if(EXISTS "${MYSQL_SOURCE_DIR}/storage/maria")
 | 
						|
  set(MYSQL_VARIANT "MariaDB")
 | 
						|
else()
 | 
						|
  set(MYSQL_VARIANT "MySQL")
 | 
						|
endif()
 | 
						|
 | 
						|
set(MYSQL_REGEX_INCLUDE_DIR "${MYSQL_SOURCE_DIR}/regex")
 | 
						|
 | 
						|
if(EXISTS "${MYSQL_SOURCE_DIR}/extra/rapidjson")
 | 
						|
  set(MYSQL_RAPIDJSON_INCLUDE_DIR "${MYSQL_SOURCE_DIR}/extra/rapidjson/include")
 | 
						|
else()
 | 
						|
  set(MYSQL_RAPIDJSON_INCLUDE_DIR)
 | 
						|
endif()
 | 
						|
 | 
						|
if(EXISTS "${MYSQL_SOURCE_DIR}/libbinlogevents")
 | 
						|
  set(MYSQL_LIBBINLOGEVENTS_EXPORT_DIR
 | 
						|
    "${MYSQL_SOURCE_DIR}/libbinlogevents/export")
 | 
						|
  set(MYSQL_LIBBINLOGEVENTS_INCLUDE_DIR
 | 
						|
    "${MYSQL_BUILD_DIR}/libbinlogevents/include"
 | 
						|
    "${MYSQL_SOURCE_DIR}/libbinlogevents/include")
 | 
						|
else()
 | 
						|
  set(MYSQL_LIBBINLOGEVENTS_EXPORT_DIR)
 | 
						|
  set(MYSQL_LIBBINLOGEVENTS_INCLUDE_DIR)
 | 
						|
endif()
 | 
						|
 | 
						|
set(MYSQL_INCLUDE_DIRS
 | 
						|
  "${MYSQL_BUILD_DIR}/include"
 | 
						|
  "${MYSQL_SOURCE_DIR}/sql"
 | 
						|
  "${MYSQL_SOURCE_DIR}/include"
 | 
						|
  "${MYSQL_REGEX_INCLUDE_DIR}"
 | 
						|
  "${MYSQL_RAPIDJSON_INCLUDE_DIR}"
 | 
						|
  "${MYSQL_LIBBINLOGEVENTS_EXPORT_DIR}"
 | 
						|
  "${MYSQL_LIBBINLOGEVENTS_INCLUDE_DIR}")
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  set(MYSQL_PLUGIN_DIR "${INSTALL_PLUGINDIR}")
 | 
						|
  set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_DIR}/libservices")
 | 
						|
  set(MYSQL_CFLAGS "${CMAKE_C_FLAGS}")
 | 
						|
  set(MYSQL_VERSION "${MYSQL_BASE_VERSION}")
 | 
						|
else()
 | 
						|
  macro(SET_MYSQL_CONFIG_VALUE OPTION VARIABLE)
 | 
						|
    if(NOT ${VARIABLE})
 | 
						|
      execute_process(COMMAND "${MYSQL_CONFIG}" ${OPTION}
 | 
						|
       OUTPUT_VARIABLE MYSQL_CONFIG_OUTPUT)
 | 
						|
      string(STRIP ${MYSQL_CONFIG_OUTPUT} ${VARIABLE})
 | 
						|
    endif()
 | 
						|
  endmacro()
 | 
						|
 | 
						|
  set_mysql_config_value("--plugindir" MYSQL_PLUGIN_DIR)
 | 
						|
  set_mysql_config_value("--variable=pkglibdir" MYSQL_PKG_LIB_DIR)
 | 
						|
  set(MYSQL_BUILD_LIBSERVICES_DIR "${MYSQL_BUILD_DIR}/libservices")
 | 
						|
  if(EXISTS "${MYSQL_BUILD_LIBSERVICES_DIR}/libmysqlservices.a")
 | 
						|
    set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_LIBSERVICES_DIR}")
 | 
						|
  else()
 | 
						|
    set(MYSQL_SERVICES_LIB_DIR "${MYSQL_PKG_LIB_DIR}")
 | 
						|
  endif()
 | 
						|
  set_mysql_config_value("--cflags" MYSQL_CFLAGS)
 | 
						|
  set_mysql_config_value("--version" MYSQL_VERSION)
 | 
						|
endif()
 | 
						|
 | 
						|
if(${MYSQL_VERSION} VERSION_LESS "5.5.0")
 | 
						|
  message(FATAL_ERROR
 | 
						|
    "Mroonga doesn't support MySQL < 5.5.0: <${MYSQL_VERSION}>")
 | 
						|
  return()
 | 
						|
endif()
 | 
						|
 | 
						|
if(${MYSQL_VERSION} VERSION_GREATER "10.0.0" AND
 | 
						|
   ${MYSQL_VERSION} VERSION_LESS "10.0.9")
 | 
						|
  message(FATAL_ERROR
 | 
						|
    "Mroonga doesn't support MariaDB 10.0.0-10.0.8: <${MYSQL_VERSION}>")
 | 
						|
  return()
 | 
						|
endif()
 | 
						|
 | 
						|
if(MRN_GROONGA_BUNDLED)
 | 
						|
  set(GROONGA_INCLUDE_DIRS "${MRN_BUNDLED_GROONGA_DIR}/include")
 | 
						|
  set(GROONGA_LIBRARY_DIRS "${MRN_BUNDLED_GROONGA_DIR}/lib")
 | 
						|
  set(GROONGA_LIBRARIES "libgroonga")
 | 
						|
 | 
						|
  set(MRN_LIBRARY_DIRS ${GROONGA_LIBRARY_DIRS})
 | 
						|
  set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
 | 
						|
  if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
 | 
						|
    set(MRN_LIBRARY_DIRS
 | 
						|
      ${MRN_LIBRARY_DIRS}
 | 
						|
      "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers")
 | 
						|
    set(MRN_LIBRARIES ${MRN_LIBRARIES} mysql_normalizer)
 | 
						|
  endif()
 | 
						|
else()
 | 
						|
  include(FindPkgConfig)
 | 
						|
  pkg_check_modules(GROONGA REQUIRED "groonga >= ${REQUIRED_GROONGA_VERSION}")
 | 
						|
  pkg_check_modules(GROONGA_NORMALIZER_MYSQL
 | 
						|
    "groonga-normalizer-mysql >= ${REQUIRED_GROONGA_NORMALIZER_MYSQL_VERSION}")
 | 
						|
  set(MRN_LIBRARY_DIRS
 | 
						|
    ${MRN_LIBRARY_DIRS}
 | 
						|
    ${GROONGA_LIBRARY_DIRS})
 | 
						|
  set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
 | 
						|
endif()
 | 
						|
 | 
						|
include_directories(
 | 
						|
  "${PROJECT_BINARY_DIR}"
 | 
						|
  "${PROJECT_SOURCE_DIR}"
 | 
						|
  "${PROJECT_SOURCE_DIR}/lib"
 | 
						|
  ${MYSQL_INCLUDE_DIRS}
 | 
						|
  ${GROONGA_INCLUDE_DIRS})
 | 
						|
 | 
						|
if(WIN32)
 | 
						|
  set(MYSQL_LIBRARY_DIRS
 | 
						|
    "${MYSQL_BUILD_DIR}/lib"
 | 
						|
    "${MYSQL_BUILD_DIR}/libmysqld")
 | 
						|
else()
 | 
						|
  set(MYSQL_LIBRARY_DIRS
 | 
						|
    "${MYSQL_SERVICES_LIB_DIR}")
 | 
						|
endif()
 | 
						|
link_directories(
 | 
						|
  ${MRN_LIBRARY_DIRS}
 | 
						|
  ${MYSQL_LIBRARY_DIRS})
 | 
						|
 | 
						|
set(MRN_ALL_SOURCES
 | 
						|
  ${MRN_SOURCES}
 | 
						|
  ${MRN_UDF_SOURCES}
 | 
						|
  ${LIBMRN_NO_MYSQL_SOURCES}
 | 
						|
  ${LIBMRN_NEED_MYSQL_SOURCES})
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  mysql_add_plugin(mroonga
 | 
						|
    ${MRN_ALL_SOURCES}
 | 
						|
    STORAGE_ENGINE MODULE_ONLY
 | 
						|
    LINK_LIBRARIES ${MRN_LIBRARIES})
 | 
						|
  if(NOT TARGET mroonga)
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
else()
 | 
						|
  add_library(mroonga MODULE ${MRN_ALL_SOURCES})
 | 
						|
 | 
						|
  set(MYSQL_LIBRARIES "mysqlservices")
 | 
						|
  target_link_libraries(mroonga ${GROONGA_LIBRARIES} ${MYSQL_LIBRARIES})
 | 
						|
 | 
						|
  option(WITH_DEBUG "Enable debug options" OFF)
 | 
						|
  if(WITH_DEBUG)
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "SAFE_MUTEX")
 | 
						|
    if(CMAKE_COMPILER_IS_GNUCXX)
 | 
						|
      set(MRN_C_COMPILE_FLAGS "${MRN_C_COMPILE_FLAGS} -g3 -O0")
 | 
						|
      set(MRN_CXX_COMPILE_FLAGS "${MRN_CXX_COMPILE_FLAGS} -g3 -O0")
 | 
						|
    endif()
 | 
						|
  else()
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "DBUG_OFF")
 | 
						|
  endif()
 | 
						|
 | 
						|
  option(WITH_DEBUG_FULL "Enable full debug options" OFF)
 | 
						|
  if(WITH_DEBUG_FULL)
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "SAFE_MUTEX" "SAFEMALLOC")
 | 
						|
  endif()
 | 
						|
 | 
						|
  option(DISABLE_FAST_MUTEXES "Force disabling fast mutex" OFF)
 | 
						|
  if(DISABLE_FAST_MUTEXES)
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "FORCE_FAST_MUTEX_DISABLED=1")
 | 
						|
  endif()
 | 
						|
 | 
						|
  option(WITH_FAST_MUTEXES "Enable fast mutex" OFF)
 | 
						|
  if(WITH_FAST_MUTEXES)
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "MY_PTHREAD_FASTMUTEX")
 | 
						|
  endif()
 | 
						|
 | 
						|
  if(CMAKE_COMPILER_IS_GNUCXX)
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-Wall")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-Wextra")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-unused-parameter")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-strict-aliasing")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-deprecated")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-fno-exceptions")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-felide-constructors")
 | 
						|
    MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough")
 | 
						|
  endif()
 | 
						|
  set_source_files_properties(${MRN_SOURCES} PROPERTIES
 | 
						|
    COMPILE_FLAGS "${MYSQL_CFLAGS} ${MRN_CXX_COMPILE_FLAGS}")
 | 
						|
  set_source_files_properties(${LIBMRN_NEED_MYSQL_SOURCES} PROPERTIES
 | 
						|
    COMPILE_FLAGS "${MYSQL_CFLAGS} ${MRN_CXX_COMPILE_FLAGS}")
 | 
						|
  set_source_files_properties(${MRN_UDF_SOURCES} PROPERTIES
 | 
						|
    COMPILE_FLAGS "${MRN_CXX_COMPILE_FLAGS}")
 | 
						|
  set_source_files_properties(${LIBMRN_NO_MYSQL_SOURCES} PROPERTIES
 | 
						|
    COMPILE_FLAGS "${MRN_CXX_COMPILE_FLAGS}")
 | 
						|
  set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
    COMPILE_DEFINITIONS "MYSQL_DYNAMIC_PLUGIN")
 | 
						|
  set_target_properties(mroonga PROPERTIES
 | 
						|
    PREFIX ""
 | 
						|
    OUTPUT_NAME "ha_mroonga")
 | 
						|
 | 
						|
  install(TARGETS mroonga DESTINATION "${MYSQL_PLUGIN_DIR}")
 | 
						|
endif()
 | 
						|
 | 
						|
option(MRN_BUILD_FOR_EMBEDDED_SERVER
 | 
						|
  "Whether to build Mroonga for embedded server or not. You can't use Mroonga built for embedded server with non embedded server."
 | 
						|
  OFF)
 | 
						|
if(MRN_BUILD_FOR_EMBEDDED_SERVER)
 | 
						|
  set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
    COMPILE_DEFINITIONS "EMBEDDED_LIBRARY")
 | 
						|
endif()
 | 
						|
 | 
						|
if(GROONGA_NORMALIZER_MYSQL_FOUND)
 | 
						|
  set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
    COMPILE_DEFINITIONS "WITH_GROONGA_NORMALIZER_MYSQL=1")
 | 
						|
  if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "MRN_GROONGA_NORMALIZER_MYSQL_EMBEDDED")
 | 
						|
  else()
 | 
						|
    set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
      COMPILE_DEFINITIONS "GROONGA_NORMALIZER_MYSQL_PLUGIN_NAME=\"normalizers/mysql\"")
 | 
						|
  endif()
 | 
						|
endif()
 | 
						|
 | 
						|
if(MRN_GROONGA_EMBED)
 | 
						|
  set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
    COMPILE_DEFINITIONS "MRN_GROONGA_EMBEDDED")
 | 
						|
endif()
 | 
						|
 | 
						|
set(MRN_DEFAULT_PARSER "" CACHE STRING
 | 
						|
  "The default fulltext parser (Deprecated. Use MRN_DEFAULT_TOKENIZER instead.)")
 | 
						|
set(MRN_DEFAULT_TOKENIZER "" CACHE STRING
 | 
						|
  "The default tokenizer for fulltext index")
 | 
						|
if(NOT ${MRN_DEFAULT_TOKENIZER} STREQUAL "")
 | 
						|
  set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
    COMPILE_DEFINITIONS "MRN_DEFAULT_TOKENIZER=\"${MRN_DEFAULT_TOKENIZER}\"")
 | 
						|
elseif(NOT ${MRN_DEFAULT_PARSER} STREQUAL "")
 | 
						|
  set_property(TARGET mroonga APPEND PROPERTY
 | 
						|
    COMPILE_DEFINITIONS "MRN_DEFAULT_TOKENIZER=\"${MRN_DEFAULT_PARSER}\"")
 | 
						|
endif()
 | 
						|
 | 
						|
configure_file(
 | 
						|
  "${PROJECT_SOURCE_DIR}/mrn_version.h.in"
 | 
						|
  "${PROJECT_BINARY_DIR}/mrn_version.h")
 | 
						|
 | 
						|
configure_file(
 | 
						|
  "${PROJECT_SOURCE_DIR}/config.sh.in"
 | 
						|
  "${PROJECT_BINARY_DIR}/config.sh")
 | 
						|
 | 
						|
set(MRN_TEST_SUITE_DIR "${CMAKE_SOURCE_DIR}/mysql-test/suite/mroonga")
 | 
						|
if(NOT EXISTS "${MRN_TEST_SUITE_DIR}")
 | 
						|
  set(MRN_TEST_SUITE_DIR "${PROJECT_SOURCE_DIR}/mysql-test/mroonga")
 | 
						|
endif()
 | 
						|
 | 
						|
configure_file(
 | 
						|
  "${PROJECT_SOURCE_DIR}/data/install.sql.in"
 | 
						|
  "${PROJECT_BINARY_DIR}/data/install.sql")
 | 
						|
 | 
						|
if(MRN_BUNDLED)
 | 
						|
  set(MRN_DATA_DIR "${INSTALL_MYSQLSHAREDIR}/${PROJECT_NAME}")
 | 
						|
else()
 | 
						|
  set(MRN_DATA_DIR "share/${PROJECT_NAME}")
 | 
						|
endif()
 | 
						|
install(FILES
 | 
						|
  "${PROJECT_SOURCE_DIR}/AUTHORS"
 | 
						|
  "${PROJECT_SOURCE_DIR}/COPYING"
 | 
						|
  "${PROJECT_BINARY_DIR}/data/install.sql"
 | 
						|
  "${PROJECT_SOURCE_DIR}/data/uninstall.sql"
 | 
						|
  DESTINATION "${MRN_DATA_DIR}/")
 |