Commit 96557bc3 authored by Oswald Buddenhagen's avatar Oswald Buddenhagen Committed by The Qt Project
Browse files

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: default avatarJoerg Bornemann <joerg.bornemann@digia.com>
parent 0519129c
dev 5.10 5.11 5.12 5.12.1 5.12.10 5.12.11 5.12.12 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13 5.13.0 5.13.1 5.13.2 5.14 5.14.0 5.14.1 5.14.2 5.15 5.15.0 5.15.1 5.15.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.9.8 6.0 6.0.0 6.1 6.1.0 6.1.1 6.1.2 6.1.3 6.2 6.2.0 6.2.1 6.2.2 old/5.1 old/5.2 wip/cmake wip/highdpi wip/lite wip/mir wip/nacl wip/network-test-server wip/remac wip/tizen wip/webassembly v5.15.0-alpha1 v5.14.1 v5.14.0 v5.14.0-rc2 v5.14.0-rc1 v5.14.0-beta3 v5.14.0-beta2 v5.14.0-beta1 v5.14.0-alpha1 v5.13.2 v5.13.1 v5.13.0 v5.13.0-rc3 v5.13.0-rc2 v5.13.0-rc1 v5.13.0-beta4 v5.13.0-beta3 v5.13.0-beta2 v5.13.0-beta1 v5.13.0-alpha1 v5.12.7 v5.12.6 v5.12.5 v5.12.4 v5.12.3 v5.12.2 v5.12.1 v5.12.0 v5.12.0-rc2 v5.12.0-rc1 v5.12.0-beta4 v5.12.0-beta3 v5.12.0-beta2 v5.12.0-beta1 v5.12.0-alpha1 v5.11.3 v5.11.2 v5.11.1 v5.11.0 v5.11.0-rc2 v5.11.0-rc1 v5.11.0-beta4 v5.11.0-beta3 v5.11.0-beta2 v5.11.0-beta1 v5.11.0-alpha1 v5.10.1 v5.10.0 v5.10.0-rc3 v5.10.0-rc2 v5.10.0-rc1 v5.10.0-beta4 v5.10.0-beta3 v5.10.0-beta2 v5.10.0-beta1 v5.10.0-alpha1 v5.9.9 v5.9.8 v5.9.7 v5.9.6 v5.9.5 v5.9.4 v5.9.3 v5.9.2 v5.9.1 v5.9.0 v5.9.0-rc2 v5.9.0-rc1 v5.9.0-beta4 v5.9.0-beta3 v5.9.0-beta2 v5.9.0-beta1 v5.9.0-alpha1 v5.8.0 v5.8.0-rc1 v5.8.0-beta1 v5.8.0-alpha1 v5.7.1 v5.7.0 v5.7.0-rc1 v5.7.0-beta1 v5.7.0-alpha1 v5.6.3 v5.6.2 v5.6.1 v5.6.1-1 v5.6.0 v5.6.0-rc1 v5.6.0-beta1 v5.6.0-alpha1 v5.5.1 v5.5.0 v5.5.0-rc1 v5.5.0-beta1 v5.5.0-alpha1 v5.4.2 v5.4.1 v5.4.0 v5.4.0-rc1 v5.4.0-beta1 v5.4.0-alpha1 v5.3.2 v5.3.1 v5.3.0 v5.3.0-rc1 v5.3.0-beta1 v5.3.0-alpha1 v5.2.1 v5.2.0 v5.2.0-rc1 v5.2.0-beta1 v5.2.0-alpha1 v5.1.1 v5.1.0 v5.1.0-rc2 v5.1.0-rc1
No related merge requests found
Showing with 42 additions and 25 deletions
......@@ -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 (<F>) {
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";
......
......@@ -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 <root>/$$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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment