summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindLIBAIO.cmake4
-rw-r--r--cmake/FindLZ4.cmake16
-rw-r--r--cmake/FindLZO.cmake9
-rw-r--r--cmake/FindPMEM.cmake6
-rw-r--r--cmake/FindSnappy.cmake9
-rw-r--r--cmake/FindURING.cmake6
-rw-r--r--cmake/FindZSTD.cmake8
-rw-r--r--cmake/build_configurations/mysql_release.cmake11
-rw-r--r--cmake/libfmt.cmake53
-rw-r--r--cmake/maintainer.cmake1
-rw-r--r--cmake/os/Windows.cmake4
-rw-r--r--cmake/win_compatibility.manifest5
12 files changed, 103 insertions, 29 deletions
diff --git a/cmake/FindLIBAIO.cmake b/cmake/FindLIBAIO.cmake
index db49439f318..3a4205f7a45 100644
--- a/cmake/FindLIBAIO.cmake
+++ b/cmake/FindLIBAIO.cmake
@@ -1,7 +1,7 @@
-find_path(LIBAIO_INCLUDE_DIR NAMES libaio.h)
+find_path(LIBAIO_INCLUDE_DIRS NAMES libaio.h)
find_library(LIBAIO_LIBRARIES NAMES aio)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBAIO DEFAULT_MSG
- LIBAIO_LIBRARIES LIBAIO_INCLUDE_DIR)
+ LIBAIO_LIBRARIES LIBAIO_INCLUDE_DIRS)
diff --git a/cmake/FindLZ4.cmake b/cmake/FindLZ4.cmake
index 46c1fdc1b9f..eebd85969e3 100644
--- a/cmake/FindLZ4.cmake
+++ b/cmake/FindLZ4.cmake
@@ -1,9 +1,17 @@
-find_path(LZ4_INCLUDE_DIR NAMES lz4.h)
+find_path(LZ4_INCLUDE_DIRS NAMES lz4.h)
find_library(LZ4_LIBRARIES NAMES lz4)
+if(LZ4_INCLUDE_DIRS AND EXISTS "${LZ4_INCLUDE_DIRS}/lz4.h")
+ file(STRINGS "${LZ4_INCLUDE_DIRS}/lz4.h" LZ4_H REGEX "^#define LZ4_VERSION_[MR]")
+ string(REGEX REPLACE "LZ4_VERSION" "" LZ4_H "${LZ4_H}")
+ string(REGEX MATCHALL "[0-9]+" LZ4_H "${LZ4_H}")
+ string(REGEX REPLACE ";" "." LZ4_VERSION_STRING "${LZ4_H}")
+endif()
+
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
- LZ4 DEFAULT_MSG
- LZ4_LIBRARIES LZ4_INCLUDE_DIR)
+ LZ4
+ REQUIRED_VARS LZ4_LIBRARIES LZ4_INCLUDE_DIRS
+ VERSION_VAR LZ4_VERSION_STRING)
-mark_as_advanced(LZ4_INCLUDE_DIR LZ4_LIBRARIES)
+mark_as_advanced(LZ4_INCLUDE_DIRS LZ4_LIBRARIES)
diff --git a/cmake/FindLZO.cmake b/cmake/FindLZO.cmake
new file mode 100644
index 00000000000..04391bb4720
--- /dev/null
+++ b/cmake/FindLZO.cmake
@@ -0,0 +1,9 @@
+find_path(LZO_INCLUDE_DIRS NAMES lzo/lzo1x.h)
+find_library(LZO_LIBRARIES NAMES lzo2)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ LZO DEFAULT_MSG
+ LZO_LIBRARIES LZO_INCLUDE_DIRS)
+
+mark_as_advanced(LZO_INCLUDE_DIRS LZO_LIBRARIES)
diff --git a/cmake/FindPMEM.cmake b/cmake/FindPMEM.cmake
index 73e71bc29f4..024436444d2 100644
--- a/cmake/FindPMEM.cmake
+++ b/cmake/FindPMEM.cmake
@@ -7,12 +7,12 @@ if(DEFINED PMEM_LIBRARIES)
return()
endif()
-find_path(PMEM_INCLUDE_DIR NAMES libpmem.h)
+find_path(PMEM_INCLUDE_DIRS NAMES libpmem.h)
find_library(PMEM_LIBRARIES NAMES pmem)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
PMEM DEFAULT_MSG
- PMEM_LIBRARIES PMEM_INCLUDE_DIR)
+ PMEM_LIBRARIES PMEM_INCLUDE_DIRS)
-mark_as_advanced(PMEM_INCLUDE_DIR PMEM_LIBRARIES)
+mark_as_advanced(PMEM_INCLUDE_DIRS PMEM_LIBRARIES)
diff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake
new file mode 100644
index 00000000000..1e99eb65a50
--- /dev/null
+++ b/cmake/FindSnappy.cmake
@@ -0,0 +1,9 @@
+find_path(SNAPPY_INCLUDE_DIRS NAMES snappy.h)
+find_library(SNAPPY_LIBRARIES NAMES snappy)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ Snappy DEFAULT_MSG
+ SNAPPY_LIBRARIES SNAPPY_INCLUDE_DIRS)
+
+mark_as_advanced(SNAPPY_INCLUDE_DIRS SNAPPY_LIBRARIES)
diff --git a/cmake/FindURING.cmake b/cmake/FindURING.cmake
index 6e5e0783b46..b8141c9d480 100644
--- a/cmake/FindURING.cmake
+++ b/cmake/FindURING.cmake
@@ -1,9 +1,9 @@
-find_path(URING_INCLUDE_DIR NAMES liburing.h)
+find_path(URING_INCLUDE_DIRS NAMES liburing.h)
find_library(URING_LIBRARIES NAMES uring)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
URING DEFAULT_MSG
- URING_LIBRARIES URING_INCLUDE_DIR)
+ URING_LIBRARIES URING_INCLUDE_DIRS)
-mark_as_advanced(URING_INCLUDE_DIR URING_LIBRARIES)
+mark_as_advanced(URING_INCLUDE_DIRS URING_LIBRARIES)
diff --git a/cmake/FindZSTD.cmake b/cmake/FindZSTD.cmake
index ede59010742..d03e96fca15 100644
--- a/cmake/FindZSTD.cmake
+++ b/cmake/FindZSTD.cmake
@@ -1,11 +1,11 @@
# - Find zstd
# Find the zstd compression library and includes
#
-# ZSTD_INCLUDE_DIR - where to find zstd.h, etc.
+# ZSTD_INCLUDE_DIRS - where to find zstd.h, etc.
# ZSTD_LIBRARIES - List of libraries when using zstd.
# ZSTD_FOUND - True if zstd found.
-find_path(ZSTD_INCLUDE_DIR
+find_path(ZSTD_INCLUDE_DIRS
NAMES zstd.h
HINTS ${ZSTD_ROOT_DIR}/include)
@@ -14,8 +14,8 @@ find_library(ZSTD_LIBRARIES
HINTS ${ZSTD_ROOT_DIR}/lib)
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(ZSTD DEFAULT_MSG ZSTD_LIBRARIES ZSTD_INCLUDE_DIR)
+find_package_handle_standard_args(ZSTD DEFAULT_MSG ZSTD_LIBRARIES ZSTD_INCLUDE_DIRS)
mark_as_advanced(
ZSTD_LIBRARIES
- ZSTD_INCLUDE_DIR)
+ ZSTD_INCLUDE_DIRS)
diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake
index 3f1e4aca2cb..961db1b13b0 100644
--- a/cmake/build_configurations/mysql_release.cmake
+++ b/cmake/build_configurations/mysql_release.cmake
@@ -108,14 +108,10 @@ ELSEIF(RPM)
SET(WITH_PCRE system CACHE STRING "")
SET(CLIENT_PLUGIN_ZSTD OFF)
IF(RPM MATCHES "fedora|centos|rhel|rocky|alma")
- SET(WITH_INNODB_BZIP2 OFF CACHE STRING "")
- SET(WITH_INNODB_LZO OFF CACHE STRING "")
SET(WITH_ROCKSDB_BZip2 OFF CACHE STRING "")
ENDIF()
IF(RPM MATCHES "opensuse|sles|centos|rhel|rocky|alma")
- SET(WITH_INNODB_LZ4 OFF CACHE STRING "")
SET(WITH_ROCKSDB_LZ4 OFF CACHE STRING "")
- SET(GRN_WITH_LZ4 no CACHE STRING "")
ENDIF()
ELSEIF(DEB)
SET(WITH_SSL system CACHE STRING "")
@@ -126,9 +122,6 @@ ELSEIF(DEB)
SET(WITH_EMBEDDED_SERVER ON CACHE BOOL "")
SET(WITH_PCRE system CACHE STRING "")
SET(CLIENT_PLUGIN_ZSTD OFF)
- SET(WITH_INNODB_BZIP2 OFF CACHE STRING "")
- SET(WITH_INNODB_LZMA OFF CACHE STRING "")
- SET(WITH_INNODB_LZO OFF CACHE STRING "")
SET(WITH_ROCKSDB_BZip2 OFF CACHE STRING "")
ELSE()
SET(WITH_SSL bundled CACHE STRING "")
@@ -137,12 +130,8 @@ ELSE()
SET(WITH_JEMALLOC static CACHE STRING "")
SET(PLUGIN_AUTH_SOCKET STATIC CACHE STRING "")
SET(WITH_STRIPPED_CLIENT ON CACHE BOOL "Strip all client binaries")
- SET(WITH_INNODB_BZIP2 OFF CACHE STRING "")
- SET(WITH_INNODB_LZ4 OFF CACHE STRING "")
- SET(WITH_INNODB_LZO OFF CACHE STRING "")
SET(WITH_ROCKSDB_BZip2 OFF CACHE STRING "")
SET(WITH_ROCKSDB_LZ4 OFF CACHE STRING "")
- SET(GRN_WITH_LZ4 no CACHE STRING "")
ENDIF()
IF(NOT COMPILATION_COMMENT)
diff --git a/cmake/libfmt.cmake b/cmake/libfmt.cmake
new file mode 100644
index 00000000000..7eaa0dfa012
--- /dev/null
+++ b/cmake/libfmt.cmake
@@ -0,0 +1,53 @@
+INCLUDE (CheckCXXSourceCompiles)
+INCLUDE (ExternalProject)
+
+SET(WITH_LIBFMT "auto" CACHE STRING
+ "Which libfmt to use (possible values are 'bundled', 'system', or 'auto')")
+
+MACRO(BUNDLE_LIBFMT)
+ SET(dir "${CMAKE_BINARY_DIR}/extra/libfmt")
+ SET(LIBFMT_INCLUDE_DIR "${dir}/src/libfmt/include")
+
+ IF(CMAKE_VERSION VERSION_GREATER "3.0")
+ SET(fmt_byproducts BUILD_BYPRODUCTS ${LIBFMT_INCLUDE_DIR}/fmt/format-inl.h)
+ ENDIF()
+
+ ExternalProject_Add(
+ libfmt
+ PREFIX "${dir}"
+ URL "https://github.com/fmtlib/fmt/archive/refs/tags/8.0.1.zip"
+ URL_MD5 e77873199e897ca9f780479ad68e25b1
+ INSTALL_COMMAND ""
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ ${fmt_byproducts}
+ )
+ENDMACRO()
+
+MACRO (CHECK_LIBFMT)
+ IF(WITH_LIBFMT STREQUAL "system" OR WITH_LIBFMT STREQUAL "auto")
+ SET(CMAKE_REQUIRED_INCLUDES ${LIBFMT_INCLUDE_DIR})
+ CHECK_CXX_SOURCE_COMPILES(
+ "#define FMT_STATIC_THOUSANDS_SEPARATOR ','
+ #define FMT_HEADER_ONLY 1
+ #include <fmt/format-inl.h>
+ #include <iostream>
+ int main() {
+ fmt::format_args::format_arg arg=
+ fmt::detail::make_arg<fmt::format_context>(42);
+ std::cout << fmt::vformat(\"The answer is {}.\",
+ fmt::format_args(&arg, 1));
+ }" HAVE_SYSTEM_LIBFMT)
+ SET(CMAKE_REQUIRED_INCLUDES)
+ ENDIF()
+ IF(NOT HAVE_SYSTEM_LIBFMT OR WITH_LIBFMT STREQUAL "bundled")
+ IF (WITH_LIBFMT STREQUAL "system")
+ MESSAGE(FATAL_ERROR "system libfmt library is not found or unusable")
+ ENDIF()
+ BUNDLE_LIBFMT()
+ ELSE()
+ FIND_FILE(Libfmt_core_h fmt/core.h) # for build_depends.cmake
+ ENDIF()
+ENDMACRO()
+
+MARK_AS_ADVANCED(LIBFMT_INCLUDE_DIR)
diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake
index 179308a76f6..dfc725c36b9 100644
--- a/cmake/maintainer.cmake
+++ b/cmake/maintainer.cmake
@@ -48,6 +48,7 @@ SET(MY_ERROR_FLAGS -Werror)
IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "6.0.0")
SET(MY_ERROR_FLAGS ${MY_ERROR_FLAGS} -Wno-error=maybe-uninitialized)
+ SET(MY_ERROR_FLAGS ${MY_ERROR_FLAGS} -Wno-error=non-virtual-dtor) # gcc bug 7302
ENDIF()
IF(MYSQL_MAINTAINER_MODE MATCHES "OFF|WARN")
diff --git a/cmake/os/Windows.cmake b/cmake/os/Windows.cmake
index 24eb7809f01..f951eed7651 100644
--- a/cmake/os/Windows.cmake
+++ b/cmake/os/Windows.cmake
@@ -60,8 +60,8 @@ ENDIF()
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0A00)
-# We do not want the windows.h macros min/max
-ADD_DEFINITIONS(-DNOMINMAX)
+# We do not want the windows.h , or winsvc.h macros min/max
+ADD_DEFINITIONS(-DNOMINMAX -DNOSERVICE)
# Speed up build process excluding unused header files
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
diff --git a/cmake/win_compatibility.manifest b/cmake/win_compatibility.manifest
index 2e4b27a6dc4..0e7ce667d68 100644
--- a/cmake/win_compatibility.manifest
+++ b/cmake/win_compatibility.manifest
@@ -19,4 +19,9 @@
</application>
</compatibility>
+ <application>
+ <windowsSettings>
+ <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
+ </windowsSettings>
+ </application>
</asmv1:assembly>