diff options
-rwxr-xr-x | configure | 99 | ||||
-rw-r--r-- | configure.json | 7 | ||||
-rw-r--r-- | configure.pri | 33 | ||||
-rw-r--r-- | mkspecs/dummy/qmake.conf | 8 | ||||
-rw-r--r-- | mkspecs/features/qt_configure.prf | 16 | ||||
-rw-r--r-- | tools/configure/configureapp.cpp | 49 |
6 files changed, 57 insertions, 155 deletions
@@ -283,23 +283,6 @@ getQMakeConf() getSingleQMakeVariable "$1" "$specvals" } -resolveDeviceMkspec() -{ - result=$(find "$relpath/mkspecs/devices/" -type d -name "*$1*" | sed "s,^$relpath/mkspecs/,,") - match_count=$(echo "$result" | wc -w) - if [ "$match_count" -gt 1 ]; then - echo >&2 "Error: Multiple matches for device '$1'. Candidates are:" - tabbed_result=$(echo "$result" | sed 's,^, ,') - echo >&2 "$tabbed_result" - echo "undefined" - elif [ "$match_count" -eq 0 ]; then - echo >&2 "Error: No device matching '$1'" - echo "undefined" - else - echo "$result" - fi -} - #------------------------------------------------------------------------------- # operating system detection #------------------------------------------------------------------------------- @@ -366,14 +349,6 @@ unset QTDIR # initalize internal variables CFG_RELEASE_TOOLS=no - -XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++" -XPLATFORM_MAC=no # Whether target platform is macOS, iOS, tvOS, or watchOS -XPLATFORM_IOS=no # Whether target platform is iOS -XPLATFORM_TVOS=no # Whether target platform is tvOS -XPLATFORM_WATCHOS=no # Whether target platform is watchOS -XPLATFORM_ANDROID=no -XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*) PLATFORM= OPT_SHADOW=maybe OPT_VERBOSE=no @@ -503,13 +478,6 @@ while [ "$#" -gt 0 ]; do platform) PLATFORM="$VAL" ;; - xplatform) - XPLATFORM="$VAL" - ;; - device) - XPLATFORM=`resolveDeviceMkspec $VAL` - [ "$XPLATFORM" = "undefined" ] && exit 101 - ;; optimized-qmake|optimized-tools) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_RELEASE_TOOLS="$VAL" @@ -711,44 +679,6 @@ if [ -z "$PLATFORM" ]; then esac fi -[ -z "$XPLATFORM" ] && XPLATFORM="$PLATFORM" - -case "$XPLATFORM" in - *win32-g++*) - XPLATFORM_MINGW=yes - ;; - *qnx-*) - ;; - *haiku-*) - ;; - *ios*) - XPLATFORM_MAC=yes - XPLATFORM_IOS=yes - ;; - *tvos*) - XPLATFORM_MAC=yes - XPLATFORM_TVOS=yes - ;; - *watchos*) - XPLATFORM_MAC=yes - XPLATFORM_WATCHOS=yes - ;; - *macx*) - XPLATFORM_MAC=yes - ;; - *integrity*) - ;; - # XPLATFORM_ANDROID should not be set for unsupported/android-g++ - *unsupported*) - ;; - *android-g++*) - XPLATFORM_ANDROID=g++ - ;; - *android-clang*) - XPLATFORM_ANDROID=clang - ;; -esac - #------------------------------------------------------------------------------- # command line and environment validation #------------------------------------------------------------------------------- @@ -758,14 +688,9 @@ if [ -d "$PLATFORM" ]; then else QMAKESPEC="$relpath/mkspecs/${PLATFORM}" fi -if [ -d "$XPLATFORM" ]; then - XQMAKESPEC="$XPLATFORM" -else - XQMAKESPEC="$relpath/mkspecs/${XPLATFORM}" -fi if [ "$BUILD_ON_MAC" = "yes" ]; then - if [ `basename $QMAKESPEC` = "macx-xcode" ] || [ `basename $XQMAKESPEC` = "macx-xcode" ]; then + if [ `basename $QMAKESPEC` = "macx-xcode" ]; then echo >&2 echo " Platform 'macx-xcode' should not be used when building Qt/Mac." >&2 echo " Please build Qt/Mac with 'macx-clang' or 'macx-g++', then use" >&2 @@ -787,26 +712,6 @@ if [ '!' -d "$QMAKESPEC" ]; then echo exit 2 fi -if [ '!' -d "$XQMAKESPEC" ]; then - echo - echo " The specified system/compiler is not supported:" - echo - echo " $XQMAKESPEC" - echo - echo " Please see the README file for a complete list." - echo - exit 2 -fi -if [ '!' -f "${XQMAKESPEC}/qplatformdefs.h" ]; then - echo - echo " The specified system/compiler port is not complete:" - echo - echo " $XQMAKESPEC/qplatformdefs.h" - echo - echo " Please information use the contact form at http://www.qt.io/contact-us" - echo - exit 2 -fi #------------------------------------------------------------------------------- # build tree initialization @@ -980,7 +885,7 @@ cat > "$QTCONFFILE" <<EOF [EffectivePaths] Prefix=.. [Paths] -TargetSpec=$XPLATFORM +TargetSpec=dummy HostSpec=$PLATFORM EOF if [ x"$relpath" != x"$outpath" ]; then diff --git a/configure.json b/configure.json index 59358180d0..77f956ed1a 100644 --- a/configure.json +++ b/configure.json @@ -423,7 +423,7 @@ "features": { "prepare": { - "output": [ "prepareOptions", "preparePaths" ] + "output": [ "prepareSpec", "prepareOptions", "preparePaths" ] }, "machineTuple": { "condition": "!config.linux || config.android || tests.machineTuple", @@ -984,6 +984,11 @@ "earlyReport": [ { + "type": "fatal", + "condition": "input.xplatform != '' && input.device != ''", + "message": "Cannot specify both -xplatform and -device." + }, + { "condition": "!features.prepare", "comment": "This is not an actual report - instead, it activates the early setup." }, diff --git a/configure.pri b/configure.pri index b8e338bb54..92020abbbb 100644 --- a/configure.pri +++ b/configure.pri @@ -476,6 +476,37 @@ defineTest(reloadSpec) { } } +defineTest(qtConfOutput_prepareSpec) { + device = $$eval(config.input.device) + !isEmpty(device) { + devices = $$files($$[QT_HOST_DATA/src]/mkspecs/devices/*$$device*) + isEmpty(devices): \ + qtConfFatalError("No device matching '$$device'.") + !count(devices, 1) { + err = "Multiple matches for device '$$device'. Candidates are:" + for (d, devices): \ + err += " $$basename(d)" + qtConfFatalError($$err) + } + XSPEC = $$relative_path($$devices, $$[QT_HOST_DATA/src]/mkspecs) + } + xspec = $$eval(config.input.xplatform) + !isEmpty(xspec) { + !exists($$[QT_HOST_DATA/src]/mkspecs/$$xspec/qmake.conf): \ + qtConfFatalError("Invalid target platform '$$xspec'.") + XSPEC = $$xspec + } + isEmpty(XSPEC): \ + XSPEC = $$[QMAKE_SPEC] + export(XSPEC) + QMAKESPEC = $$[QT_HOST_DATA/src]/mkspecs/$$XSPEC + export(QMAKESPEC) + + # deviceOptions() below contains conditionals coming form the spec, + # so this cannot be delayed for a batch reload. + reloadSpec() +} + defineTest(qtConfOutput_prepareOptions) { $${currentConfig}.output.devicePro += \ $$replace(config.input.device-option, "^([^=]+) *= *(.*)$", "\\1 = \\2") @@ -649,7 +680,7 @@ defineReplace(printHostPaths) { $$printInstallPath(HostLibraries, hostlibdir, lib) \ $$printInstallPath(HostData, hostdatadir, .) \ "Sysroot=$$config.input.sysroot" \ - "TargetSpec=$$[QMAKE_XSPEC]" \ + "TargetSpec=$$XSPEC" \ "HostSpec=$$[QMAKE_SPEC]" return($$ret) } diff --git a/mkspecs/dummy/qmake.conf b/mkspecs/dummy/qmake.conf new file mode 100644 index 0000000000..7077fe6345 --- /dev/null +++ b/mkspecs/dummy/qmake.conf @@ -0,0 +1,8 @@ +# +# Minimal qmake configuration qt_configure.prf is run with. +# + +# Make spec_post.prf happy. +MAKEFILE_GENERATOR = DUMMY +QMAKE_PLATFORM = dummy_platform +QMAKE_COMPILER = dummy_compiler diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf index b7b4e1f994..41bd75c45d 100644 --- a/mkspecs/features/qt_configure.prf +++ b/mkspecs/features/qt_configure.prf @@ -1768,6 +1768,14 @@ QMAKE_SAVED_ARGS = $$QMAKE_EXTRA_ARGS QMAKE_REDO_CONFIG = false qtConfParseCommandLine() +for (currentConfig, allConfigs) { + qtConfSetModuleName() + qtConfSetupModuleOutputs() + # do early checks, mainly to validate the command line + qtConfProcessEarlyChecks() +} +qtConfCheckErrors() + !isEmpty(_QMAKE_SUPER_CACHE_): \ QMAKE_CONFIG_CACHE = $$dirname(_QMAKE_SUPER_CACHE_)/config.cache else: \ @@ -1790,14 +1798,6 @@ QMAKE_CONFIG_LOG = $$OUT_PWD/config.log !equals(QMAKE_CONFIG_CACHE_USE, all): \ write_file($$QMAKE_CONFIG_LOG, "") -for (currentConfig, allConfigs) { - qtConfSetModuleName() - qtConfSetupModuleOutputs() - # do early checks, mainly to validate the command line - qtConfProcessEarlyChecks() -} -qtConfCheckErrors() - CONFIG += qt_conf_tests_allowed logn() logn("Running configuration tests...") diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 373fc89090..2ffec0707f 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -130,20 +130,6 @@ void Configure::parseCmdLine() } } - // Then look for XQMAKESPEC - bool isDeviceMkspec = false; - for (int j = 0 ; j < argCount; ++j) - { - if ((configCmdLine.at(j) == "-xplatform") || (configCmdLine.at(j) == "-device")) { - isDeviceMkspec = (configCmdLine.at(j) == "-device"); - ++j; - if (j == argCount) - break; - dictionary["XQMAKESPEC"] = configCmdLine.at(j); - break; - } - } - for (; i<configCmdLine.size(); ++i) { if (configCmdLine.at(i) == "-platform") { ++i; @@ -151,10 +137,6 @@ void Configure::parseCmdLine() break; dictionary[ "QMAKESPEC" ] = configCmdLine.at(i); dictionary[ "QMAKESPEC_FROM" ] = "commandline"; - } else if (configCmdLine.at(i) == "-xplatform" - || configCmdLine.at(i) == "-device") { - ++i; - // do nothing } else if (configCmdLine.at(i) == "-no-syncqt") @@ -207,34 +189,6 @@ void Configure::parseCmdLine() dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32"; } } - - if (isDeviceMkspec) { - const QStringList devices = mkspecs.filter("devices/", Qt::CaseInsensitive); - const QStringList family = devices.filter(dictionary["XQMAKESPEC"], Qt::CaseInsensitive); - - if (family.isEmpty()) { - dictionary[ "DONE" ] = "error"; - cout << "Error: No device matching '" << dictionary["XQMAKESPEC"] << "'." << endl; - } else if (family.size() > 1) { - dictionary[ "DONE" ] = "error"; - - cout << "Error: Multiple matches for device '" << dictionary["XQMAKESPEC"] << "'. Candidates are:" << endl; - - foreach (const QString &device, family) - cout << "\t* " << device << endl; - } else { - Q_ASSERT(family.size() == 1); - dictionary["XQMAKESPEC"] = family.at(0); - } - - } else { - // Ensure that -spec (XQMAKESPEC) exists in the mkspecs folder as well - if (dictionary.contains("XQMAKESPEC") && - !mkspecs.contains(dictionary["XQMAKESPEC"], Qt::CaseInsensitive)) { - dictionary[ "DONE" ] = "error"; - cout << "Invalid option \"" << dictionary["XQMAKESPEC"] << "\" for -xplatform." << endl; - } - } } void Configure::generateHeaders() @@ -361,8 +315,7 @@ void Configure::buildQmake() confStream << "[EffectivePaths]" << endl << "Prefix=.." << endl << "[Paths]" << endl - << "TargetSpec=" << (dictionary.contains("XQMAKESPEC") - ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"]) << endl + << "TargetSpec=dummy" << endl << "HostSpec=" << dictionary["QMAKESPEC"] << endl; if (sourcePath != buildPath) confStream << "[EffectiveSourcePaths]" << endl |