summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/syncqt59
-rw-r--r--mkspecs/features/qt_config.prf9
-rw-r--r--src/modules/qt_core.pri11
-rw-r--r--src/modules/qt_dbus.pri12
-rw-r--r--src/modules/qt_gui.pri11
-rw-r--r--src/modules/qt_network.pri11
-rw-r--r--src/modules/qt_opengl.pri12
-rw-r--r--src/modules/qt_openvg.pri12
-rw-r--r--src/modules/qt_sql.pri11
-rw-r--r--src/modules/qt_svg.pri11
-rw-r--r--src/modules/qt_testlib.pri12
-rw-r--r--src/modules/qt_xml.pri11
-rw-r--r--sync.profile13
13 files changed, 191 insertions, 4 deletions
diff --git a/bin/syncqt b/bin/syncqt
index e3d941b109..ac540ea505 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -23,8 +23,16 @@ our $basedir;
our $quoted_basedir;
+# try to figure out where QtBase is located
+# normally the script location should be enough, if not fall back to
+# QTDIR environment variable. If that doesn't work, later ask the
+# user to use the -qtdir option explicitly.
+my $qtbasedir = dirname(dirname($0));
+$qtbasedir = $ENV{"QTDIR"} if ($qtbasedir !~ /qtbase/);
+$qtbasedir =~ s=\\=/=g if (defined $qtbasedir);
+
# will be defined based on the modules sync.profile
-our (%modules, %moduleheaders, %classnames, %mastercontent);
+our (%modules, %moduleheaders, %classnames, %mastercontent, %modulepris);
# global variables (modified by options)
my $isunix = 0;
@@ -38,6 +46,7 @@ my $check_includes = 0;
my $copy_headers = 0;
my $create_uic_class_map = 1;
my $create_private_headers = 1;
+my $no_module_fwd = 0;
my @modules_to_sync ;
$force_relative = 1 if ( -d "/System/Library/Frameworks" );
@@ -62,9 +71,12 @@ sub showUsage
print " -windows Force platform to Windows (default: " . ($force_win ? "yes" : "no") . ")\n";
print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n";
print " -outdir <PATH> Specify output directory for sync (default: $out_basedir)\n";
+ print " -qtdir <PATH> Set the path to QtBase (detected: " . (defined $qtbasedir ? $qtbasedir : "-none-") . ")\n";
print " -quiet Only report problems, not activity (default: " . ($quiet ? "yes" : "no") . ")\n";
- print " -separate-module <NAME>:<PROFILEDIR>:<HEADERDIR> Create headers for <NAME> with original headers in <HEADERDIR> relative to <PROFILEDIR> \n";
+ print " -separate-module <NAME>:<PROFILEDIR>:<HEADERDIR>\n";
+ print " Create headers for <NAME> with original headers in <HEADERDIR> relative to <PROFILEDIR> \n";
print " -private Force copy private headers (default: " . ($create_private_headers ? "yes" : "no") . ")\n";
+ print " -no-module-fwd Don't create fwd includes for module pri files\n";
print " -help This help\n";
exit 0;
}
@@ -558,7 +570,7 @@ while ( @ARGV ) {
#parse
my $arg = shift @ARGV;
- if ($arg eq "-h" || $arg eq "-help" || $arg eq "?") {
+ if ($arg eq "-h" || $arg eq "-help" || $arg eq "-?" || $arg eq "?") {
$var = "show_help";
$val = "yes";
} elsif($arg eq "-copy") {
@@ -593,10 +605,16 @@ while ( @ARGV ) {
} elsif($arg eq "-private") {
$var = "create_private_headers";
$val = "yes";
+ } elsif($arg eq "-qtdir") {
+ $var = "qtdir";
+ $val = shift @ARGV;
} elsif($arg eq "-base-dir") {
# skip, it's been dealt with at the top of the file
shift @ARGV;
next;
+ } elsif($arg eq "-no-module-fwd") {
+ $var = "no_module_fwd";
+ $val = "yes";
} elsif($arg =~/^-/) {
print "Unknown option: $arg\n\n" if(!$var);
showUsage();
@@ -664,6 +682,15 @@ while ( @ARGV ) {
push @modules_to_sync, $module;
$moduleheaders{$module} = $headerdir;
$create_uic_class_map = 0;
+ } elsif ($var eq "qtdir") {
+ if($val) {
+ $qtbasedir = $val;
+ $qtbasedir =~ s=\\=/=g;
+ } else {
+ die "The -qtdir option requires an argument";
+ }
+ } elsif ($var eq "no_module_fwd") {
+ $no_module_fwd = 1;
} elsif ($var eq "output") {
my $outdir = $val;
if(checkRelative($outdir)) {
@@ -678,6 +705,15 @@ while ( @ARGV ) {
}
}
+# if the $qtbasedir neither has 'qtbase' somewhere in its path, nor a
+# '.qmake.cache' file in its directory, we assume it's not a valid path
+# (remember that a yet-to-be-built qtbase doesn't have this file either,
+# thus the 'qtbase' path check!)
+die "Cannot automatically detect/use provided path to QtBase's build directory!\n" .
+ "QTDIR detected/provided: " . (defined $qtbasedir ? $qtbasedir : "-none-") . "\n" .
+ "Please -qtdir option to provide the correct path.\nsyncqt failed"
+ if (!defined $qtbasedir || (!-e "$qtbasedir/.qmake.cache" && $qtbasedir !~ /qtbase/));
+
# if we have no $basedir we cannot be sure which sources you want, so die
die "Could not find any sync.profile for your module!\nPass <module directory> to syncqt to sync your header files.\nsyncqt failed" if (!$basedir);
@@ -962,6 +998,23 @@ foreach my $lib (@modules_to_sync) {
print HEADERS_PRI_FILE $headers_pri_contents;
close HEADERS_PRI_FILE;
}
+
+ # create forwarding module pri in qtbase/mkspecs/modules
+ unless ($no_module_fwd) {
+ my $modulepri = $modulepris{$lib};
+ if (-e $modulepri) {
+ my $modulepriname = basename($modulepri);
+ my $moduleprifwd = "$qtbasedir/mkspecs/modules/$modulepriname";
+ open MODULE_PRI_FILE, ">$moduleprifwd";
+ print MODULE_PRI_FILE "QT_MODULE_INCLUDE_BASE = $out_basedir/include\n";
+ print MODULE_PRI_FILE "QT_MODULE_LIB_BASE = $out_basedir/lib\n";
+ print MODULE_PRI_FILE "include($modulepri)\n";
+ close MODULE_PRI_FILE;
+ utime(time, (stat($modulepri))[9], $moduleprifwd);
+ } elsif ($modulepri) {
+ print "WARNING: Module $lib\'s pri file '$modulepri' not found.\nSkipped creating forwarding pri for $lib.\n";
+ }
+ }
}
}
unless($showonly || !$create_uic_class_map) {
diff --git a/mkspecs/features/qt_config.prf b/mkspecs/features/qt_config.prf
index de1cac4651..2973c7e414 100644
--- a/mkspecs/features/qt_config.prf
+++ b/mkspecs/features/qt_config.prf
@@ -14,7 +14,14 @@ isEmpty(QMAKE_QT_CONFIG)|!exists($$QMAKE_QT_CONFIG) {
for(dir, $$list($$unique($$list($$dirname(QMAKE_QT_CONFIG) \
$$split($$list($$[QMAKE_MKSPECS]), $$DIRLIST_SEPARATOR))))) {
debug(1, "Loading modules from $${dir}")
- for(mod, $$list($$files($$dir/modules/qt_*.pri))):include($$mod)
+ for(mod, $$list($$files($$dir/modules/qt_*.pri))) {
+ # For installed Qt these paths will be common for all modules
+ # For development these will vary per module, and syncqt will override the value in the
+ # qt_<module>.pri forwarding file
+ QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
+ QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
+ include($$mod)
+ }
}
}
diff --git a/src/modules/qt_core.pri b/src/modules/qt_core.pri
new file mode 100644
index 0000000000..742aefee91
--- /dev/null
+++ b/src/modules/qt_core.pri
@@ -0,0 +1,11 @@
+QT_CORE_VERSION = $$QT_VERSION
+QT_CORE_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_CORE_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_CORE_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.core.name = QtCore
+QT.core.includes = $$QT_MODULE_INCLUDE_BASE/QtCore
+QT.core.libs = $$QT_MODULE_LIB_BASE
+QT.core.depends =
+
+QT_CONFIG += core
diff --git a/src/modules/qt_dbus.pri b/src/modules/qt_dbus.pri
new file mode 100644
index 0000000000..fddcbf7f98
--- /dev/null
+++ b/src/modules/qt_dbus.pri
@@ -0,0 +1,12 @@
+QT_DBUS_VERSION = $$QT_VERSION
+QT_DBUS_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_DBUS_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_DBUS_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.dbus.name = QtDBus
+QT.dbus.includes = $$QT_MODULE_INCLUDE_BASE/QtDBus
+QT.dbus.libs = $$QT_MODULE_LIB_BASE
+QT.dbus.depends = core xml
+QT.dbus.CONFIG = dbusadaptors dbusinterfaces
+
+QT_CONFIG += dbus
diff --git a/src/modules/qt_gui.pri b/src/modules/qt_gui.pri
new file mode 100644
index 0000000000..6da74315ee
--- /dev/null
+++ b/src/modules/qt_gui.pri
@@ -0,0 +1,11 @@
+QT_GUI_VERSION = $$QT_VERSION
+QT_GUI_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_GUI_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_GUI_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.gui.name = QtGui
+QT.gui.includes = $$QT_MODULE_INCLUDE_BASE/QtGui
+QT.gui.libs = $$QT_MODULE_LIB_BASE
+QT.gui.depends = core network
+
+QT_CONFIG += gui
diff --git a/src/modules/qt_network.pri b/src/modules/qt_network.pri
new file mode 100644
index 0000000000..4d32079ead
--- /dev/null
+++ b/src/modules/qt_network.pri
@@ -0,0 +1,11 @@
+QT_CORE_VERSION = $$QT_VERSION
+QT_NETWORK_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_NETWORK_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_NETWORK_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.network.name = QtNetwork
+QT.network.includes = $$QT_MODULE_INCLUDE_BASE/QtNetwork
+QT.network.libs = $$QT_MODULE_LIB_BASE
+QT.network.depends = core
+
+QT_CONFIG += network
diff --git a/src/modules/qt_opengl.pri b/src/modules/qt_opengl.pri
new file mode 100644
index 0000000000..9ad142570f
--- /dev/null
+++ b/src/modules/qt_opengl.pri
@@ -0,0 +1,12 @@
+QT_OPENGL_VERSION = $$QT_VERSION
+QT_OPENGL_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_OPENGL_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_OPENGL_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.opengl.name = QtOpenGL
+QT.opengl.includes = $$QT_MODULE_INCLUDE_BASE/QtOpenGL
+QT.opengl.libs = $$QT_MODULE_LIB_BASE
+QT.opengl.depends = core gui
+QT.opengl.CONFIG = opengl
+
+QT_CONFIG += opengl
diff --git a/src/modules/qt_openvg.pri b/src/modules/qt_openvg.pri
new file mode 100644
index 0000000000..612bd13bc9
--- /dev/null
+++ b/src/modules/qt_openvg.pri
@@ -0,0 +1,12 @@
+QT_OPENVG_VERSION = $$QT_VERSION
+QT_OPENVG_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_OPENVG_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_OPENVG_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.openvg.name = QtOpenVG
+QT.openvg.includes = $$QT_MODULE_INCLUDE_BASE/QtOpenVG
+QT.openvg.libs = $$QT_MODULE_LIB_BASE
+QT.openvg.depends = core gui
+QT.openvg.CONFIG = openvg
+
+QT_CONFIG += openvg
diff --git a/src/modules/qt_sql.pri b/src/modules/qt_sql.pri
new file mode 100644
index 0000000000..bf5917b50b
--- /dev/null
+++ b/src/modules/qt_sql.pri
@@ -0,0 +1,11 @@
+QT_SQL_VERSION = $$QT_VERSION
+QT_SQL_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_SQL_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_SQL_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.sql.name = QtSql
+QT.sql.includes = $$QT_MODULE_INCLUDE_BASE/QtSql
+QT.sql.libs = $$QT_MODULE_LIB_BASE
+QT.sql.depends = core
+
+QT_CONFIG += sql
diff --git a/src/modules/qt_svg.pri b/src/modules/qt_svg.pri
new file mode 100644
index 0000000000..faccb781da
--- /dev/null
+++ b/src/modules/qt_svg.pri
@@ -0,0 +1,11 @@
+QT_SVG_VERSION = $$QT_VERSION
+QT_SVG_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_SVG_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_SVG_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.svg.name = QtSvg
+QT.svg.includes = $$QT_MODULE_INCLUDE_BASE/QtSvg
+QT.svg.libs = $$QT_MODULE_LIB_BASE
+QT.svg.depends = core gui
+
+QT_CONFIG += svg
diff --git a/src/modules/qt_testlib.pri b/src/modules/qt_testlib.pri
new file mode 100644
index 0000000000..0f6543837b
--- /dev/null
+++ b/src/modules/qt_testlib.pri
@@ -0,0 +1,12 @@
+QT_TEST_VERSION = $$QT_VERSION
+QT_TEST_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_TEST_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_TEST_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.testlib.name = QtTest
+QT.testlib.includes = $$QT_MODULE_INCLUDE_BASE/QtTest
+QT.testlib.libs = $$QT_MODULE_LIB_BASE
+QT.testlib.depends = core
+QT.testlib.CONFIG = console
+
+QT_CONFIG += testlib
diff --git a/src/modules/qt_xml.pri b/src/modules/qt_xml.pri
new file mode 100644
index 0000000000..45dbc667d7
--- /dev/null
+++ b/src/modules/qt_xml.pri
@@ -0,0 +1,11 @@
+QT_XML_VERSION = $$QT_VERSION
+QT_XML_MAJOR_VERSION = $$QT_MAJOR_VERSION
+QT_XML_MINOR_VERSION = $$QT_MINOR_VERSION
+QT_XML_PATCH_VERSION = $$QT_PATCH_VERSION
+
+QT.xml.name = QtXml
+QT.xml.includes = $$QT_MODULE_INCLUDE_BASE/QtXml
+QT.xml.libs = $$QT_MODULE_LIB_BASE
+QT.xml.depends = core
+
+QT_CONFIG += xml
diff --git a/sync.profile b/sync.profile
index 7d2e4b1a7e..c8ef4fc4c2 100644
--- a/sync.profile
+++ b/sync.profile
@@ -37,6 +37,19 @@
"openvg" => "#include <QtOpenVG/QtOpenVG>\n",
"xml" => "#include <QtXml/QtXml>\n",
);
+%modulepris = (
+ "QtCore" => "$basedir/src/modules/qt_core.pri",
+ "QtDBus" => "$basedir/src/modules/qt_dbus.pri",
+ "QtGui" => "$basedir/src/modules/qt_gui.pri",
+ "QtNetwork" => "$basedir/src/modules/qt_network.pri",
+ "QtOpenGL" => "$basedir/src/modules/qt_opengl.pri",
+ "QtOpenVG" => "$basedir/src/modules/qt_openvg.pri",
+ "QtSql" => "$basedir/src/modules/qt_sql.pri",
+ "QtSvg" => "$basedir/src/modules/qt_svg.pri",
+ "QtTest" => "$basedir/src/modules/qt_testlib.pri",
+ "QtXml" => "$basedir/src/modules/qt_xml.pri",
+);
+
@ignore_for_master_contents = ( "qt.h", "qpaintdevicedefs.h" );
@ignore_for_include_check = ( "qatomic.h" );
@ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qt_windows.h" );