summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure195
-rw-r--r--configure.json12
-rw-r--r--configure.pri166
-rw-r--r--mkspecs/features/qt_configure.prf14
-rw-r--r--src/gui/configure.json6
-rw-r--r--tools/configure/Makefile.mingw4
-rw-r--r--tools/configure/Makefile.win324
-rw-r--r--tools/configure/configure.pro4
-rw-r--r--tools/configure/configureapp.cpp216
-rw-r--r--tools/configure/configureapp.h6
-rw-r--r--tools/configure/environment.cpp25
-rw-r--r--tools/configure/environment.h1
-rw-r--r--tools/configure/main.cpp7
-rw-r--r--tools/configure/tools.cpp79
-rw-r--r--tools/configure/tools.h43
15 files changed, 213 insertions, 569 deletions
diff --git a/configure b/configure
index bc18e614d2..48dea87fb7 100755
--- a/configure
+++ b/configure
@@ -400,13 +400,6 @@ UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-# detect the "echo without newline" style. usage: echo $ECHO_N "<string>$ECHO_C"
-if echo '\c' | grep '\c' >/dev/null; then
- ECHO_N=-n
-else
- ECHO_C='\c'
-fi
-
BUILD_ON_MAC=no
if [ -d /System/Library/Frameworks/Carbon.framework ]; then
BUILD_ON_MAC=yes
@@ -469,7 +462,6 @@ unset QTDIR
# initalize internal variables
CFG_RELEASE_TOOLS=no
-CFG_ANDROID_STYLE_ASSETS=yes
XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++"
XPLATFORM_MAC=no # Whether target platform is macOS, iOS, tvOS, or watchOS
@@ -790,12 +782,6 @@ while [ "$#" -gt 0 ]; do
android-toolchain-version)
CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION="$VAL"
;;
- android-style-assets)
- # Required to be able to show the correct license text
- if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
- CFG_ANDROID_STYLE_ASSETS="$VAL"
- fi
- ;;
*)
;;
esac
@@ -1008,168 +994,6 @@ case "$XPLATFORM" in
esac
#-------------------------------------------------------------------------------
-# check the license
-#-------------------------------------------------------------------------------
-
-if [ "$COMMERCIAL_USER" = "ask" ]; then
- while true; do
- echo "Which edition of Qt do you want to use ?"
- echo
- echo "Type 'c' if you want to use the Commercial Edition."
- echo "Type 'o' if you want to use the Open Source Edition."
- echo
- read commercial
- echo
- if [ "$commercial" = "c" ]; then
- COMMERCIAL_USER="yes"
- OPT_CMDLINE="$OPT_CMDLINE
--commercial"
- break
- elif [ "$commercial" = "o" ]; then
- COMMERCIAL_USER="no"
- OPT_CMDLINE="$OPT_CMDLINE
--opensource"
- break
- fi
- done
-fi
-
-if [ -f "$relpath"/LICENSE.PREVIEW.COMMERCIAL ] && [ $COMMERCIAL_USER = "yes" ]; then
- # Commercial preview release
- Licensee="Preview"
- Edition="Preview"
- EditionString="Technology Preview"
-elif [ $COMMERCIAL_USER = "yes" ]; then
- if [ $UNAME_SYSTEM = "Linux" ]; then
- case "$PLATFORM" in
- *-32)
- Licheck=licheck32
- ;;
- *-64)
- Licheck=licheck64
- ;;
- *)
- if file -L /bin/sh | grep -q "64-bit" ; then
- Licheck=licheck64
- else
- Licheck=licheck32
- fi
- ;;
- esac
- elif [ $UNAME_SYSTEM = "Darwin" ]; then
- Licheck=licheck_mac
- else
- echo >&2 "Host operating system not supported by this edition of Qt."
- exit 1
- fi
- if [ -x "$relpath/bin/$Licheck" ]; then
- LicheckOutput=`$relpath/bin/$Licheck $OPT_CONFIRM_LICENSE $relpath $outpath\
- $PLATFORM $XPLATFORM`
- if [ $? -ne 0 ]; then
- exit 1
- else
- eval "$LicheckOutput"
- fi
- else
- echo
- echo "Error: This is the Open Source version of Qt."
- echo "If you want to use Enterprise features of Qt,"
- echo "use the contact form at http://www.qt.io/contact-us"
- echo "to purchase a license."
- echo
- exit 1
- fi
-elif [ $COMMERCIAL_USER = "no" ]; then
- # Open Source edition - may only be used under the terms of the LGPLv3 or GPLv2.
- Licensee="Open Source"
- Edition="OpenSource"
- EditionString="Open Source"
-fi
-
-if [ "$Edition" = "OpenSource" ] || [ "$Edition" = "Preview" ]; then
- echo
- echo "This is the Qt ${EditionString} Edition."
- echo
-fi
-
-if [ "$Edition" = "OpenSource" ]; then
- while true; do
- if [ "$CFG_ANDROID_STYLE_ASSETS" = "no" ] || [ "$XPLATFORM_ANDROID" = "no" ]; then
- echo "You are licensed to use this software under the terms of"
- echo "the GNU Lesser General Public License (LGPL) version 3."
- echo "You are also licensed to use this software under the terms of"
- echo "the GNU General Public License (GPL) version 2."
- affix="either"
- showGPL2="yes"
- else
- echo "You are licensed to use this software under the terms of"
- echo "the GNU Lesser General Public License (LGPL) version 3."
- showGPL2="no"
- affix="the"
- fi
-
- echo
- if [ "$OPT_CONFIRM_LICENSE" = "yes" ]; then
- echo "You have already accepted the terms of the $EditionString license."
- acceptance=yes
- else
- if [ -f "$relpath/LICENSE.LGPL3" ]; then
- echo "Type 'L' to view the GNU Lesser General Public License version 3."
- fi
- if [ "$showGPL2" = "yes" ]; then
- echo "Type 'G' to view the GNU General Public License version 2."
- fi
- echo "Type 'yes' to accept this license offer."
- echo "Type 'no' to decline this license offer."
- echo
- echo $ECHO_N "Do you accept the terms of $affix license? $ECHO_C"
- read acceptance
- fi
- echo
- if [ "$acceptance" = "yes" ] || [ "$acceptance" = "y" ]; then
- break
- elif [ "$acceptance" = "no" ]; then
- echo "You are not licensed to use this software."
- echo
- exit 1
- elif [ "$acceptance" = "L" ]; then
- more "$relpath/LICENSE.LGPL3"
- elif [ "$acceptance" = "G" ] && [ "$showGPL2" = "yes" ]; then
- more "$relpath/LICENSE.GPL2"
- fi
- done
-elif [ "$Edition" = "Preview" ]; then
- TheLicense=`head -n 1 "$relpath/LICENSE.PREVIEW.COMMERCIAL"`
- while true; do
-
- if [ "$OPT_CONFIRM_LICENSE" = "yes" ]; then
- echo "You have already accepted the terms of the $EditionString license."
- acceptance=yes
- else
- echo "You are licensed to use this software under the terms of"
- echo "the $TheLicense"
- echo
- echo "Type '?' to read the Preview License."
- echo "Type 'yes' to accept this license offer."
- echo "Type 'no' to decline this license offer."
- echo
- echo $ECHO_N "Do you accept the terms of the license? $ECHO_C"
- read acceptance
- fi
- echo
- if [ "$acceptance" = "yes" ]; then
- break
- elif [ "$acceptance" = "no" ] ;then
- echo "You are not licensed to use this software."
- echo
- exit 0
- elif [ "$acceptance" = "?" ]; then
- more "$relpath/LICENSE.PREVIEW.COMMERCIAL"
- fi
- done
-fi
-
-#-------------------------------------------------------------------------------
# command line and environment validation
#-------------------------------------------------------------------------------
@@ -1805,16 +1629,6 @@ fi
# run configure tests
#-------------------------------------------------------------------------------
-# copy some variables that are still being computed in the shell script into an input file for configure
-# This should go away in the future
-
-cat > "$outpath/config.tests/configure.cfg" <<EOF
-# Feature defaults set by configure command line
-config.input.qt_edition = $Edition
-config.input.qt_licheck = $Licheck
-config.input.qt_release_date = $ReleaseDate
-EOF
-
# recreate command line for qmake
set -f
SAVED_IFS=$IFS
@@ -1840,6 +1654,15 @@ fi
# finally save the executed command to another script
#-------------------------------------------------------------------------------
if [ $CFG_REDO = no ]; then
+ if [ "$COMMERCIAL_USER" = "ask" ]; then
+ if grep '^QT_EDITION = OpenSource$' "$outpath/mkspecs/qconfig.pri" >/dev/null 2>&1; then
+ OPT_CMDLINE="$OPT_CMDLINE
+-opensource"
+ else
+ OPT_CMDLINE="$OPT_CMDLINE
+-commercial"
+ fi
+ fi
if [ "$OPT_CONFIRM_LICENSE" = "no" ]; then
OPT_CMDLINE="$OPT_CMDLINE
-confirm-license"
diff --git a/configure.json b/configure.json
index f774291d22..5a5536936a 100644
--- a/configure.json
+++ b/configure.json
@@ -56,6 +56,7 @@
"android-toolchain-version": "string",
"accessibility": "boolean",
+ "android-style-assets": "boolean",
"avx": "boolean",
"avx2": "boolean",
"avx512": { "type": "boolean", "name": "avx512f" },
@@ -417,6 +418,12 @@
},
"features": {
+ "android-style-assets": {
+ "label": "Android Style Assets",
+ "condition": "config.android",
+ "output": [ "privateFeature" ],
+ "comment": "This belongs into gui, but the license check needs it here already."
+ },
"shared": {
"label": "Building shared libraries",
"condition": "!config.uikit && !config.integrity",
@@ -963,6 +970,11 @@
"earlyReport": [
{
+ "type": "fatal",
+ "condition": "!call.licenseCheck",
+ "message": "You are not licensed to use this software."
+ },
+ {
"type": "warning",
"condition": "input.debug_and_release == 'yes' && !config.darwin && !config.win32",
"message": "-debug-and-release is only supported on Darwin and Windows platforms.
diff --git a/configure.pri b/configure.pri
index dc749cd6d4..526b09e965 100644
--- a/configure.pri
+++ b/configure.pri
@@ -1,3 +1,7 @@
+# this must be done outside any function
+QT_SOURCE_TREE = $$PWD
+QT_BUILD_TREE = $$shadowed($$PWD)
+
# custom command line handling
defineTest(qtConfCommandline_qmakeArgs) {
@@ -63,6 +67,165 @@ defineReplace(qtConfFunc_crossCompile) {
return(false)
}
+defineReplace(qtConfFunc_licenseCheck) {
+ exists($$QT_SOURCE_TREE/LICENSE.LGPL3)|exists($$QT_SOURCE_TREE/LICENSE.GPL2): \
+ hasOpenSource = true
+ else: \
+ hasOpenSource = false
+ exists($$QT_SOURCE_TREE/LICENSE.PREVIEW.COMMERCIAL)|exists($$QT_SOURCE_TREE/bin/licheck*): \
+ hasCommercial = true
+ else: \
+ hasCommercial = false
+
+ commercial = $$config.input.commercial
+ isEmpty(commercial) {
+ $$hasOpenSource {
+ $$hasCommercial {
+ logn()
+ logn("Selecting Qt Edition.")
+ logn()
+ logn("Type 'c' if you want to use the Commercial Edition.")
+ logn("Type 'o' if you want to use the Open Source Edition.")
+ logn()
+ for(ever) {
+ val = $$lower($$prompt("Which edition of Qt do you want to use? ", false))
+ equals(val, c) {
+ commercial = yes
+ } else: equals(val, o) {
+ commercial = no
+ } else {
+ next()
+ }
+ break()
+ }
+ } else {
+ commercial = no
+ }
+ } else {
+ !$$hasCommercial: \
+ qtConfFatalError("No license files and no licheck executables found." \
+ "Cannot proceed. Try re-installing Qt.")
+ commercial = yes
+ }
+ }
+
+ equals(commercial, no) {
+ !$$hasOpenSource: \
+ qtConfFatalError("This is the Qt Commercial Edition." \
+ "Cannot proceed with -opensource.")
+
+ logn()
+ logn("This is the Qt Open Source Edition.")
+
+ EditionString = "Open Source"
+ config.input.qt_edition = OpenSource
+ export(config.input.qt_edition)
+ } else {
+ !$$hasCommercial: \
+ qtConfFatalError("This is the Qt Open Source Edition." \
+ "Cannot proceed with -commercial.")
+
+ exists($$QT_SOURCE_TREE/LICENSE.PREVIEW.COMMERCIAL) {
+ logn()
+ logn("This is the Qt Technology Preview Edition.")
+
+ EditionString = "Technology Preview"
+ config.input.qt_edition = Preview
+ export(config.input.qt_edition)
+ } else {
+ equals(QMAKE_HOST.os, Linux) {
+ equals(QMAKE_HOST.arch, x86): \
+ Licheck = licheck32
+ else: \
+ Licheck = licheck64
+ } else: equals(QMAKE_HOST.os, Darwin) {
+ Licheck = licheck_mac
+ } else: equals(QMAKE_HOST.os, Windows) {
+ Licheck = licheck.exe
+ } else {
+ qtConfFatalError("Host operating system not supported by this edition of Qt.")
+ }
+
+ !qtRunLoggedCommand("$$system_quote($$QT_SOURCE_TREE/bin/$$Licheck) \
+ $$eval(config.input.confirm-license) \
+ $$system_quote($$QT_SOURCE_TREE) $$system_quote($$QT_BUILD_TREE) \
+ $$[QMAKE_SPEC] $$[QMAKE_XSPEC]", \
+ LicheckOutput): \
+ return(false)
+ eval($$LicheckOutput)
+ config.input.qt_edition = $$Edition
+ config.input.qt_licheck = $$Licheck
+ config.input.qt_release_date = $$ReleaseDate
+ export(config.input.qt_edition)
+ export(config.input.qt_licheck)
+ export(config.input.qt_release_date)
+ return(true)
+ }
+ }
+
+ !isEmpty(config.input.confirm-license) {
+ logn()
+ logn("You have already accepted the terms of the $$EditionString license.")
+ return(true)
+ }
+
+ affix = the
+ equals(commercial, no) {
+ theLicense = "GNU Lesser General Public License (LGPL) version 3"
+ showWhat = "Type 'L' to view the GNU Lesser General Public License version 3 (LGPLv3)."
+ gpl2Ok = false
+ winrt {
+ notTheLicense = "Note: GPL version 2 is not available on WinRT."
+ } else: $$qtConfEvaluate("features.android-style-assets") {
+ notTheLicense = "Note: GPL version 2 is not available due to using Android style assets."
+ } else {
+ theLicense += "or the GNU General Public License (GPL) version 2"
+ showWhat += "Type 'G' to view the GNU General Public License version 2 (GPLv2)."
+ gpl2Ok = true
+ affix = either
+ }
+ } else {
+ theLicense = $$cat($$QT_SOURCE_TREE/LICENSE.PREVIEW.COMMERCIAL, lines)
+ theLicense = $$first(theLicense)
+ showWhat = "Type '?' to view the $${theLicense}."
+ }
+ msg = \
+ " " \
+ "You are licensed to use this software under the terms of" \
+ "the "$$theLicense"." \
+ $$notTheLicense \
+ " " \
+ $$showWhat \
+ "Type 'y' to accept this license offer." \
+ "Type 'n' to decline this license offer." \
+ " "
+
+ for(ever) {
+ logn($$join(msg, $$escape_expand(\\n)))
+ for(ever) {
+ val = $$lower($$prompt("Do you accept the terms of $$affix license? ", false))
+ equals(val, y)|equals(val, yes) {
+ logn()
+ return(true)
+ } else: equals(val, n)|equals(val, no) {
+ return(false)
+ } else: equals(commercial, yes):equals(val, ?) {
+ licenseFile = $$QT_SOURCE_TREE/LICENSE.PREVIEW.COMMERCIAL
+ } else: equals(commercial, no):equals(val, l) {
+ licenseFile = $$QT_SOURCE_TREE/LICENSE.LGPL3
+ } else: equals(commercial, no):equals(val, g):$$gpl2Ok {
+ licenseFile = $$QT_SOURCE_TREE/LICENSE.GPL2
+ } else {
+ next()
+ }
+ break()
+ }
+ system("more $$system_quote($$system_path($$licenseFile))")
+ logn()
+ logn()
+ }
+}
+
# custom tests
defineTest(qtConfTest_architecture) {
@@ -559,6 +722,3 @@ discard_from($$[QT_HOST_DATA/get]/mkspecs/qmodule.pri)
QMAKE_POST_CONFIGURE += \
"include(\$\$[QT_HOST_DATA/get]/mkspecs/qconfig.pri)" \
"include(\$\$[QT_HOST_DATA/get]/mkspecs/qmodule.pri)"
-
-# load and process input from configure.sh/.exe
-include($$shadowed($$PWD)/config.tests/configure.cfg)
diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf
index eaaa161270..74ad611ee5 100644
--- a/mkspecs/features/qt_configure.prf
+++ b/mkspecs/features/qt_configure.prf
@@ -28,6 +28,12 @@ defineTest(qtConfAddError) {
}
}
+defineTest(qtConfFatalError) {
+ qtConfAddError($$1, $$2)
+ qtConfPrintReport()
+ error()
+}
+
defineTest(qtConfCommandlineSetInput) {
arg = $${1}
val = $${2}
@@ -778,9 +784,7 @@ defineTest(qtConfTest_compile) {
defineTest(qtConfTest_verifySpec) {
qtConfTest_compile($$1): return(true)
- qtConfAddError("Cannot compile a minimal program. The toolchain or QMakeSpec is broken.", log)
- qtConfPrintReport()
- error()
+ qtConfFatalError("Cannot compile a minimal program. The toolchain or QMakeSpec is broken.", log)
}
defineTest(qtConfTest_files) {
@@ -1310,6 +1314,10 @@ defineTest(qtConfReport_error) {
qtConfAddError($${1}, log)
}
+defineTest(qtConfReport_fatal) {
+ qtConfFatalError($${1})
+}
+
defineTest(qtConfCreateReportRecurse) {
equals(2, false) {
indent = ""
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 1f5011617c..f4171a8e9f 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -7,7 +7,6 @@
"commandline": {
"options": {
- "android-style-assets": "boolean",
"angle": "boolean",
"direct2d": "boolean",
"directfb": "boolean",
@@ -413,11 +412,6 @@
"condition": "features.accessibility && features.xcb && features.dbus",
"output": [ "privateFeature", "feature" ]
},
- "android-style-assets": {
- "label": "Android Style Assets",
- "condition": "config.android",
- "output": [ "privateFeature" ]
- },
"angle": {
"label": "ANGLE",
"autoDetect": "features.opengles2 || features.opengl-dynamic",
diff --git a/tools/configure/Makefile.mingw b/tools/configure/Makefile.mingw
index ff960115f9..b61dc38de4 100644
--- a/tools/configure/Makefile.mingw
+++ b/tools/configure/Makefile.mingw
@@ -18,7 +18,6 @@ OBJECTS = \
main.o \
configureapp.o \
environment.o \
- tools.o \
qarraydata.o \
qbytearray.o \
qbytearraymatcher.o \
@@ -116,9 +115,8 @@ $(PCH): $(CONFSRC)/configure_pch.h
VPATH = $(CONFSRC):$(TOOLSRC)/shared/windows:$(CORESRC)/global:$(CORESRC)/kernel:$(CORESRC)/tools:$(CORESRC)/codecs:$(CORESRC)/io:$(CORESRC)/xml:$(CORESRC)/plugin
main.o: $(CONFSRC)/configureapp.h
-configureapp.o: $(CONFSRC)/configureapp.h $(CONFSRC)/environment.h $(CONFSRC)/tools.h
+configureapp.o: $(CONFSRC)/configureapp.h $(CONFSRC)/environment.h
environment.o: $(CONFSRC)/environment.h
-tools.o: $(CONFSRC)/tools.h
# Make sure qstring_compat.obj isn't compiled with PCH enabled
qstring_compat.o: $(CORESRC)/tools/qstring_compat.cpp
diff --git a/tools/configure/Makefile.win32 b/tools/configure/Makefile.win32
index 8ed2ffd23f..8864d6fc8f 100644
--- a/tools/configure/Makefile.win32
+++ b/tools/configure/Makefile.win32
@@ -23,7 +23,6 @@ OBJECTS = \
main.obj \
configureapp.obj \
environment.obj \
- tools.obj \
qarraydata.obj \
qbytearray.obj \
qbytearraymatcher.obj \
@@ -97,9 +96,8 @@ $(PCH): $(CONFSRC)\configure_pch.h
$(OBJECTS): $(PCH)
main.obj: $(CONFSRC)\main.cpp $(CONFSRC)\configureapp.h $(PCH)
-configureapp.obj: $(CONFSRC)\configureapp.cpp $(CONFSRC)\configureapp.h $(CONFSRC)\environment.h $(CONFSRC)\tools.h $(PCH)
+configureapp.obj: $(CONFSRC)\configureapp.cpp $(CONFSRC)\configureapp.h $(CONFSRC)\environment.h $(PCH)
environment.obj: $(CONFSRC)\environment.cpp $(CONFSRC)\environment.h $(PCH)
-tools.obj: $(CONFSRC)\tools.cpp $(CONFSRC)\tools.h $(PCH)
registry.obj: $(TOOLSRC)\shared\windows\registry.cpp $(PCH)
qarraydata.obj: $(CORESRC)\tools\qarraydata.cpp $(PCH)
qbytearray.obj: $(CORESRC)\tools\qbytearray.cpp $(PCH)
diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro
index 9149a30e3e..93e6a197a2 100644
--- a/tools/configure/configure.pro
+++ b/tools/configure/configure.pro
@@ -31,7 +31,7 @@ INCLUDEPATH += \
$$QT_BUILD_TREE/include/QtCore/$$QT.core.VERSION/QtCore \
$$QT_SOURCE_TREE/tools/shared
-HEADERS = configureapp.h environment.h tools.h\
+HEADERS = configureapp.h environment.h \
$$QT_SOURCE_TREE/src/corelib/tools/qarraydata.h \
$$QT_SOURCE_TREE/src/corelib/tools/qbytearray.h \
$$QT_SOURCE_TREE/src/corelib/tools/qarraydatapointer.h \
@@ -80,7 +80,7 @@ HEADERS = configureapp.h environment.h tools.h\
$$QT_SOURCE_TREE/tools/shared/windows/registry_p.h
-SOURCES = main.cpp configureapp.cpp environment.cpp tools.cpp \
+SOURCES = main.cpp configureapp.cpp environment.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qbytearray.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qarraydata.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qbytearraymatcher.cpp \
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 841aa66b8f..fc66220335 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -29,7 +29,6 @@
#include "configureapp.h"
#include "environment.h"
-#include "tools.h"
#include <qdir.h>
#include <qdiriterator.h>
@@ -46,7 +45,6 @@
#include <string>
#include <fstream>
#include <windows.h>
-#include <conio.h>
QT_BEGIN_NAMESPACE
@@ -66,13 +64,6 @@ std::ostream &operator<<(std::ostream &s, const QString &val) {
using namespace std;
-static inline void promptKeyPress()
-{
- cout << "(Press any key to continue...)";
- if (_getch() == 3) // _Any_ keypress w/no echo(eat <Enter> for stdout)
- exit(0); // Exit cleanly for Ctrl+C
-}
-
Configure::Configure(int& argc, char** argv)
{
int i;
@@ -183,7 +174,6 @@ void Configure::parseCmdLine()
if (j == argCount)
break;
dictionary["XQMAKESPEC"] = configCmdLine.at(j);
- applySpecSpecifics();
break;
}
}
@@ -419,12 +409,6 @@ void Configure::parseCmdLine()
break;
dictionary[ "ANDROID_NDK_TOOLCHAIN_VERSION" ] = configCmdLine.at(i);
}
-
- else if (configCmdLine.at(i) == "-no-android-style-assets") {
- dictionary[ "ANDROID_STYLE_ASSETS" ] = "no";
- } else if (configCmdLine.at(i) == "-android-style-assets") {
- dictionary[ "ANDROID_STYLE_ASSETS" ] = "yes";
- }
}
// Ensure that QMAKESPEC exists in the mkspecs folder
@@ -495,16 +479,6 @@ void Configure::parseCmdLine()
}
}
-/*!
- Modifies the default configuration based on given -platform option.
- Eg. switches to different default styles for Windows CE.
-*/
-void Configure::applySpecSpecifics()
-{
- if (platform() == ANDROID)
- dictionary["ANDROID_STYLE_ASSETS"] = "yes";
-}
-
void Configure::prepareConfigTests()
{
// Generate an empty .qmake.cache file for config.tests
@@ -914,16 +888,6 @@ void Configure::buildQmake()
void Configure::configure()
{
- FileWriter ci(buildPath + "/config.tests/configure.cfg");
- ci << "# Feature defaults set by configure command line\n"
- << "config.input.qt_edition = " << dictionary["EDITION"] << "\n"
- << "config.input.qt_licheck = " << dictionary["LICHECK"] << "\n"
- << "config.input.qt_release_date = " << dictionary["RELEASEDATE"];
- if (!ci.flush()) {
- dictionary[ "DONE" ] = "error";
- return;
- }
-
QStringList args;
args << buildPath + "/bin/qmake"
<< sourcePathMangled
@@ -941,155 +905,6 @@ void Configure::configure()
saveCmdLine();
}
-bool Configure::showLicense(QString orgLicenseFile)
-{
- bool showGpl2 = true;
- QString licenseFile = orgLicenseFile;
- QString theLicense;
- if (dictionary["EDITION"] == "OpenSource") {
- if (platform() != WINDOWS_RT
- && (platform() != ANDROID || dictionary["ANDROID_STYLE_ASSETS"] == "no")) {
- theLicense = "GNU Lesser General Public License (LGPL) version 3\n"
- "or the GNU General Public License (GPL) version 2";
- } else {
- theLicense = "GNU Lesser General Public License (LGPL) version 3";
- showGpl2 = false;
- }
- } else {
- // the first line of the license file tells us which license it is
- QFile file(licenseFile);
- if (!file.open(QFile::ReadOnly)) {
- cout << "Failed to load LICENSE file" << endl;
- return false;
- }
- theLicense = file.readLine().trimmed();
- }
-
- forever {
- char accept = '?';
- cout << "You are licensed to use this software under the terms of" << endl
- << "the " << theLicense << "." << endl
- << endl;
- if (dictionary["EDITION"] == "OpenSource") {
- cout << "Type 'L' to view the GNU Lesser General Public License version 3 (LGPLv3)." << endl;
- if (showGpl2)
- cout << "Type 'G' to view the GNU General Public License version 2 (GPLv2)." << endl;
- } else {
- cout << "Type '?' to view the " << theLicense << "." << endl;
- }
- cout << "Type 'y' to accept this license offer." << endl
- << "Type 'n' to decline this license offer." << endl
- << endl
- << "Do you accept the terms of the license?" << endl;
- cin >> accept;
- accept = tolower(accept);
-
- if (accept == 'y') {
- configCmdLine << "-confirm-license";
- return true;
- } else if (accept == 'n') {
- return false;
- } else {
- if (dictionary["EDITION"] == "OpenSource") {
- if (accept == 'l')
- licenseFile = orgLicenseFile + "/LICENSE.LGPL3";
- else
- licenseFile = orgLicenseFile + "/LICENSE.GPL2";
- }
- // Get console line height, to fill the screen properly
- int i = 0, screenHeight = 25; // default
- CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
- HANDLE stdOut = GetStdHandle(STD_OUTPUT_HANDLE);
- if (GetConsoleScreenBufferInfo(stdOut, &consoleInfo))
- screenHeight = consoleInfo.srWindow.Bottom
- - consoleInfo.srWindow.Top
- - 1; // Some overlap for context
-
- // Prompt the license content to the user
- QFile file(licenseFile);
- if (!file.open(QFile::ReadOnly)) {
- cout << "Failed to load LICENSE file" << licenseFile << endl;
- return false;
- }
- QStringList licenseContent = QString(file.readAll()).split('\n');
- while (i < licenseContent.size()) {
- cout << licenseContent.at(i) << endl;
- if (++i % screenHeight == 0) {
- promptKeyPress();
- cout << "\r"; // Overwrite text above
- }
- }
- }
- }
-}
-
-void Configure::readLicense()
-{
- dictionary["PLATFORM NAME"] = platformName();
- dictionary["LICENSE FILE"] = sourcePath;
-
- bool openSource = false;
- bool hasOpenSource = QFile::exists(dictionary["LICENSE FILE"] + "/LICENSE.LGPL3") || QFile::exists(dictionary["LICENSE FILE"] + "/LICENSE.GPL2");
- if (dictionary["BUILDTYPE"] == "commercial") {
- openSource = false;
- } else if (dictionary["BUILDTYPE"] == "opensource") {
- openSource = true;
- } else if (hasOpenSource) { // No Open Source? Just display the commercial license right away
- forever {
- char accept = '?';
- cout << "Which edition of Qt do you want to use ?" << endl;
- cout << "Type 'c' if you want to use the Commercial Edition." << endl;
- cout << "Type 'o' if you want to use the Open Source Edition." << endl;
- cin >> accept;
- accept = tolower(accept);
-
- if (accept == 'c') {
- openSource = false;
- break;
- } else if (accept == 'o') {
- openSource = true;
- break;
- }
- }
- }
- if (hasOpenSource && openSource) {
- cout << endl << "This is the " << dictionary["PLATFORM NAME"] << " Open Source Edition." << endl << endl;
- dictionary["LICENSEE"] = "Open Source";
- dictionary["EDITION"] = "OpenSource";
- } else if (openSource) {
- cout << endl << "Cannot find the GPL license files! Please download the Open Source version of the library." << endl;
- dictionary["DONE"] = "error";
- return;
- } else {
- QString tpLicense = sourcePath + "/LICENSE.PREVIEW.COMMERCIAL";
- if (QFile::exists(tpLicense)) {
- cout << endl << "This is the Qt Preview Edition." << endl << endl;
-
- dictionary["EDITION"] = "Preview";
- dictionary["LICENSE FILE"] = tpLicense;
- } else {
- Tools::checkLicense(dictionary, sourcePath, buildPath);
- }
- }
-
- if (dictionary["LICENSE_CONFIRMED"] != "yes") {
- if (!showLicense(dictionary["LICENSE FILE"])) {
- cout << "Configuration aborted since license was not accepted" << endl;
- dictionary["DONE"] = "error";
- return;
- }
- } else if (dictionary["LICHECK"].isEmpty()) { // licheck executable shows license
- cout << "You have already accepted the terms of the license." << endl << endl;
- }
-
- if (dictionary["BUILDTYPE"] == "none") {
- if (openSource)
- configCmdLine << "-opensource";
- else
- configCmdLine << "-commercial";
- }
-}
-
bool Configure::reloadCmdLine(int idx)
{
QFile inFile(buildPathMangled + "/config.opt");
@@ -1112,6 +927,20 @@ bool Configure::reloadCmdLine(int idx)
void Configure::saveCmdLine()
{
if (dictionary[ "REDO" ] != "yes") {
+ if (dictionary["BUILDTYPE"] == "none") {
+ bool openSource = false;
+ QFile inFile(buildPath + "/mkspecs/qconfig.pri");
+ if (inFile.open(QFile::ReadOnly | QFile::Text)) {
+ QTextStream inStream(&inFile);
+ while (!inStream.atEnd()) {
+ if (inStream.readLine() == "QT_EDITION = OpenSource")
+ openSource = true;
+ }
+ }
+ configCmdLine.append(openSource ? "-opensource" : "-commercial");
+ }
+ if (dictionary["LICENSE_CONFIRMED"] != "yes")
+ configCmdLine.append("-confirm-license");
QFile outFile(buildPathMangled + "/config.opt");
if (outFile.open(QFile::WriteOnly | QFile::Text)) {
QTextStream outStream(&outFile);
@@ -1134,23 +963,6 @@ bool Configure::isOk()
return (dictionary[ "DONE" ] != "error");
}
-QString Configure::platformName() const
-{
- switch (platform()) {
- default:
- case WINDOWS:
- return QStringLiteral("Qt for Windows");
- case WINDOWS_RT:
- return QStringLiteral("Qt for Windows Runtime");
- case QNX:
- return QStringLiteral("Qt for QNX");
- case ANDROID:
- return QStringLiteral("Qt for Android");
- case OTHER:
- return QStringLiteral("Qt for ???");
- }
-}
-
int Configure::platform() const
{
const QString xQMakeSpec = dictionary.value("XQMAKESPEC");
diff --git a/tools/configure/configureapp.h b/tools/configure/configureapp.h
index c8d4d3df53..b007f3c487 100644
--- a/tools/configure/configureapp.h
+++ b/tools/configure/configureapp.h
@@ -54,14 +54,10 @@ public:
void generateQDevicePri();
void prepareConfigTests();
- bool showLicense(QString licenseFile);
- void readLicense();
-
bool isDone();
bool isOk();
int platform() const;
- QString platformName() const;
private:
int verbose;
@@ -86,8 +82,6 @@ private:
bool reloadCmdLine(int idx);
void saveCmdLine();
-
- void applySpecSpecifics();
};
class FileWriter : public QTextStream
diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp
index e585b16ea7..260af276fa 100644
--- a/tools/configure/environment.cpp
+++ b/tools/configure/environment.cpp
@@ -378,29 +378,4 @@ int Environment::execute(QStringList arguments, const QStringList &additionalEnv
return exitCode;
}
-/*!
- Executes \a command with _popen() and returns the stdout of the command.
-
- Taken from qmake's system() command.
-*/
-QString Environment::execute(const QString &command, int *returnCode)
-{
- QString output;
- FILE *proc = _popen(command.toLatin1().constData(), "r");
- char buff[256];
- while (proc && !feof(proc)) {
- int read_in = int(fread(buff, 1, 255, proc));
- if (!read_in)
- break;
- buff[read_in] = '\0';
- output += buff;
- }
- if (proc) {
- int r = _pclose(proc);
- if (returnCode)
- *returnCode = r;
- }
- return output;
-}
-
QT_END_NAMESPACE
diff --git a/tools/configure/environment.h b/tools/configure/environment.h
index aa8e7fd8bc..8415fa10a6 100644
--- a/tools/configure/environment.h
+++ b/tools/configure/environment.h
@@ -52,7 +52,6 @@ public:
static QString detectQMakeSpec();
static int execute(QStringList arguments, const QStringList &additionalEnv, const QStringList &removeEnv);
- static QString execute(const QString &command, int *returnCode = 0);
private:
static Compiler detectedCompiler;
diff --git a/tools/configure/main.cpp b/tools/configure/main.cpp
index 91a99c16c2..f6c2722529 100644
--- a/tools/configure/main.cpp
+++ b/tools/configure/main.cpp
@@ -45,13 +45,6 @@ int runConfigure( int argc, char** argv )
if (!app.isOk())
return 3;
- // Read license now, and exit if it doesn't pass.
- // This lets the user see the command-line options of configure
- // without having to load and parse the license file.
- app.readLicense();
- if (!app.isOk())
- return 3;
-
// Source file with path settings. Needed by qmake.
app.generateQConfigCpp();
diff --git a/tools/configure/tools.cpp b/tools/configure/tools.cpp
deleted file mode 100644
index 5ba7125975..0000000000
--- a/tools/configure/tools.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "tools.h"
-#include "environment.h"
-
-#include <qdir.h>
-#include <qfile.h>
-#include <qbytearray.h>
-#include <qstringlist.h>
-
-#include <iostream>
-
-std::ostream &operator<<(std::ostream &s, const QString &val);
-using namespace std;
-
-void Tools::checkLicense(QMap<QString,QString> &dictionary,
- const QString &sourcePath, const QString &buildPath)
-{
- dictionary["LICHECK"] = "licheck.exe";
-
- const QString licenseChecker =
- QDir::toNativeSeparators(sourcePath + "/bin/licheck.exe");
-
- if (QFile::exists(licenseChecker)) {
- const QString qMakeSpec =
- QDir::toNativeSeparators(dictionary.value("QMAKESPEC"));
- const QString xQMakeSpec =
- QDir::toNativeSeparators(dictionary.value("XQMAKESPEC"));
-
- QString command = QString("%1 %2 %3 %4 %5 %6")
- .arg(licenseChecker,
- dictionary.value("LICENSE_CONFIRMED", "no"),
- QDir::toNativeSeparators(sourcePath),
- QDir::toNativeSeparators(buildPath),
- qMakeSpec, xQMakeSpec);
-
- int returnValue = 0;
- QString licheckOutput = Environment::execute(command, &returnValue);
-
- if (returnValue) {
- dictionary["DONE"] = "error";
- } else {
- foreach (const QString &var, licheckOutput.split('\n'))
- dictionary[var.section('=', 0, 0).toUpper()] = var.section('=', 1, 1);
- dictionary["LICENSE_CONFIRMED"] = "yes";
- }
- } else {
- cout << endl << "Error: Could not find licheck.exe" << endl
- << "Try re-installing." << endl << endl;
- dictionary["DONE"] = "error";
- }
-}
-
diff --git a/tools/configure/tools.h b/tools/configure/tools.h
deleted file mode 100644
index 17dcc88518..0000000000
--- a/tools/configure/tools.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef _TOOLS_H_
-#define _TOOLS_H_
-
-#include <qstring.h>
-#include <qmap.h>
-
-class Tools
-{
-public:
- static void checkLicense(QMap<QString,QString> &dictionary,
- const QString &sourcePath, const QString &buildPath);
-};
-
-#endif // _TOOLS_H_
-