From 729a73a9cfe774cb49251be8c99ba5b26d516e01 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Fri, 21 Feb 2020 15:52:58 +0100 Subject: CMake: Remove old 3rdparty mechanism for double conversion Change-Id: I2b20d4d9d95a1f7f59bc506046a1ebc20eb305f7 Reviewed-by: Leander Beernaert Reviewed-by: Alexandru Croitor --- cmake/FindWrapDoubleConversion.cmake | 12 ++-------- src/3rdparty/CMakeLists.txt | 1 - src/3rdparty/double-conversion/CMakeLists.txt | 21 ------------------ src/corelib/.prev_CMakeLists.txt | 25 +++++++++++++++++++-- src/corelib/CMakeLists.txt | 32 +++++++++++++++++++-------- src/corelib/configure.cmake | 15 +++++++++++++ util/cmake/configurejson2cmake.py | 3 --- util/cmake/helper.py | 2 +- util/cmake/pro2cmake.py | 1 + 9 files changed, 65 insertions(+), 47 deletions(-) delete mode 100644 src/3rdparty/double-conversion/CMakeLists.txt diff --git a/cmake/FindWrapDoubleConversion.cmake b/cmake/FindWrapDoubleConversion.cmake index 9c804a3eec..ed5c394ade 100644 --- a/cmake/FindWrapDoubleConversion.cmake +++ b/cmake/FindWrapDoubleConversion.cmake @@ -5,12 +5,11 @@ if(TARGET WrapDoubleConversion::WrapDoubleConversion) return() endif() -add_library(WrapDoubleConversion::WrapDoubleConversion INTERFACE IMPORTED) - find_package(double-conversion) if (double-conversion_FOUND) include(FeatureSummary) set_package_properties(double-conversion PROPERTIES TYPE REQUIRED) + add_library(WrapDoubleConversion::WrapDoubleConversion INTERFACE IMPORTED) target_link_libraries(WrapDoubleConversion::WrapDoubleConversion INTERFACE double-conversion::double-conversion) set(WrapDoubleConversion_FOUND 1) @@ -44,18 +43,11 @@ int main(int argc, char *argv[]) { return 0; }" HAVE_SPRINTF_L) -# In a static build, we need to find the package to bring the target into scope. -find_package(QtDoubleConversion QUIET) - if (HAVE__SPRINTF_L OR HAVE_SPRINTF_L) + add_library(WrapDoubleConversion::WrapDoubleConversion INTERFACE IMPORTED) target_compile_definitions(WrapDoubleConversion::WrapDoubleConversion INTERFACE QT_NO_DOUBLECONVERSION) set(WrapDoubleConversion_FOUND 1) -elseif(TARGET QtDoubleConversion) - # If a Config package wasn't found, and the C++ library doesn't contain the necessary functions, - # use the library bundled with Qt. - target_link_libraries(WrapDoubleConversion::WrapDoubleConversion INTERFACE QtDoubleConversion) - set(WrapDoubleConversion_FOUND 1) else() set(WrapDoubleConversion_FOUND 0) endif() diff --git a/src/3rdparty/CMakeLists.txt b/src/3rdparty/CMakeLists.txt index d0dbb8aef5..c6a5da43ae 100644 --- a/src/3rdparty/CMakeLists.txt +++ b/src/3rdparty/CMakeLists.txt @@ -1,7 +1,6 @@ # special case skip regeneration # The file is maintained manually add_subdirectory(harfbuzz) -add_subdirectory(double-conversion) if(QT_FEATURE_png AND NOT QT_FEATURE_system_png) add_subdirectory(libpng) diff --git a/src/3rdparty/double-conversion/CMakeLists.txt b/src/3rdparty/double-conversion/CMakeLists.txt deleted file mode 100644 index 7450bc48ec..0000000000 --- a/src/3rdparty/double-conversion/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# special case begin - -add_library(QtDoubleConversion STATIC - ${CMAKE_CURRENT_SOURCE_DIR}/bignum.cc - ${CMAKE_CURRENT_SOURCE_DIR}/bignum-dtoa.cc - ${CMAKE_CURRENT_SOURCE_DIR}/cached-powers.cc - ${CMAKE_CURRENT_SOURCE_DIR}/diy-fp.cc - ${CMAKE_CURRENT_SOURCE_DIR}/double-conversion.cc - ${CMAKE_CURRENT_SOURCE_DIR}/fast-dtoa.cc - ${CMAKE_CURRENT_SOURCE_DIR}/fixed-dtoa.cc - ${CMAKE_CURRENT_SOURCE_DIR}/strtod.cc - ) - -target_include_directories(QtDoubleConversion PUBLIC - $ - $ - $ - ) - -qt_install_3rdparty_library(QtDoubleConversion) -# special case end diff --git a/src/corelib/.prev_CMakeLists.txt b/src/corelib/.prev_CMakeLists.txt index a9fb15f505..e33ce41e19 100644 --- a/src/corelib/.prev_CMakeLists.txt +++ b/src/corelib/.prev_CMakeLists.txt @@ -235,8 +235,6 @@ qt_add_module(Core ../3rdparty/md5 ../3rdparty/sha3 ../3rdparty/tinycbor/src - LIBRARIES - doubleconversion PRECOMPILED_HEADER "global/qt_pch.h" NO_PCH_SOURCES @@ -631,6 +629,29 @@ qt_extend_target(Core CONDITION QT_FEATURE_commandlineparser tools/qcommandlineparser.cpp tools/qcommandlineparser.h ) +qt_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion + LIBRARIES + WrapDoubleConversion::WrapDoubleConversion +) + +qt_extend_target(Core CONDITION QT_FEATURE_doubleconversion AND NOT QT_FEATURE_system_doubleconversion + SOURCES + ../3rdparty/double-conversion/bignum.cc ../3rdparty/double-conversion/bignum.h + ../3rdparty/double-conversion/bignum-dtoa.cc ../3rdparty/double-conversion/bignum-dtoa.h + ../3rdparty/double-conversion/cached-powers.cc ../3rdparty/double-conversion/cached-powers.h + ../3rdparty/double-conversion/diy-fp.cc ../3rdparty/double-conversion/diy-fp.h + ../3rdparty/double-conversion/double-conversion.cc + ../3rdparty/double-conversion/fast-dtoa.cc ../3rdparty/double-conversion/fast-dtoa.h + ../3rdparty/double-conversion/fixed-dtoa.cc ../3rdparty/double-conversion/fixed-dtoa.h + ../3rdparty/double-conversion/ieee.h + ../3rdparty/double-conversion/include/double-conversion/double-conversion.h + ../3rdparty/double-conversion/include/double-conversion/utils.h + ../3rdparty/double-conversion/strtod.cc ../3rdparty/double-conversion/strtod.h + INCLUDE_DIRECTORIES + ../3rdparty/double-conversion/.. + ../3rdparty/double-conversion/include +) + qt_extend_target(Core CONDITION QT_FEATURE_easingcurve SOURCES tools/qeasingcurve.cpp tools/qeasingcurve.h diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index da5b6fa670..7dc5cda06c 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -2,15 +2,8 @@ # special case begin qt_find_package(Threads PROVIDED_TARGETS Threads::Threads) -qt_find_package(WrapDoubleConversion REQUIRED - PROVIDED_TARGETS WrapDoubleConversion::WrapDoubleConversion) qt_find_package(WrapPCRE2 PROVIDED_TARGETS WrapPCRE2::WrapPCRE2) -if (NOT WrapDoubleConversion_FOUND) - message(FATAL_ERROR "Your C library does not provide \ - sscanf_l/snprintf_l _snprintf_l/_sscanf_l. \ - You need to use libdouble-conversion for double/string conversion.") -endif() # compute the reverse relative path from QtCoreConfigExtras to the install prefix # this is used in QtCoreConfigExtras to make its install paths relocatable @@ -251,11 +244,9 @@ qt_add_module(Core NO_PCH_SOURCES "text/qstring_compat.cpp" LIBRARIES - # double-conversion # special case remove Qt::GlobalConfigPrivate # special case QtHarfBuzz # special case Threads::Threads # special case - WrapDoubleConversion::WrapDoubleConversion # special case PUBLIC_LIBRARIES # special case: Qt::Platform # special case: # special case begin @@ -730,6 +721,29 @@ qt_extend_target(Core CONDITION QT_FEATURE_commandlineparser tools/qcommandlineparser.cpp tools/qcommandlineparser.h ) +qt_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion + LIBRARIES + WrapDoubleConversion::WrapDoubleConversion +) + +qt_extend_target(Core CONDITION QT_FEATURE_doubleconversion AND NOT QT_FEATURE_system_doubleconversion + SOURCES + ../3rdparty/double-conversion/bignum.cc ../3rdparty/double-conversion/bignum.h + ../3rdparty/double-conversion/bignum-dtoa.cc ../3rdparty/double-conversion/bignum-dtoa.h + ../3rdparty/double-conversion/cached-powers.cc ../3rdparty/double-conversion/cached-powers.h + ../3rdparty/double-conversion/diy-fp.cc ../3rdparty/double-conversion/diy-fp.h + ../3rdparty/double-conversion/double-conversion.cc + ../3rdparty/double-conversion/fast-dtoa.cc ../3rdparty/double-conversion/fast-dtoa.h + ../3rdparty/double-conversion/fixed-dtoa.cc ../3rdparty/double-conversion/fixed-dtoa.h + ../3rdparty/double-conversion/ieee.h + ../3rdparty/double-conversion/include/double-conversion/double-conversion.h + ../3rdparty/double-conversion/include/double-conversion/utils.h + ../3rdparty/double-conversion/strtod.cc ../3rdparty/double-conversion/strtod.h + INCLUDE_DIRECTORIES + ../3rdparty/double-conversion/.. + ../3rdparty/double-conversion/include +) + qt_extend_target(Core CONDITION QT_FEATURE_easingcurve SOURCES tools/qeasingcurve.cpp tools/qeasingcurve.h diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake index 556622aa79..811030bd38 100644 --- a/src/corelib/configure.cmake +++ b/src/corelib/configure.cmake @@ -2,6 +2,10 @@ #### Inputs +# input doubleconversion +set(INPUT_doubleconversion "undefined" CACHE STRING "") +set_property(CACHE INPUT_doubleconversion PROPERTY STRINGS undefined no qt system) + # input iconv set(INPUT_iconv "undefined" CACHE STRING "") set_property(CACHE INPUT_iconv PROPERTY STRINGS undefined no yes posix sun gnu) @@ -10,6 +14,7 @@ set_property(CACHE INPUT_iconv PROPERTY STRINGS undefined no yes posix sun gnu) #### Libraries +qt_find_package(WrapDoubleConversion PROVIDED_TARGETS WrapDoubleConversion::WrapDoubleConversion) qt_find_package(GLIB2 PROVIDED_TARGETS GLIB2::GLIB2) qt_find_package(ICU COMPONENTS i18n uc data PROVIDED_TARGETS ICU::i18n ICU::uc ICU::data) qt_find_package(Libsystemd PROVIDED_TARGETS PkgConfig::Libsystemd) @@ -529,6 +534,16 @@ qt_feature("clock-monotonic" PUBLIC CONDITION QT_FEATURE_clock_gettime AND TEST_clock_monotonic ) qt_feature_definition("clock-monotonic" "QT_NO_CLOCK_MONOTONIC" NEGATE VALUE "1") +qt_feature("doubleconversion" PUBLIC PRIVATE + LABEL "DoubleConversion" +) +qt_feature_definition("doubleconversion" "QT_NO_DOUBLECONVERSION" NEGATE VALUE "1") +qt_feature("system-doubleconversion" PRIVATE + LABEL " Using system DoubleConversion" + CONDITION QT_FEATURE_doubleconversion AND WrapDoubleConversion_FOUND + ENABLE INPUT_doubleconversion STREQUAL 'system' + DISABLE INPUT_doubleconversion STREQUAL 'qt' +) qt_feature("cxx11_future" PUBLIC LABEL "C++11 " CONDITION TEST_cxx11_future diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py index 0966a42932..6b68bf15bb 100755 --- a/util/cmake/configurejson2cmake.py +++ b/util/cmake/configurejson2cmake.py @@ -461,7 +461,6 @@ def parseInput(ctx, sinput, data, cm_fh): "widgets", "xplatform", "zlib", - "doubleconversion", "eventfd", "glib", "icu", @@ -772,7 +771,6 @@ def get_feature_mapping(): }, "debug": {"condition": "CMAKE_BUILD_TYPE STREQUAL Debug OR Debug IN_LIST CMAKE_CONFIGURATION_TYPES"}, "dlopen": {"condition": "UNIX"}, - "doubleconversion": None, "enable_gdb_index": None, "enable_new_dtags": None, "force_debug_info": { @@ -838,7 +836,6 @@ def get_feature_mapping(): "enable": "TEST_sun_iconv", "disable": "NOT TEST_sun_iconv", }, - "system-doubleconversion": None, # No system libraries anymore! "system-sqlite": None, "system-xcb": None, "tiff": {"condition": "QT_FEATURE_imageformatplugin AND TIFF_FOUND"}, diff --git a/util/cmake/helper.py b/util/cmake/helper.py index bac0bdb725..aa6107412f 100644 --- a/util/cmake/helper.py +++ b/util/cmake/helper.py @@ -398,7 +398,7 @@ _library_map = [ LibraryMapping("directfb", "DirectFB", "PkgConfig::DirectFB"), LibraryMapping("db2", "DB2", "DB2::DB2"), LibraryMapping("dbus", "WrapDBus1", "dbus-1", resultVariable="DBus1"), - LibraryMapping("doubleconversion", None, None), + LibraryMapping("doubleconversion", "WrapDoubleConversion", "WrapDoubleConversion::WrapDoubleConversion"), LibraryMapping("drm", "Libdrm", "Libdrm::Libdrm"), LibraryMapping("egl", "EGL", "EGL::EGL"), LibraryMapping("flite", "Flite", "Flite::Flite"), diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py index 56d7e8d48d..bba01bb595 100755 --- a/util/cmake/pro2cmake.py +++ b/util/cmake/pro2cmake.py @@ -1564,6 +1564,7 @@ def map_condition(condition: str) -> str: and is_known_3rd_party_library(feature_name[7:]) and not feature_name.startswith("system_jpeg") and not feature_name.startswith("system_zlib") + and not feature_name.startswith("system_doubleconversion") ): part = "ON" elif feature == "dlopen": -- cgit v1.2.3