From fe65ca0176e126f0b33bfcfdaab1154c0bfabe42 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 5 Sep 2021 11:37:41 +0200 Subject: [PATCH] don't build bundled libfmt, we use it in header-only mode anyway --- cmake/libfmt.cmake | 27 ++++++--------------------- libmysqld/CMakeLists.txt | 2 +- sql/CMakeLists.txt | 6 +++++- 3 files changed, 12 insertions(+), 23 deletions(-) diff --git a/cmake/libfmt.cmake b/cmake/libfmt.cmake index 57d173307d2..27ac5a6ff85 100644 --- a/cmake/libfmt.cmake +++ b/cmake/libfmt.cmake @@ -7,9 +7,6 @@ SET(WITH_LIBFMT "auto" CACHE STRING MACRO(BUNDLE_LIBFMT) SET(dir "${CMAKE_BINARY_DIR}/extra/libfmt") SET(LIBFMT_INCLUDE_DIR "${dir}/src/libfmt/include") - ADD_LIBRARY(fmt STATIC IMPORTED GLOBAL) - SET(file ${dir}/src/libfmt-build/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}fmt${CMAKE_STATIC_LIBRARY_SUFFIX}) - SET_TARGET_PROPERTIES(fmt PROPERTIES IMPORTED_LOCATION ${file}) ExternalProject_Add( libfmt @@ -17,34 +14,22 @@ MACRO(BUNDLE_LIBFMT) URL "https://github.com/fmtlib/fmt/archive/refs/tags/8.0.1.zip" URL_MD5 e77873199e897ca9f780479ad68e25b1 INSTALL_COMMAND "" - CMAKE_ARGS - "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" - "-DBUILD_SHARED_LIBS=OFF" - "-DFMT_DEBUG_POSTFIX=" - "-DFMT_DOC=OFF" - "-DFMT_TEST=OFF" - "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" - "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} ${PIC_FLAG}" - "-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}" - "-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" - "-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}" - "-DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL}" - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - BUILD_BYPRODUCTS ${file} + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + BUILD_BYPRODUCTS ${LIBFMT_INCLUDE_DIR}/fmt/format-inl.h ) - SET_TARGET_PROPERTIES(fmt PROPERTIES EXCLUDE_FROM_ALL TRUE) ENDMACRO() MACRO (CHECK_LIBFMT) IF(WITH_LIBFMT STREQUAL "system" OR WITH_LIBFMT STREQUAL "auto") - SET(CMAKE_REQUIRED_LIBRARIES fmt) CHECK_CXX_SOURCE_COMPILES( - "#include + "#define FMT_STATIC_THOUSANDS_SEPARATOR ',' + #define FMT_HEADER_ONLY 1 + #include #include int main() { std::cout << fmt::format(\"The answer is {}.\", 42); }" HAVE_SYSTEM_LIBFMT) - SET(CMAKE_REQUIRED_LIBRARIES) ENDIF() IF(NOT HAVE_SYSTEM_LIBFMT OR WITH_LIBFMT STREQUAL "bundled") IF (WITH_LIBFMT STREQUAL "system") diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 9f3ccb4cd63..117200b540d 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -396,7 +396,7 @@ IF(NOT DISABLE_SHARED) # libmysqld SET_TARGET_PROPERTIES(libmysqld PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(mysqlserver PROPERTIES CLEAN_DIRECT_OUTPUT 1) - TARGET_LINK_LIBRARIES(mysqlserver LINK_PRIVATE tpool fmt ${CRC32_LIBRARY}) + TARGET_LINK_LIBRARIES(mysqlserver LINK_PRIVATE tpool ${CRC32_LIBRARY}) IF(LIBMYSQLD_SO_EXTRA_LIBS) TARGET_LINK_LIBRARIES(libmysqld LINK_PRIVATE ${LIBMYSQLD_SO_EXTRA_LIBS}) ENDIF() diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 7318667901f..b4fd19b2194 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -208,7 +208,7 @@ MAYBE_DISABLE_IPO(sql) DTRACE_INSTRUMENT(sql) TARGET_LINK_LIBRARIES(sql mysys mysys_ssl dbug strings vio pcre2-8 - tpool fmt + tpool ${LIBWRAP} ${LIBCRYPT} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${SSL_LIBRARIES} ${LIBSYSTEMD}) @@ -391,6 +391,10 @@ ADD_CUSTOM_TARGET( ${CMAKE_CURRENT_BINARY_DIR}/yy_oracle.cc ) +IF(TARGET libfmt) + ADD_DEPENDENCIES(GenServerSource libfmt) +ENDIF() + IF(WIN32 OR HAVE_DLOPEN AND NOT DISABLE_SHARED) ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def) SET_TARGET_PROPERTIES(udf_example PROPERTIES PREFIX "")