From 530c475d90a530fbf91b10d64f4b9978a13f389e Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Fri, 31 May 2013 10:35:49 +0200 Subject: [PATCH 01/19] Fix typo in QSettings docs. Change-Id: I96dc2d57f5cc52c162ba0fd38d20141683847423 Reviewed-by: Oswald Buddenhagen Reviewed-by: Jerome Pasion --- src/corelib/io/qsettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index a0904fea24..5b4d4ec0d8 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -2527,7 +2527,7 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile, character in keys. In addition, if you save a top-level setting (a key with no slashes in it, e.g., "someKey"), it will appear in the INI file's "General" section. To avoid - overwriting other keys, if you save something using the a key + overwriting other keys, if you save something using a key such as "General/someKey", the key will be located in the "%General" section, \e not in the "General" section. From 681da4feb3bdc91b84469d298a16b8b83dcffaf4 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Thu, 30 May 2013 15:52:40 +0200 Subject: [PATCH 02/19] Android: Fix Windows build with recent SDK Since the dx tool has moved in the SDK, we need to update our copy of it to also search in the new location for dx.jar. Task-number: QTBUG-31405 Change-Id: If093a9f51f33c5d8666919f516a3b336322a7169 Reviewed-by: Ray Donnelly Reviewed-by: Oswald Buddenhagen Reviewed-by: Paul Olav Tvete --- mkspecs/features/data/android/dx.bat | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkspecs/features/data/android/dx.bat b/mkspecs/features/data/android/dx.bat index af143c52b5..c4ad0e3ebc 100644 --- a/mkspecs/features/data/android/dx.bat +++ b/mkspecs/features/data/android/dx.bat @@ -46,6 +46,12 @@ if exist "%frameworkdir%\%jarfile%" goto JarFileOk if exist "%frameworkdir%\%jarfile%" goto JarFileOk set "frameworkdir=%androidsdk%\framework" +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%androidsdk%\build-tools\%ANDROID_BUILD_TOOLS_REVISION%\lib" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%androidsdk%\build-tools\17.0.0\lib" + :JarFileOk set jarpath=%frameworkdir%\%jarfile% From d12c045a9587a1d46669fe4e554945ec3b2238ef Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Thu, 30 May 2013 15:37:14 +0200 Subject: [PATCH 03/19] qdoc: excludedirs works again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was comparing an absolute path to a relative path. These could never be the same. Instead of the relative path, it now gets the canonical absolute path, so the comparison succeeds when it should. Task-number: QTBUG-31404 Change-Id: I9c482d4649d493ce6d4f9a522cb61f2c8a5eb21f Reviewed-by: Topi Reiniƶ Reviewed-by: Jerome Pasion --- src/tools/qdoc/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/qdoc/config.cpp b/src/tools/qdoc/config.cpp index 107af96607..273cb60d7d 100644 --- a/src/tools/qdoc/config.cpp +++ b/src/tools/qdoc/config.cpp @@ -1089,7 +1089,7 @@ QStringList Config::getFilesHere(const QString& uncleanDir, const QSet &excludedDirs, const QSet &excludedFiles) { - QString dir = location.isEmpty() ? QDir::cleanPath(uncleanDir) : Location::canonicalRelativePath(uncleanDir); + QString dir = location.isEmpty() ? QDir::cleanPath(uncleanDir) : QDir(uncleanDir).canonicalPath(); QStringList result; if (excludedDirs.contains(dir)) return result; From ca73ed25d45c15ed30daacb02adce51d7c8339fc Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 31 May 2013 08:31:53 +0200 Subject: [PATCH 04/19] docs: DirView example uses QFileSystemModel not QDirModel Change-Id: Ie172b1458401c4627314ff0db6992647388bf382 Reviewed-by: Jerome Pasion --- examples/widgets/doc/src/dirview.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/widgets/doc/src/dirview.qdoc b/examples/widgets/doc/src/dirview.qdoc index b9698ea498..7687737cef 100644 --- a/examples/widgets/doc/src/dirview.qdoc +++ b/examples/widgets/doc/src/dirview.qdoc @@ -32,7 +32,7 @@ \brief This example demonstrates the usage of a tree view. \brief The Dir View example shows a tree view onto the local filing system. It uses the - QDirModel class to provide file and directory information. + QFileSystemModel class to provide file and directory information. \image dirview-example.png */ From 5c555e3a296af3f2510fdc95caa864f020e69263 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 20:28:54 +0200 Subject: [PATCH 05/19] factor out writeFile() function Change-Id: I8e3e1665d7628c3210d000c46dfffa9f1af71009 Reviewed-by: Joerg Bornemann --- bin/syncqt.pl | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/bin/syncqt.pl b/bin/syncqt.pl index ce07af4895..8ce091053f 100755 --- a/bin/syncqt.pl +++ b/bin/syncqt.pl @@ -382,6 +382,32 @@ sub fileContents { return $filecontents; } +###################################################################### +# Syntax: writeFile(filename, contents) +# Params: filename, string, filename of file to write +# contents, string, new contents for the file +# +# Purpose: Write file with given contents. If new contents match old +# ones, do no change the file's timestamp. +# Returns: 1 if the file's contents changed. +###################################################################### +sub writeFile { + my ($filename, $contents, $lib, $what) = @_; + my $oldcontents = fileContents($filename); + $oldcontents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms + if ($oldcontents ne $contents) { + open(O, "> " . $filename) || die "Could not open $filename for writing: $!\n"; + print O $contents; + close O; + if ($lib && $verbose_level) { + my $action = ($oldcontents eq "") ? "created" : "updated"; + print "$lib: $action $what\n"; + } + return 1; + } + return 0; +} + ###################################################################### # Syntax: fileCompare(file1, file2) # Params: file1, string, filename of first file @@ -1076,23 +1102,7 @@ foreach my $lib (@modules_to_sync) { $headers_pri_contents .= "SYNCQT.PRIVATE_HEADER_FILES = $pri_install_pfiles\n"; $headers_pri_contents .= "SYNCQT.QPA_HEADER_FILES = $pri_install_qpafiles\n"; my $headers_pri_file = "$out_basedir/include/$lib/headers.pri"; - if(-e $headers_pri_file) { - open HEADERS_PRI_FILE, "<$headers_pri_file"; - local $/; - binmode HEADERS_PRI_FILE; - my $old_headers_pri_contents = ; - close HEADERS_PRI_FILE; - $old_headers_pri_contents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms - $headers_pri_file = 0 if($old_headers_pri_contents eq $headers_pri_contents); - } - if($headers_pri_file) { - my $headers_pri_dir = dirname($headers_pri_file); - make_path($headers_pri_dir, $lib, $verbose_level); - open HEADERS_PRI_FILE, ">$headers_pri_file"; - print HEADERS_PRI_FILE $headers_pri_contents; - close HEADERS_PRI_FILE; - print "$lib: created headers.pri file\n" if($verbose_level); - } + writeFile($headers_pri_file, $headers_pri_contents, $lib, "headers.pri file"); } } unless($showonly || !$create_uic_class_map) { From 5d8b8eed90c52afbd54d7c057657dc12d1e8e61a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 17 May 2013 19:53:25 +0200 Subject: [PATCH 06/19] move module version header generation back to syncqt there is no particular reason for it being done by qmake. avoids that the logic is distributed over two source files, and allows us to generate these headers at pre-build time already, including not forwarding to a yet unexisting file (which would have a yet unknown location). Change-Id: I9c78ab425cf6f01d076c86fd1ee602626f231487 Reviewed-by: Joerg Bornemann --- bin/syncqt.pl | 13 ++++++++++++ mkspecs/features/qt_module_headers.prf | 29 -------------------------- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/bin/syncqt.pl b/bin/syncqt.pl index 8ce091053f..f31466ad33 100755 --- a/bin/syncqt.pl +++ b/bin/syncqt.pl @@ -1094,6 +1094,19 @@ foreach my $lib (@modules_to_sync) { syncHeader($lib, $VHeader, $vheader, 0); $pri_install_files .= fixPaths($vheader, $dir) . " "; $pri_install_classes .= fixPaths($VHeader, $dir) . " "; + my @versions = split(/\./, $module_version); + my $modulehexstring = sprintf("0x%02X%02X%02X", $versions[0], $versions[1], $versions[2]); + my $vhdrcont = + "/* This file was generated by syncqt. */\n". + "#ifndef QT_".uc($lib)."_VERSION_H\n". + "#define QT_".uc($lib)."_VERSION_H\n". + "\n". + "#define ".uc($lib)."_VERSION_STR \"".$module_version."\"\n". + "\n". + "#define ".uc($lib)."_VERSION ".$modulehexstring."\n". + "\n". + "#endif // QT_".uc($lib)."_VERSION_H\n"; + writeFile($vheader, $vhdrcont, $lib, "version header"); #handle the headers.pri for each module my $headers_pri_contents = ""; diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 298ca102bc..3c50e041c7 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -31,9 +31,6 @@ minimal_syncqt: return() #load up the headers info include($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/headers.pri, "", true) -lctarget = $$lower($$MODULE_INCNAME) -uctarget = $$upper($$MODULE_INCNAME) - defineTest(shouldMasterInclude) { bn = $$basename(1) contains(bn, .*_.*):return(false) @@ -46,32 +43,6 @@ defineTest(shouldMasterInclude) { autogen_warning = \ "/* This file was generated by qmake with the info from /$$relative_path($$_PRO_FILE_, $$MODULE_BASE_DIR). */" -# Create module version header -MODULE_VERSION_HEADER = $$find(SYNCQT.HEADER_FILES, (^|/)$${lctarget}version\\.h$) -count(MODULE_VERSION_HEADER, 1) { - MODULE_VERSION_HEADER = $$absolute_path($$MODULE_VERSION_HEADER, $$_PRO_FILE_PWD_) - - !build_pass { - majorhexstr = $$format_number($$section(VERSION, ., 0, 0), width=2 zeropad obase=16) - minorhexstr = $$format_number($$section(VERSION, ., 1, 1), width=2 zeropad obase=16) - patchhexstr = $$format_number($$section(VERSION, ., 2, 2), width=2 zeropad obase=16) - modulehexstring = 0x$${majorhexstr}$${minorhexstr}$${patchhexstr} - MODULE_VERSION_HEADER_CONT = \ - $$autogen_warning \ - "$${LITERAL_HASH}ifndef QT_$${uctarget}_VERSION_H" \ - "$${LITERAL_HASH}define QT_$${uctarget}_VERSION_H" \ - "" \ - "$${LITERAL_HASH}define $${uctarget}_VERSION_STR \"$$VERSION\"" \ - "" \ - "$${LITERAL_HASH}define $${uctarget}_VERSION $$modulehexstring" \ - "" \ - "$${LITERAL_HASH}endif // QT_$${uctarget}_VERSION_H" - write_file($$MODULE_VERSION_HEADER, MODULE_VERSION_HEADER_CONT)|error("Aborting.") - } - - HEADERS += $$MODULE_VERSION_HEADER -} - # Create a module master header MODULE_MASTER_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$$MODULE_INCNAME !build_pass { From 8d69232b28165079aed1d754f9bdd8c7c4336b16 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 11:07:13 +0200 Subject: [PATCH 07/19] let configure create the forwarding qconfig.h again this avoids that syncqt needs to forward to a yet unexisting file (which will have a yet unknown location, when syncqt is run at packaging time already). the %inject_headers syncqt config variable remains, so it can be told not to purge "foreign" files. Change-Id: I127ff6e0b7d5702fb0acaee9a5b7940b482d3608 Reviewed-by: Joerg Bornemann --- bin/syncqt.pl | 10 +--------- configure | 17 +++++++++++++++++ src/corelib/global/global.pri | 5 +++++ sync.profile | 1 - tools/configure/configureapp.cpp | 31 +++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/bin/syncqt.pl b/bin/syncqt.pl index f31466ad33..1da3878695 100755 --- a/bin/syncqt.pl +++ b/bin/syncqt.pl @@ -893,15 +893,8 @@ foreach my $lib (@modules_to_sync) { #calc files and "copy" them foreach my $subdir (@subdirs) { my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0); - if (defined $inject_headers{$subdir}) { - foreach my $if (@{$inject_headers{$subdir}}) { - @headers = grep(!/^\Q$if\E$/, @headers); #in case we configure'd previously - push @headers, "*".$if; - } - } my $header_dirname = ""; foreach my $header (@headers) { - my $shadow = ($header =~ s/^\*//); $header = 0 if($header =~ /^ui_.*.h/); foreach (@ignore_headers) { $header = 0 if($header eq $_); @@ -923,7 +916,6 @@ foreach my $lib (@modules_to_sync) { } my $iheader = $subdir . "/" . $header; - $iheader =~ s/^\Q$basedir\E/$out_basedir/ if ($shadow); my @classes = $public_header && !$minimal ? classNames($iheader) : (); if($showonly) { print "$header [$lib]\n"; @@ -964,7 +956,7 @@ foreach my $lib (@modules_to_sync) { } foreach(@headers) { #sync them - $header_copies++ if(syncHeader($lib, $_, $iheader, $copy_headers && !$shadow, $ts)); + $header_copies++ if (syncHeader($lib, $_, $iheader, $copy_headers, $ts)); } if($public_header) { diff --git a/configure b/configure index 079f2e7415..43e7f8851e 100755 --- a/configure +++ b/configure @@ -6424,6 +6424,23 @@ else fi fi +# create a forwarding header +mkdir -p "$outpath/include/QtCore" || exit +echo '#include "../../src/corelib/global/qconfig.h"' > $outpath/include/QtCore/qconfig.h.new +if cmp -s "$outpath/include/QtCore/qconfig.h.new" "$outpath/include/QtCore/qconfig.h"; then + rm -f "$outpath/include/QtCore/qconfig.h.new" +else + mv "$outpath/include/QtCore/qconfig.h.new" "$outpath/include/QtCore/qconfig.h" || exit +fi + +# create a camelcase forwarding header +echo '#include "qconfig.h"' > $outpath/include/QtCore/QtConfig.new +if cmp -s "$outpath/include/QtCore/QtConfig.new" "$outpath/include/QtCore/QtConfig"; then + rm -f "$outpath/include/QtCore/QtConfig.new" +else + mv "$outpath/include/QtCore/QtConfig.new" "$outpath/include/QtCore/QtConfig" || exit +fi + #------------------------------------------------------------------------------- # save configuration into qconfig.pri #------------------------------------------------------------------------------- diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 6ac32cd35d..4084d4f2ad 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -29,6 +29,11 @@ SOURCES += \ # qlibraryinfo.cpp includes qconfig.cpp INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global +# configure creates these, not syncqt, so we need to manually inject them +targ_headers.files += \ + $$OUT_PWD/global/qconfig.h \ + $$QT_BUILD_TREE/include/QtCore/QtConfig + # Only used on platforms with CONFIG += precompile_header PRECOMPILED_HEADER = global/qt_pch.h diff --git a/sync.profile b/sync.profile index e07b285dbb..3d89d9d71f 100644 --- a/sync.profile +++ b/sync.profile @@ -24,7 +24,6 @@ %classnames = ( "qglobal.h" => "QtGlobal", "qendian.h" => "QtEndian", - "qconfig.h" => "QtConfig", "qplugin.h" => "QtPlugin", "qalgorithms.h" => "QtAlgorithms", "qcontainerfwd.h" => "QtContainerFwd", diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index a83f451b81..9620129509 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3351,6 +3351,37 @@ void Configure::generateConfigfiles() tmpFile.close(); } + QTemporaryFile tmpFile2; + if (tmpFile2.open()) { + tmpStream.setDevice(&tmpFile2); + tmpStream << "#include \"../../src/corelib/global/qconfig.h\"" << endl; + + tmpStream.flush(); + tmpFile2.flush(); + + outName = buildPath + "/include/QtCore/qconfig.h"; + ::SetFileAttributes((wchar_t*)outName.utf16(), FILE_ATTRIBUTE_NORMAL); + QFile::remove(outName); + + tmpFile2.copy(outName); + tmpFile2.close(); + } + QTemporaryFile tmpFile2a; + if (tmpFile2a.open()) { + tmpStream.setDevice(&tmpFile2a); + tmpStream << "#include \"qconfig.h\"" << endl; + + tmpStream.flush(); + tmpFile2a.flush(); + + outName = buildPath + "/include/QtCore/QtConfig"; + ::SetFileAttributes((wchar_t*)outName.utf16(), FILE_ATTRIBUTE_NORMAL); + QFile::remove(outName); + + tmpFile2a.copy(outName); + tmpFile2a.close(); + } + QTemporaryFile tmpFile3; if (tmpFile3.open()) { tmpStream.setDevice(&tmpFile3); From f4e529070998090598a66b2c0f66275d8479c5be Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 11:57:01 +0200 Subject: [PATCH 08/19] remove pointless quoting of MODULE_*INCLUDES assignments it would only cause trouble further down the line. Change-Id: Ied9ba8a1ecf36b77e1091c73564bd7601ea6a6b4 Reviewed-by: Joerg Bornemann --- mkspecs/features/qt_module_pris.prf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 9e40a67b51..77adc02259 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -52,9 +52,9 @@ else: \ else: \ module_config = !no_module_headers:!minimal_syncqt { - MODULE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME" - MODULE_PRIVATE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME" + MODULE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME + MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \ + \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME } MODULE_PRI_CONT = \ "QT.$${MODULE}.VERSION = $${VERSION}" \ From 0519129c5977280dfa2f8a47ca4aa93fe9fee84b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 19:09:24 +0200 Subject: [PATCH 09/19] split out dependencies from module master header this will allow us the create the dependency list in a different way than the rest of the master header. Change-Id: Ib083fbbf6194cd9a161d669f860aaf32fd96d9d4 Reviewed-by: Joerg Bornemann --- mkspecs/features/qt_module_headers.prf | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 3c50e041c7..65e9a888f3 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -43,17 +43,26 @@ defineTest(shouldMasterInclude) { autogen_warning = \ "/* This file was generated by qmake with the info from /$$relative_path($$_PRO_FILE_, $$MODULE_BASE_DIR). */" +# Create a module master depends header +MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MODULE_INCNAME}Depends +!build_pass { + MODULE_MASTER_DEPS_HEADER_CONT = $$autogen_warning + for(dep, MODULE_DEPENDS) { + depname = $$eval(QT.$${dep}.name) + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>" + } + write_file($$MODULE_MASTER_DEPS_HEADER, MODULE_MASTER_DEPS_HEADER_CONT)|error("Aborting.") +} +SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER + # Create a module master header MODULE_MASTER_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$$MODULE_INCNAME !build_pass { MODULE_MASTER_HEADER_CONT = \ $$autogen_warning \ "$${LITERAL_HASH}ifndef QT_$${ucmodule}_MODULE_H" \ - "$${LITERAL_HASH}define QT_$${ucmodule}_MODULE_H" - for(dep, MODULE_DEPENDS) { - depname = $$eval(QT.$${dep}.name) - MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>" - } + "$${LITERAL_HASH}define QT_$${ucmodule}_MODULE_H" \ + "$${LITERAL_HASH}include <$$MODULE_INCNAME/$${MODULE_INCNAME}Depends>" for(hdr, SYNCQT.HEADER_FILES): \ shouldMasterInclude($$hdr): \ MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}include \"$$replace(hdr, .*/, )\"" From 96557bc389794abdcb15305c2a439f344ec2f0c3 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 20:57:07 +0200 Subject: [PATCH 10/19] move module master header generation back to syncqt now that we split out the part that depends on the project file, we can do it cleanly here. this way we can generate these headers at pre-build time already. and for git builds, perl is probably faster than qmake at this task. Change-Id: I343255c6de22329471a3ae2c2aac9ebeb160a501 Reviewed-by: Joerg Bornemann --- bin/syncqt.pl | 42 ++++++++++++++++++++++++++ mkspecs/features/qt_module_headers.prf | 25 --------------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/bin/syncqt.pl b/bin/syncqt.pl index 1da3878695..497e8deb2c 100755 --- a/bin/syncqt.pl +++ b/bin/syncqt.pl @@ -171,6 +171,30 @@ sub checkRelative { return 1; } +###################################################################### +# Syntax: shouldMasterInclude(iheader) +# Params: iheader, string, filename to verify inclusion +# +# Purpose: Determines if header should be in the master include file. +# Returns: 0 if file contains "#pragma qt_no_master_include" or not +# able to open, else 1. +###################################################################### +sub shouldMasterInclude { + my ($iheader) = @_; + return 0 if (basename($iheader) =~ /_/); + return 0 if (basename($iheader) =~ /qconfig/); + if (open(F, "<$iheader")) { + while () { + chomp; + return 0 if (/^\#pragma qt_no_master_include$/); + } + close(F); + } else { + return 0; + } + return 1; +} + ###################################################################### # Syntax: classNames(iheader) # Params: iheader, string, filename to parse for classname "symlinks" @@ -828,6 +852,12 @@ foreach my $lib (@modules_to_sync) { my $pri_install_pfiles = ""; my $pri_install_qpafiles = ""; + my $libcapitals = uc($lib); + my $master_contents = + "#ifndef QT_".$libcapitals."_MODULE_H\n" . + "#define QT_".$libcapitals."_MODULE_H\n" . + "#include <$lib/${lib}Depends>\n"; + #remove the old files if($remove_stale) { my %injections = (); @@ -960,6 +990,9 @@ foreach my $lib (@modules_to_sync) { } if($public_header) { + #put it into the master file + $master_contents .= "#include \"$public_header\"\n" if (shouldMasterInclude($iheader)); + #deal with the install directives if($public_header) { my $pri_install_iheader = fixPaths($iheader, $dir); @@ -1018,6 +1051,11 @@ foreach my $lib (@modules_to_sync) { } } + # close the master include: + $master_contents .= + "#include \"".lc($lib)."version.h\"\n" . + "#endif\n"; + unless ($showonly || $minimal) { # create deprecated headers my $first = 1; @@ -1100,6 +1138,10 @@ foreach my $lib (@modules_to_sync) { "#endif // QT_".uc($lib)."_VERSION_H\n"; writeFile($vheader, $vhdrcont, $lib, "version header"); + my $master_include = "$out_basedir/include/$lib/$lib"; + $pri_install_files .= fixPaths($master_include, $dir) . " "; + writeFile($master_include, $master_contents, $lib, "master header"); + #handle the headers.pri for each module my $headers_pri_contents = ""; $headers_pri_contents .= "SYNCQT.HEADER_FILES = $pri_install_files\n"; diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 65e9a888f3..7591bffb19 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -31,15 +31,6 @@ minimal_syncqt: return() #load up the headers info include($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/headers.pri, "", true) -defineTest(shouldMasterInclude) { - bn = $$basename(1) - contains(bn, .*_.*):return(false) - contains(bn, ^qconfig.*):return(false) - lines = $$cat($$_PRO_FILE_PWD_/$$1, lines) - contains(lines, $${LITERAL_HASH}pragma qt_no_master_include):return(false) - return(true) -} - autogen_warning = \ "/* This file was generated by qmake with the info from /$$relative_path($$_PRO_FILE_, $$MODULE_BASE_DIR). */" @@ -55,20 +46,4 @@ MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MOD } SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER -# Create a module master header -MODULE_MASTER_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$$MODULE_INCNAME -!build_pass { - MODULE_MASTER_HEADER_CONT = \ - $$autogen_warning \ - "$${LITERAL_HASH}ifndef QT_$${ucmodule}_MODULE_H" \ - "$${LITERAL_HASH}define QT_$${ucmodule}_MODULE_H" \ - "$${LITERAL_HASH}include <$$MODULE_INCNAME/$${MODULE_INCNAME}Depends>" - for(hdr, SYNCQT.HEADER_FILES): \ - shouldMasterInclude($$hdr): \ - MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}include \"$$replace(hdr, .*/, )\"" - MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}endif" - write_file($$MODULE_MASTER_HEADER, MODULE_MASTER_HEADER_CONT)|error("Aborting.") -} -SYNCQT.HEADER_FILES += $$MODULE_MASTER_HEADER - CONFIG += qt_install_headers From 0a1b89bff5015c8389807f55c1b39d360af55e9a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 21:34:05 +0200 Subject: [PATCH 11/19] run syncqt only for builds from git the logic in the configures was even trying to express that, only that nowadays we always ship syncqt, so the tests were kinda pointless. this frees us from the perl dependency for non-developer builds of packaged modules (except for webkit, which needs almost every scripting language on earth anyway). obviously, this requires that the packaging scripts run syncqt in the source dir before tarring up the sources. note that for repositories other than qtbase, the -version argument needs to be passed to syncqt. Task-number: QTBUG-29465 Change-Id: Ic929ab17a5de4b30fbf48b3aa9bfa3b4d2ef37d6 Reviewed-by: Joerg Bornemann --- configure | 21 +++++++++++++-------- mkspecs/features/qt_build_paths.prf | 3 +++ mkspecs/features/qt_module_headers.prf | 8 ++++++-- mkspecs/features/qt_module_pris.prf | 15 ++++++++++++++- qmake/Makefile.unix | 4 ++-- qmake/Makefile.win32 | 2 +- tools/configure/configureapp.cpp | 7 +++++-- 7 files changed, 44 insertions(+), 16 deletions(-) diff --git a/configure b/configure index 43e7f8851e..1e15220ca1 100755 --- a/configure +++ b/configure @@ -2389,13 +2389,6 @@ fi if [ "$OPT_SHADOW" = "yes" ]; then echo "Preparing build tree..." - if [ -z "$PERL" ]; then - echo - echo "You need perl in your PATH to make a shadow build." - echo "Cannot proceed." - exit 1 - fi - [ -d "$outpath/bin" ] || mkdir -p "$outpath/bin" # save a pre-existing mkspecs/modules dir @@ -3895,7 +3888,14 @@ fi # ----------------------------------------------------------------------------- # symlink includes -if [ -n "$PERL" ] && [ -x "$relpath/bin/syncqt.pl" ]; then +if [ -e "$relpath/.git" ]; then + if [ -z "$PERL" ]; then + echo + echo "You need perl in your PATH to make a build from GIT." + echo "Cannot proceed." + exit 1 + fi + "$relpath/bin/syncqt.pl" -minimal -module QtCore "$relpath" || exit 1 fi @@ -4028,6 +4028,11 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; echo "BUILD_PATH = $adjoutpath" >> "$mkfile" echo "SOURCE_PATH = $adjrelpath" >> "$mkfile" + if [ -e "$relpath/.git" ]; then + echo 'INC_PATH = $(BUILD_PATH)/include' >> "$mkfile" + else + echo 'INC_PATH = $(SOURCE_PATH)/include' >> "$mkfile" + fi echo "QMAKESPEC = $adjqmakespec" >> "$mkfile" echo "QT_VERSION = $QT_VERSION" >> "$mkfile" echo "EXTRA_CFLAGS = $EXTRA_CFLAGS" >> "$mkfile" diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf index 03b43e3153..25fc2c3033 100644 --- a/mkspecs/features/qt_build_paths.prf +++ b/mkspecs/features/qt_build_paths.prf @@ -16,6 +16,9 @@ isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR isEmpty(MODULE_BASE_OUTDIR): MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR) isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR +exists($$MODULE_PROFILE_DIR/.git): \ + CONFIG += git_build + !prefix_build { QTDIR = $$[QT_HOST_PREFIX] # Permit modules to enforce being built outside QTDIR ... diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 7591bffb19..fd6cf6b943 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -11,7 +11,7 @@ load(qt_build_paths) -!build_pass { +!build_pass:git_build { qtPrepareTool(QMAKE_SYNCQT, syncqt) minimal_syncqt { QMAKE_SYNCQT += -minimal $$QMAKE_SYNCQT_OPTIONS @@ -29,7 +29,11 @@ load(qt_build_paths) minimal_syncqt: return() #load up the headers info -include($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/headers.pri, "", true) +git_build: \ + INC_PATH = $$MODULE_BASE_OUTDIR +else: \ + INC_PATH = $$MODULE_BASE_DIR +include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true) autogen_warning = \ "/* This file was generated by qmake with the info from /$$relative_path($$_PRO_FILE_, $$MODULE_BASE_DIR). */" diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 77adc02259..653f753815 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -56,6 +56,18 @@ else: \ MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \ \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME } + !git_build:!equals(_PRO_FILE_PWD_, $$OUT_PWD) { + pub_inc = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, $$MODULE_BASE_DIR/include) + priv_inc = $$replace(MODULE_PRIVATE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, $$MODULE_BASE_DIR/include) + force_independent { + MODULE_FWD_PRI_CONT_SUFFIX = \ + "QT.$${MODULE}.includes += $$pub_inc" \ + "QT.$${MODULE}.private_includes += $$priv_inc" + } else { + MODULE_INCLUDES += $$pub_inc + MODULE_PRIVATE_INCLUDES += $$priv_inc + } + } MODULE_PRI_CONT = \ "QT.$${MODULE}.VERSION = $${VERSION}" \ "QT.$${MODULE}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \ @@ -97,7 +109,8 @@ else: \ "QT_MODULE_HOST_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \ "QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \ "QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \ - "include($$MODULE_PRI)" + "include($$MODULE_PRI)" \ + $$MODULE_FWD_PRI_CONT_SUFFIX write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.") touch($$MODULE_FWD_PRI, $$MODULE_PRI) MODULE_PRI_FILES += $$MODULE_FWD_PRI diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index 7293f4c869..9b7bfa6f8b 100644 --- a/qmake/Makefile.unix +++ b/qmake/Makefile.unix @@ -85,8 +85,8 @@ DEPEND_SRC = \ CPPFLAGS = -g $(EXTRA_CPPFLAGS) \ -I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKSRC)/generators -I$(QMKSRC)/generators/unix -I$(QMKSRC)/generators/win32 \ -I$(QMKSRC)/generators/mac -I$(QMKSRC)/generators/integrity \ - -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \ - -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ + -I$(INC_PATH) -I$(INC_PATH)/QtCore \ + -I$(INC_PATH)/QtCore/$(QT_VERSION) -I$(INC_PATH)/QtCore/$(QT_VERSION)/QtCore \ -I$(BUILD_PATH)/src/corelib/global -DHAVE_QCONFIG_CPP \ -I$(QMAKESPEC) \ -I$(SOURCE_PATH)/tools/shared \ diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index 63cdf50563..7dbef61413 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -34,7 +34,7 @@ CFLAGS_BARE = -c -Fo./ \ -W3 -nologo -O1 \ $(CFLAGS_EXTRA) \ -I$(QMKSRC) -I$(QMKSRC)\library -I$(QMKSRC)\generators -I$(QMKSRC)\generators\unix -I$(QMKSRC)\generators\win32 -I$(QMKSRC)\generators\mac -I$(QMKSRC)\generators\integrity \ - -I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION) -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION)\QtCore \ + -I$(INC_PATH) -I$(INC_PATH)\QtCore -I$(INC_PATH)\QtCore\$(QT_VERSION) -I$(INC_PATH)\QtCore\$(QT_VERSION)\QtCore \ -I$(BUILD_PATH)\src\corelib\global -DHAVE_QCONFIG_CPP \ -I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \ -I$(SOURCE_PATH)\tools\shared \ diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 9620129509..ad2854880a 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1987,7 +1987,7 @@ QString Configure::defaultTo(const QString &option) return "auto"; if (option == "SYNCQT" - && (!QFile::exists(sourcePath + "/bin/syncqt.pl"))) + && (!QFile::exists(sourcePath + "/.git"))) return "no"; // Do not actually build the examples in production builds with -prefix, unless requested @@ -3810,7 +3810,10 @@ void Configure::buildQmake() QTextStream stream(&out); stream << "#AutoGenerated by configure.exe" << endl << "BUILD_PATH = " << QDir::toNativeSeparators(buildPath) << endl - << "SOURCE_PATH = " << QDir::toNativeSeparators(sourcePath) << endl; + << "SOURCE_PATH = " << QDir::toNativeSeparators(sourcePath) << endl + << "INC_PATH = " << QDir::toNativeSeparators( + (QFile::exists(sourcePath + "/.git") ? buildPath : sourcePath) + + "/include") << endl; stream << "QT_VERSION = " << dictionary["VERSION"] << endl; if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) { stream << "QMAKESPEC = $(SOURCE_PATH)\\mkspecs\\win32-g++" << endl From 9a9abf8a8a19faaf805c9ca4e09c9e2e3ae0c122 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 29 May 2013 15:04:06 +0200 Subject: [PATCH 12/19] Only process vcproj files if we do a -fully-process A top-level vcproj (really a .sln file) only makes sense when sub- projects are generated too, since the solutions generator will ignore all non-generated projects. Originally-by: Marius Storm-Olsen Change-Id: Iff09279d5760b5114a4cfb9b58ad677f2f69fa58 Reviewed-by: Joerg Bornemann --- tools/configure/configureapp.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index ad2854880a..98b59ab6fd 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1841,7 +1841,7 @@ bool Configure::displayHelp() desc("BUILD_QMAKE", "no", "-no-qmake", "Do not compile qmake."); desc("BUILD_QMAKE", "yes", "-qmake", "Compile qmake.\n"); - desc("PROCESS", "partial", "-process", "Generate top-level Makefiles/Project files."); + desc("PROCESS", "partial", "-process", "Generate only top-level Makefile."); desc("PROCESS", "full", "-fully-process", "Generate Makefiles/Project files for the entire Qt\ntree."); desc("PROCESS", "no", "-dont-process", "Do not generate Makefiles/Project files.\n"); @@ -3954,7 +3954,8 @@ void Configure::generateMakefiles() { QString dirName; bool generate = true; - bool doDsp = (dictionary["VCPROJFILES"] == "yes"); + bool doDsp = (dictionary["VCPROJFILES"] == "yes" + && dictionary["PROCESS"] == "full"); while (generate) { QString pwd = QDir::currentPath(); QString dirPath = buildPath + dirName; From 101c47242b955b4fe3da8f3de57450815b9d4aec Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Mon, 3 Jun 2013 12:44:46 +0200 Subject: [PATCH 13/19] Update LICENSE.PREVIEW.COMMERCIAL license Change-Id: I87b9c77327e2e32db77efb027172ccd21659e032 Reviewed-by: Iikka Eklund --- LICENSE.PREVIEW.COMMERCIAL | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE.PREVIEW.COMMERCIAL b/LICENSE.PREVIEW.COMMERCIAL index e90ad1acb5..15e61fc19e 100644 --- a/LICENSE.PREVIEW.COMMERCIAL +++ b/LICENSE.PREVIEW.COMMERCIAL @@ -14,8 +14,8 @@ TECHNOLOGY PREVIEW LICENSE AGREEMENT: The Americas Agreement version 2.4 This Technology Preview License Agreement ("Agreement")is a legal agreement -between Digia USA, Inc. ("Digia"), with its registered office at 32 W. -Loockerman Street, Suite 201, City of Dover, County of Kent, Delaware 19904, +between Digia USA, Inc. ("Digia"), with its registered office at 2350 +Mission College Blvd., Suite 1020, Santa Clara, California 95054, U.S.A. and you (either an individual or a legal entity) ("Licensee") for the Licensed Software (as defined below). From 51a35f5c021836bf31276749c638addefac12ebb Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Fri, 31 May 2013 14:57:52 +0200 Subject: [PATCH 14/19] eglfs: prevent expose/geometrychange loop This prevents EGLFS from getting stuck after exposing the first frame, by constantly generating new Expose and GeometryChange events which are synchronously processed. Change-Id: Id3b09821ea31e9c1ddab7c520e782a4e42844a08 Reviewed-by: Paul Olav Tvete --- src/plugins/platforms/eglfs/qeglfswindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp index cd92a07f00..98c54e0ee0 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.cpp +++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp @@ -68,11 +68,11 @@ QEglFSWindow::~QEglFSWindow() void QEglFSWindow::create() { - setWindowState(Qt::WindowFullScreen); - if (m_window) return; + setWindowState(Qt::WindowFullScreen); + if (window()->type() == Qt::Desktop) { QRect rect(QPoint(), QEglFSHooks::hooks()->screenSize()); QPlatformWindow::setGeometry(rect); From fb7e0e24c4181e9e97d85a3a80c3e2ef5a40770a Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Sat, 1 Jun 2013 17:57:34 +0200 Subject: [PATCH 15/19] eglfs: Fix bug determining physical screen size In the situation that the screenSize EGLFS hook had been defined, but not the physicalScreenSize, the uninitialized contents of fb_var_screeninfo vinfo would be used to calculate the fall-back physical screen size. Since this value is undefined, devices like the Raspberry Pi would end unable to render DPI dependent fonts. Change-Id: Ic9f67c1c646cc7b328b695b76a84d78577fefcd8 Reviewed-by: Paul Olav Tvete --- src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index 91a97ff977..c334f46c2c 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -99,6 +99,7 @@ QSizeF QEglFSHooks::physicalScreenSize() const struct fb_var_screeninfo vinfo; int w = -1; int h = -1; + QSize screenResolution; if (framebuffer != -1) { if (ioctl(framebuffer, FBIOGET_VSCREENINFO, &vinfo) == -1) { @@ -106,12 +107,15 @@ QSizeF QEglFSHooks::physicalScreenSize() const } else { w = vinfo.width; h = vinfo.height; + screenResolution = QSize(vinfo.xres, vinfo.yres); } + } else { + screenResolution = screenSize(); } const int defaultPhysicalDpi = 100; - size.setWidth(w <= 0 ? vinfo.xres * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(w)); - size.setHeight(h <= 0 ? vinfo.yres * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(h)); + size.setWidth(w <= 0 ? screenResolution.width() * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(w)); + size.setHeight(h <= 0 ? screenResolution.height() * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(h)); if (w <= 0 || h <= 0) { qWarning("EGLFS: Unable to query physical screen size, defaulting to %d dpi.\n" From 55f01addb201c153ba5049a11f8ddfc0aa7544c7 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 4 Jun 2013 08:39:03 +0200 Subject: [PATCH 16/19] Adapt QtPrintSupport related uic rules It's no more on QtWidgets. Task-number: QTBUG-31508 Change-Id: Iba117a4103c2b32173816a4ecb5faa187f169b32 Reviewed-by: Friedemann Kleint --- src/tools/uic/qclass_lib_map.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h index 6859cd0cd4..cedefb801a 100644 --- a/src/tools/uic/qclass_lib_map.h +++ b/src/tools/uic/qclass_lib_map.h @@ -587,8 +587,8 @@ QT_CLASS_LIB(QFontDialog, QtWidgets, qfontdialog.h) QT_CLASS_LIB(QInputDialog, QtWidgets, qinputdialog.h) QT_CLASS_LIB(QMessageBox, QtWidgets, qmessagebox.h) QT_CLASS_LIB(QPageSetupDialog, QtWidgets, qpagesetupdialog.h) -QT_CLASS_LIB(QPrintDialog, QtWidgets, qprintdialog.h) -QT_CLASS_LIB(QPrintPreviewDialog, QtWidgets, qprintpreviewdialog.h) +QT_CLASS_LIB(QPrintDialog, QtPrintSupport, qprintdialog.h) +QT_CLASS_LIB(QPrintPreviewDialog, QtPrintSupport, qprintpreviewdialog.h) QT_CLASS_LIB(QProgressDialog, QtWidgets, qprogressdialog.h) QT_CLASS_LIB(QWizard, QtWidgets, qwizard.h) QT_CLASS_LIB(QWizardPage, QtWidgets, qwizard.h) @@ -944,7 +944,7 @@ QT_CLASS_LIB(QMenuBar, QtWidgets, qmenubar.h) QT_CLASS_LIB(QMenuItem, QtWidgets, qmenudata.h) QT_CLASS_LIB(QPlainTextEdit, QtWidgets, qplaintextedit.h) QT_CLASS_LIB(QPlainTextDocumentLayout, QtWidgets, qplaintextedit.h) -QT_CLASS_LIB(QPrintPreviewWidget, QtWidgets, qprintpreviewwidget.h) +QT_CLASS_LIB(QPrintPreviewWidget, QtPrintSupport, qprintpreviewwidget.h) QT_CLASS_LIB(QProgressBar, QtWidgets, qprogressbar.h) QT_CLASS_LIB(QPushButton, QtWidgets, qpushbutton.h) QT_CLASS_LIB(QRadioButton, QtWidgets, qradiobutton.h) From 53698f3e7c9451774b60e3f65988654e24c8968e Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 4 Jun 2013 20:34:49 +0200 Subject: [PATCH 17/19] fix non-git non-shadow non-prefix non-qtbase builds these builds usually assume all headers in the qtbase build (== source == install) dir, so the path for adding our pre-generated per-module include paths needs to be triggered explicitly. Change-Id: I57ec441d58cdf8186907ee6c36dce08daa206c49 Reviewed-by: Kai Koehne Reviewed-by: Joerg Bornemann --- mkspecs/features/qt_module_pris.prf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 653f753815..11f56198d1 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -56,7 +56,8 @@ else: \ MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \ \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME } - !git_build:!equals(_PRO_FILE_PWD_, $$OUT_PWD) { + !git_build:if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \ + |if(!prefix_build:!equals(MODULE_BASE_DIR, $$[QT_HOST_PREFIX]))) { pub_inc = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, $$MODULE_BASE_DIR/include) priv_inc = $$replace(MODULE_PRIVATE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, $$MODULE_BASE_DIR/include) force_independent { From 07337def652a13002ccc98d77bb1a13372bba26f Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 4 Jun 2013 20:59:08 +0200 Subject: [PATCH 18/19] don't add absent private include paths to non-git builds all private headers are created by syncqt (and are thus in the source dir), so we can simply override the normal (build dir based) paths instead of extending them. Change-Id: I9c1f3344c401b481b3f3d2295515f1aabffaa9a0 Reviewed-by: Thiago Macieira --- mkspecs/features/qt_module_pris.prf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 11f56198d1..666989f75e 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -63,10 +63,10 @@ else: \ force_independent { MODULE_FWD_PRI_CONT_SUFFIX = \ "QT.$${MODULE}.includes += $$pub_inc" \ - "QT.$${MODULE}.private_includes += $$priv_inc" + "QT.$${MODULE}.private_includes = $$priv_inc" } else { MODULE_INCLUDES += $$pub_inc - MODULE_PRIVATE_INCLUDES += $$priv_inc + MODULE_PRIVATE_INCLUDES = $$priv_inc } } MODULE_PRI_CONT = \ From 930dc240d1938dac8d6512b947cb143fc91c3d21 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 28 May 2013 11:11:56 +0200 Subject: [PATCH 19/19] remove pointless symlink fallback for qconfig.h syncqt does that nowadays. Change-Id: Iffc465cce86a7c6370afaa543ba9b9ed8d478eea Reviewed-by: Joerg Bornemann --- configure | 3 --- 1 file changed, 3 deletions(-) diff --git a/configure b/configure index 1e15220ca1..d7c96749f4 100755 --- a/configure +++ b/configure @@ -6424,9 +6424,6 @@ else [ -f "$outpath/src/corelib/global/qconfig.h" ] && chmod +w "$outpath/src/corelib/global/qconfig.h" mv "$outpath/src/corelib/global/qconfig.h.new" "$outpath/src/corelib/global/qconfig.h" chmod -w "$outpath/src/corelib/global/qconfig.h" - if [ ! -f "$outpath/include/QtCore/qconfig.h" ]; then - ln -s "$outpath/src/corelib/global/qconfig.h" "$outpath/include/QtCore/qconfig.h" - fi fi # create a forwarding header