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>
This commit is contained in:
Tobias Hunger 2018-11-06 14:20:19 +01:00
parent e11522726b
commit 38f1a10b6f
3 changed files with 34 additions and 8 deletions

View File

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

View File

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

View File

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