summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2021-12-06 18:42:58 +0100
committerSergei Golubchik <serg@mariadb.org>2021-12-06 18:45:21 +0100
commit23bfacf1cceb213111556ddb43c55e7c2eeb98e7 (patch)
treeb4ccded0912f01e70eee59747ef7bc9f5e07d451
parent2d21917e7db2db0900671aac2e29f49e4ff2acd7 (diff)
downloadmariadb-git-23bfacf1cceb213111556ddb43c55e7c2eeb98e7.tar.gz
Revert "Improve LibFMT detection"
This reverts commit 9feaa6be07f8eb91736e51830f754bc99f939a51. No, we do NOT support fmt 6.x, it formats values differently. And we MUST use FMT_HEADER_ONLY
-rw-r--r--.gitignore1
-rw-r--r--cmake/libfmt.cmake30
-rw-r--r--sql/CMakeLists.txt3
-rw-r--r--sql/item_strfunc.cc20
4 files changed, 9 insertions, 45 deletions
diff --git a/.gitignore b/.gitignore
index c914fb781a2..8f8a7b5a19a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -618,4 +618,3 @@ tests/mariadb-client-test
versioninfo_dll.rc
versioninfo_exe.rc
win/packaging/ca/symlinks.cc
-/_Deparsed_XSubs.pm
diff --git a/cmake/libfmt.cmake b/cmake/libfmt.cmake
index 2962e32166b..6a26056956d 100644
--- a/cmake/libfmt.cmake
+++ b/cmake/libfmt.cmake
@@ -1,3 +1,5 @@
+INCLUDE (CheckCXXSourceCompiles)
+INCLUDE (ExternalProject)
SET(WITH_LIBFMT "auto" CACHE STRING
"Which libfmt to use (possible values are 'bundled', 'system', or 'auto')")
@@ -10,7 +12,6 @@ MACRO(BUNDLE_LIBFMT)
SET(fmt_byproducts BUILD_BYPRODUCTS ${LIBFMT_INCLUDE_DIR}/fmt/format-inl.h)
ENDIF()
- INCLUDE (ExternalProject)
ExternalProject_Add(
libfmt
PREFIX "${dir}"
@@ -25,42 +26,17 @@ ENDMACRO()
MACRO (CHECK_LIBFMT)
IF(WITH_LIBFMT STREQUAL "system" OR WITH_LIBFMT STREQUAL "auto")
- FIND_PACKAGE(fmt)
- IF(fmt_FOUND)
- set(HAVE_SYSTEM_LIBFMT ${fmt_FOUND})
- ENDIF()
-
- FIND_LIBRARY(FMT_LIB_FOUND fmt)
- IF(FMT_LIB_FOUND)
- set(FMT_LIBRARIES fmt CACHE STRING "LibFormat libraries" FORCE)
- ADD_DEFINITIONS(-DLINK_SYSTEM_LIBFMT)
- ELSE(FMT_LIB_FOUND)
- set(FMT_HEADER_ONLY "#define FMT_HEADER_ONLY 1")
- set(FMT_LIBRARIES "" CACHE STRING "LibFormat libraries" FORCE)
- ENDIF(FMT_LIB_FOUND)
-
- INCLUDE (CheckCXXSourceCompiles)
CHECK_CXX_SOURCE_COMPILES(
"#define FMT_STATIC_THOUSANDS_SEPARATOR ','
- ${FMT_HEADER_ONLY}
+ #define FMT_HEADER_ONLY 1
#include <fmt/format-inl.h>
#include <iostream>
- #include <string>
- #if FMT_VERSION < 70000
- using namespace ::fmt::internal;
- #else
- using namespace ::fmt::detail;
- #endif
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));
- return 0;
}" HAVE_SYSTEM_LIBFMT)
- IF (HAVE_SYSTEM_LIBFMT)
- ADD_DEFINITIONS(-DHAVE_SYSTEM_LIBFMT)
- ENDIF()
ENDIF()
IF(NOT HAVE_SYSTEM_LIBFMT OR WITH_LIBFMT STREQUAL "bundled")
IF (WITH_LIBFMT STREQUAL "system")
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index dacdfdd2e2b..5662d89d0d7 100644
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -208,7 +208,6 @@ MAYBE_DISABLE_IPO(sql)
DTRACE_INSTRUMENT(sql)
TARGET_LINK_LIBRARIES(sql PUBLIC
mysys mysys_ssl dbug strings vio pcre2-8
- ${FMT_LIBRARIES}
tpool
${LIBWRAP} ${LIBCRYPT} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}
${SSL_LIBRARIES}
@@ -278,7 +277,7 @@ IF(MSVC OR CMAKE_SYSTEM_NAME MATCHES AIX)
ENDIF()
ADD_LIBRARY(sql_builtins STATIC ${CMAKE_CURRENT_BINARY_DIR}/sql_builtin.cc)
-TARGET_LINK_LIBRARIES(sql_builtins PUBLIC ${MYSQLD_STATIC_PLUGIN_LIBS})
+TARGET_LINK_LIBRARIES(sql_builtins ${MYSQLD_STATIC_PLUGIN_LIBS})
MYSQL_ADD_EXECUTABLE(mariadbd ${MYSQLD_SOURCE} DESTINATION ${INSTALL_SBINDIR} COMPONENT Server)
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 2afa6a4be48..d4bf28a9c21 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -57,18 +57,8 @@ C_MODE_END
/* fmtlib include (https://fmt.dev/). */
#define FMT_STATIC_THOUSANDS_SEPARATOR ','
-#if !defined(HAVE_SYSTEM_LIBFMT) && !defined(LINK_SYSTEM_LIBFMT)
#define FMT_HEADER_ONLY 1
-#endif
-
-#include <fmt/format-inl.h>
-
-#if FMT_VERSION < 70000
-using namespace ::fmt::internal;
-#else
-using namespace ::fmt::detail;
-#endif
-
+#include "fmt/format-inl.h"
size_t username_char_length= USERNAME_CHAR_LENGTH;
@@ -1403,14 +1393,14 @@ String *Item_func_sformat::val_str(String *res)
switch (args[carg]->result_type())
{
case INT_RESULT:
- vargs[carg-1]= make_arg<ctx>(args[carg]->val_int());
+ vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_int());
break;
case DECIMAL_RESULT: // TODO
case REAL_RESULT:
if (args[carg]->field_type() == MYSQL_TYPE_FLOAT)
- vargs[carg-1]= make_arg<ctx>((float)args[carg]->val_real());
+ vargs[carg-1]= fmt::detail::make_arg<ctx>((float)args[carg]->val_real());
else
- vargs[carg-1]= make_arg<ctx>(args[carg]->val_real());
+ vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_real());
break;
case STRING_RESULT:
if (!(parg= args[carg]->val_str(&val_arg[carg-1])))
@@ -1418,7 +1408,7 @@ String *Item_func_sformat::val_str(String *res)
delete [] vargs;
return NULL;
}
- vargs[carg-1]= make_arg<ctx>(*parg);
+ vargs[carg-1]= fmt::detail::make_arg<ctx>(*parg);
break;
case TIME_RESULT: // TODO
case ROW_RESULT: // TODO