diff options
author | Sergei Golubchik <serg@mariadb.org> | 2021-12-06 18:42:58 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2021-12-06 18:45:21 +0100 |
commit | 23bfacf1cceb213111556ddb43c55e7c2eeb98e7 (patch) | |
tree | b4ccded0912f01e70eee59747ef7bc9f5e07d451 | |
parent | 2d21917e7db2db0900671aac2e29f49e4ff2acd7 (diff) | |
download | mariadb-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-- | .gitignore | 1 | ||||
-rw-r--r-- | cmake/libfmt.cmake | 30 | ||||
-rw-r--r-- | sql/CMakeLists.txt | 3 | ||||
-rw-r--r-- | sql/item_strfunc.cc | 20 |
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 |