diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2018-11-06 14:20:19 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2018-11-06 15:24:35 +0000 |
commit | 38f1a10b6f6deeee0871535fe7430ebd90f3a935 (patch) | |
tree | 8612cac4d02df5c2135ba3ac62f85acb2a00393c | |
parent | e11522726bc7f05947e447ae96b85bc1e2d4685c (diff) |
CMake: Improve handling of the different kinds of iconv
Improve conditions/enable/disable conditions for iconv related features.
These are detected a bit different from what qmake does, so adapt to that.
Change-Id: I7b3e4baf05dc324507f370d7f651a62f29e42a98
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
-rw-r--r-- | cmake/QtBaseConfigureTests.cmake | 4 | ||||
-rw-r--r-- | src/corelib/configure.cmake | 14 | ||||
-rwxr-xr-x | util/cmake/configurejson2cmake.py | 24 |
3 files changed, 34 insertions, 8 deletions
diff --git a/cmake/QtBaseConfigureTests.cmake b/cmake/QtBaseConfigureTests.cmake index d7f9788fc5..b79a1e3839 100644 --- a/cmake/QtBaseConfigureTests.cmake +++ b/cmake/QtBaseConfigureTests.cmake @@ -131,7 +131,9 @@ function(run_config_tests) target_link_libraries(Iconv PUBLIC iconv) endif() - run_config_test_sun_iconv() + if(NOT TEST_posix_iconv) + run_config_test_sun_iconv() + endif() run_config_test_architecture() run_linker_version_script_support() endfunction() diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake index 5770882bc8..7436ced79b 100644 --- a/src/corelib/configure.cmake +++ b/src/corelib/configure.cmake @@ -386,7 +386,7 @@ qt_feature("iconv" PUBLIC PRIVATE SECTION "Internationalization" LABEL "iconv" PURPOSE "Provides internationalization on Unix." - CONDITION NOT QT_FEATURE_icu AND QT_FEATURE_textcodec AND ( QT_FEATURE_posix_libiconv OR TEST_sun_iconv OR QT_FEATURE_gnu_libiconv ) + CONDITION NOT QT_FEATURE_icu AND QT_FEATURE_textcodec AND ( TEST_posix_iconv OR TEST_sun_iconv ) ) qt_feature_definition("iconv" "QT_NO_ICONV" NEGATE VALUE "1") qt_feature("posix_libiconv" PRIVATE @@ -395,11 +395,17 @@ qt_feature("posix_libiconv" PRIVATE ENABLE INPUT_iconv STREQUAL 'posix' DISABLE INPUT_iconv STREQUAL 'sun' OR INPUT_iconv STREQUAL 'gnu' OR INPUT_iconv STREQUAL 'no' ) +qt_feature("sun_libiconv" + LABEL "SUN iconv" + CONDITION NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_sun_iconv + ENABLE TEST_sun_iconv + DISABLE NOT TEST_sun_iconv +) qt_feature("gnu_libiconv" PRIVATE LABEL "GNU iconv" - CONDITION NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND NOT QT_FEATURE_posix_libiconv AND NOT TEST_sun_iconv AND libs.gnu_iconv OR FIXME - ENABLE INPUT_iconv STREQUAL 'gnu' - DISABLE INPUT_iconv STREQUAL 'posix' OR INPUT_iconv STREQUAL 'sun' OR INPUT_iconv STREQUAL 'no' + CONDITION NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_posix_iconv AND NOT TEST_iconv_needlib + ENABLE TEST_posix_iconv AND NOT TEST_iconv_needlib + DISABLE NOT TEST_posix_iconv OR TEST_iconv_needlib ) qt_feature("icu" PRIVATE LABEL "ICU" diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py index e0335a0e52..5c137c394f 100755 --- a/util/cmake/configurejson2cmake.py +++ b/util/cmake/configurejson2cmake.py @@ -274,7 +274,6 @@ def map_condition(condition): mapped_features = { "dlopen": "UNIX", 'gbm': 'gbm_FOUND', - "sun-libiconv": "TEST_sun_iconv", "system-xcb": "ON", "system-freetype": "ON", } @@ -645,12 +644,22 @@ def parseFeature(ctx, feature, data, cm_fh): 'enable_gdb_index': None, 'enable_new_dtags': None, 'force_debug_info': None, - 'framework': { 'condition': 'APPLE AND BUILD_SHARED_LIBS', }, + 'framework': { + 'condition': 'APPLE AND BUILD_SHARED_LIBS', + }, 'gc_binaries': None, 'gcc-sysroot': None, 'gcov': None, + 'gnu-libiconv': { + 'condition': 'NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_posix_iconv AND NOT TEST_iconv_needlib', + 'enable': 'TEST_posix_iconv AND NOT TEST_iconv_needlib', + 'disable': 'NOT TEST_posix_iconv OR TEST_iconv_needlib', + }, 'GNUmake': None, 'host-dbus': None, + 'iconv': { + 'condition': 'NOT QT_FEATURE_icu AND QT_FEATURE_textcodec AND ( TEST_posix_iconv OR TEST_sun_iconv )' + }, 'incredibuild_xge': None, 'ltcg': None, 'msvc_mp': None, @@ -658,6 +667,11 @@ def parseFeature(ctx, feature, data, cm_fh): 'optimize_size': None, 'pkg-config': None, 'posix_fallocate': None, # Only needed for sqlite, which we do not want to build + 'posix_libiconv': { + 'condition': 'NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_posix_iconv AND TEST_iconv_needlib', + 'enable': 'TEST_posix_iconv AND TEST_iconv_needlib', + 'disable': 'NOT TEST_posix_iconv OR NOT TEST_iconv_needlib', + }, 'precompile_header': None, 'profile': None, 'qmakeargs': None, @@ -680,7 +694,11 @@ def parseFeature(ctx, feature, data, cm_fh): 'static_runtime': None, 'stl': None, # Do we really need to test for this in 2018?! 'strip': None, - 'sun-libiconv': None, # internal feature but not referenced in our system + 'sun-libiconv': { + 'condition': 'NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_sun_iconv', + 'enable': 'TEST_sun_iconv', + 'disable': 'NOT TEST_sun_iconv', + }, 'system-doubleconversion': None, # No system libraries anymore! 'system-freetype': None, 'system-jpeg': None, |