diff options
-rwxr-xr-x | bin/syncqt | 59 | ||||
-rw-r--r-- | mkspecs/features/qt_config.prf | 9 | ||||
-rw-r--r-- | src/modules/qt_core.pri | 11 | ||||
-rw-r--r-- | src/modules/qt_dbus.pri | 12 | ||||
-rw-r--r-- | src/modules/qt_gui.pri | 11 | ||||
-rw-r--r-- | src/modules/qt_network.pri | 11 | ||||
-rw-r--r-- | src/modules/qt_opengl.pri | 12 | ||||
-rw-r--r-- | src/modules/qt_openvg.pri | 12 | ||||
-rw-r--r-- | src/modules/qt_sql.pri | 11 | ||||
-rw-r--r-- | src/modules/qt_svg.pri | 11 | ||||
-rw-r--r-- | src/modules/qt_testlib.pri | 12 | ||||
-rw-r--r-- | src/modules/qt_xml.pri | 11 | ||||
-rw-r--r-- | sync.profile | 13 |
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" ); |