Revert "Improve LibFMT detection"

This reverts commit 9feaa6be07.

No, we do NOT support fmt 6.x, it formats values differently.
And we MUST use FMT_HEADER_ONLY
This commit is contained in:
Sergei Golubchik 2021-12-06 18:42:58 +01:00
parent 2d21917e7d
commit 23bfacf1cc
4 changed files with 9 additions and 45 deletions

1
.gitignore vendored
View file

@ -618,4 +618,3 @@ tests/mariadb-client-test
versioninfo_dll.rc
versioninfo_exe.rc
win/packaging/ca/symlinks.cc
/_Deparsed_XSubs.pm

View file

@ -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")

View file

@ -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)

View file

@ -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