Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/extra/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 6 kB image not shown  

Quelle  CMakeLists.txt   Sprache: Text

 

# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1335 USA

INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${ZLIB_INCLUDE_DIRS} ${PCRE_INCLUDE_DIRS})

# Default install component for the files is Server here
SET(MYSQL_INSTALL_COMPONENT Server)

IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
 ADD_EXECUTABLE(comp_err comp_err.c)
 TARGET_LINK_LIBRARIES(comp_err mysys)
ENDIF()

# Generate mysqld_error.h
# Try not to change its timestamp if not necessary(as touching
# mysqld_error.h results in rebuild of the almost whole server)
# To preserve timestamp, first generate a temp header file, then copy it
# to mysqld_error.h using cmake -E copy_if_different
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp
   COMMAND comp_err
 --charset=${PROJECT_SOURCE_DIR}/sql/share/charsets
 --out-dir=${CMAKE_BINARY_DIR}/sql/share/
 --header_file=${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp
 --name_file=${CMAKE_BINARY_DIR}/include/mysqld_ername.h.tmp
 --state_file=${CMAKE_BINARY_DIR}/include/sql_state.h.tmp
 --in_file=${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt
   COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp ${CMAKE_BINARY_DIR}/include/mysqld_error.h
   COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/mysqld_ername.h.tmp ${CMAKE_BINARY_DIR}/include/mysqld_ername.h
   COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/sql_state.h.tmp ${CMAKE_BINARY_DIR}/include/sql_state.h
   DEPENDS comp_err ${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt)

ADD_CUSTOM_TARGET(GenError
                  ALL
                  DEPENDS
                  ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp)

# this approach doesn't work with cross-compiing (runs mariadbd)
# and doesn't work with ASAN, because LSAN complains about RocksDB (MDEV-36345).
IF(NOT CMAKE_CROSSCOMPILING AND NOT WITH_ASAN AND TARGET mariadbd)
  ADD_EXECUTABLE(generate_option_list generate_option_list.cc)
  TARGET_LINK_LIBRARIES(generate_option_list mysys pcre2-8)
  TARGET_INCLUDE_DIRECTORIES(generate_option_list PRIVATE ${PCRE_INCLUDE_DIRS})
  GET_PROPERTY(dynamic_plugins GLOBAL PROPERTY SERVER_DYNAMIC_PLUGINS)
  GET_PROPERTY(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
  IF(is_multi_config)
    SET(my_plugin_dir "${CMAKE_BINARY_DIR}/all_plugins/$<CONFIG>")
  ELSE()
    SET(my_plugin_dir "${CMAKE_BINARY_DIR}/all_plugins")
  ENDIF()

  SET(populate_plugin_dir)
  SET(plugin_load)
  LIST(APPEND populate_plugin_dir
    COMMAND ${CMAKE_COMMAND} -E rm -rf "${my_plugin_dir}"
    COMMAND ${CMAKE_COMMAND} -E make_directory "${my_plugin_dir}"
  )
  FOREACH(target ${dynamic_plugins})
    LIST(APPEND plugin_load "$<TARGET_FILE_NAME:${target}>")
     IF(WIN32)
       SET(maybe_create_hardlink  || ${CMAKE_COMMAND} -E create_hardlink
          $<TARGET_FILE:${target}>
          "${my_plugin_dir}/$<TARGET_FILE_NAME:${target}>")
     ENDIF()
     LIST(APPEND populate_plugin_dir
     COMMAND ${CMAKE_COMMAND} -E create_symlink
     $<TARGET_FILE:${target}>
     "${my_plugin_dir}/$<TARGET_FILE_NAME:${target}>"
     ${maybe_create_hardlink})
  ENDFOREACH()

  IF(NOT plugin_load)
    SET(plugin_load " ")
  ENDIF()

  STRING(REPLACE ";" ":" escaped_plugin_load "${plugin_load}")
  SET(genhdr ${CMAKE_BINARY_DIR}/extra/mariadbd_options.h)
  ADD_CUSTOM_COMMAND(OUTPUT ${genhdr}
   # COMMAND ${CMAKE_COMMAND} -E echo "Executing ${populate_plugin_dir}"
   ${populate_plugin_dir}
   #COMMAND ${CMAKE_COMMAND} -E echo "Executing generate_option_list $<TARGET_FILE:mariadbd> ${my_plugin_dir} ${escaped_plugin_load} ${genhdr}"
   COMMAND generate_option_list "$<TARGET_FILE:mariadbd>" "${my_plugin_dir}" "${escaped_plugin_load}" "${genhdr}"
   COMMAND_EXPAND_LISTS
 )

 ADD_CUSTOM_TARGET(gen_mariadbd_options_h
   DEPENDS ${genhdr}

 )

 MYSQL_ADD_EXECUTABLE(mariadb-migrate-config-file
   mariadb_migrate_config_file.c
   ${genhdr}
   COMPONENT Client)

 # Make sure consumers cannot compile before the header exists:
  SET_SOURCE_FILES_PROPERTIES("${genhdr}" PROPERTIES GENERATED TRUE)
  TARGET_LINK_LIBRARIES(mariadb-migrate-config-file PRIVATE mysys)
  TARGET_INCLUDE_DIRECTORIES(mariadb-migrate-config-file PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
ENDIF()

MYSQL_ADD_EXECUTABLE(my_print_defaults my_print_defaults.c COMPONENT Client)
TARGET_LINK_LIBRARIES(my_print_defaults  mysys)

MYSQL_ADD_EXECUTABLE(perror perror.c)
ADD_DEPENDENCIES(perror GenError)
TARGET_LINK_LIBRARIES(perror mysys)

IF(UNIX)
MYSQL_ADD_EXECUTABLE(resolveip resolveip.c)
TARGET_LINK_LIBRARIES(resolveip mysys)
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
  INCLUDE(CheckFunctionExists)
  INCLUDE(CheckLibraryExists)
  MY_SEARCH_LIBS(getaddrinfo  "nsl;socket;resolv" SOLARIS_NSL)
  TARGET_LINK_LIBRARIES(resolveip ${SOLARIS_NSL})
ENDIF()
ENDIF()

IF(WITH_INNOBASE_STORAGE_ENGINE)
  # Add path to the InnoDB headers
  INCLUDE_DIRECTORIES(
    ${CMAKE_SOURCE_DIR}/storage/innobase/include
    ${CMAKE_SOURCE_DIR}/sql)

  # We use the InnoDB code directly in case the code changes.
  ADD_DEFINITIONS("-DUNIV_INNOCHECKSUM")

  SET(INNOBASE_SOURCES
      ../storage/innobase/buf/buf0checksum.cc
      ../storage/innobase/ut/ut0ut.cc
      ../storage/innobase/buf/buf0buf.cc
      ../storage/innobase/page/page0zip.cc
      ../storage/innobase/fil/fil0crypt.cc
      )


  # clang ~16+ with return values being undefined is resolved by basic optimization
  # compiler flags for the function mach_read_from_2 (per MDEV-36316)
  IF(WITH_MSAN AND CMAKE_BUILD_TYPE STREQUAL "Debug")
      SET_SOURCE_FILES_PROPERTIES(
          ${INNOBASE_SOURCES}
          innochecksum.cc
          PROPERTIES COMPILE_FLAGS -Og)
  ENDIF()
  MYSQL_ADD_EXECUTABLE(innochecksum innochecksum.cc ${INNOBASE_SOURCES})
  TARGET_LINK_LIBRARIES(innochecksum mysys mysys_ssl)
  ADD_DEPENDENCIES(innochecksum GenError)
ENDIF()

MYSQL_ADD_EXECUTABLE(replace replace.c COMPONENT Client)
TARGET_LINK_LIBRARIES(replace mysys)

IF(UNIX)
  MYSQL_ADD_EXECUTABLE(resolve_stack_dump resolve_stack_dump.c COMPONENT Client)
  TARGET_LINK_LIBRARIES(resolve_stack_dump mysys)

  MYSQL_ADD_EXECUTABLE(mariadb-waitpid mysql_waitpid.c COMPONENT Client)
  TARGET_LINK_LIBRARIES(mariadb-waitpid mysys)

  MYSQL_ADD_EXECUTABLE(mariadbd-safe-helper mysqld_safe_helper.c COMPONENT Server)
  TARGET_LINK_LIBRARIES(mariadbd-safe-helper mysys)
ENDIF()

¤ Dauer der Verarbeitung: 0.30 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.