From 4b43263b870c17fd813d1d34f97146f4c725083e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 12 Jun 2009 14:27:54 +0200 Subject: Attempt to fix header installation for Phonon. This is the long-standing issue of whether Phonon headers should be written with a capital P or a lowercase one. KDE releases of Phonon had whereas Qt 4.4 had . I tried to solve this before by adding a Phonon subdir next to phonon in include/, but that only compounded the error: the presence of two dirs caused problems and the installation wasn't fixed. So instead try to place Phonon/ClassName inside include/phonon. And fix the installation to do it properly: just copy the include/$lib dir into the target, then overwrite the .h files with the sources from src/$lib. Reviewed-by: Marius Storm-Olsen --- bin/syncqt | 46 ++++++++++++++++++++++------------------------ src/qt_install.pri | 16 ++++++++++++---- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/bin/syncqt b/bin/syncqt index f58a4d1..d6d3c57 100755 --- a/bin/syncqt +++ b/bin/syncqt @@ -308,8 +308,6 @@ sub syncHeader { $header =~ s=\\=/=g; return copyFile($iheader, $header) if($copy); - my $iheader_no_basedir = $iheader; - $iheader_no_basedir =~ s,^$basedir/?,,; unless(-e "$header") { my $header_dir = dirname($header); mkpath $header_dir, 0777; @@ -798,10 +796,9 @@ foreach (@modules_to_sync) { my $class = $_; if ($class =~ m/::/) { $class =~ s,::,/,g; - $class = "../" . $class; } $class_lib_map_contents .= "QT_CLASS_LIB($_, $lib, $header_base)\n"; - $header_copies++ if(syncHeader("$out_basedir/include/$lib/$class", $header, 0)); + $header_copies++ if(syncHeader("$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0)); } } else { @headers = ( "$out_basedir/include/$lib/private/$header" ); @@ -823,7 +820,6 @@ foreach (@modules_to_sync) { my $class = $_; if ($class =~ m/::/) { $class =~ s,::,/,g; - $class = "../" . $class; } my $class_header = fixPaths("$out_basedir/include/$lib/$class", $current_dir) . " "; @@ -844,25 +840,27 @@ foreach (@modules_to_sync) { $master_contents .= "#endif\n"; unless($showonly) { - #generate the "master" include file - my $master_include = "$out_basedir/include/$lib/$lib"; - $pri_install_files .= fixPaths($master_include, "$modules{$lib}") . " "; #get the master file installed too - if(-e "$master_include") { - open MASTERINCLUDE, "<$master_include"; - local $/; - binmode MASTERINCLUDE; - my $oldmaster = ; - close MASTERINCLUDE; - $oldmaster =~ s/\r//g; # remove \r's , so comparison is ok on all platforms - $master_include = 0 if($oldmaster eq $master_contents); - } - if($master_include && $master_contents) { - my $master_dir = dirname($master_include); - mkpath $master_dir, 0777; - print "header (master) created for $lib\n"; - open MASTERINCLUDE, ">$master_include"; - print MASTERINCLUDE "$master_contents"; - close MASTERINCLUDE; + unless ($lib eq "phonon") { + #generate the "master" include file + my $master_include = "$out_basedir/include/$lib/$lib"; + $pri_install_files .= fixPaths($master_include, "$modules{$lib}") . " "; #get the master file installed too + if($master_include && -e "$master_include") { + open MASTERINCLUDE, "<$master_include"; + local $/; + binmode MASTERINCLUDE; + my $oldmaster = ; + close MASTERINCLUDE; + $oldmaster =~ s/\r//g; # remove \r's , so comparison is ok on all platforms + $master_include = 0 if($oldmaster eq $master_contents); + } + if($master_include && $master_contents) { + my $master_dir = dirname($master_include); + mkpath $master_dir, 0777; + print "header (master) created for $lib\n"; + open MASTERINCLUDE, ">$master_include"; + print MASTERINCLUDE "$master_contents"; + close MASTERINCLUDE; + } } #handle the headers.pri for each module diff --git a/src/qt_install.pri b/src/qt_install.pri index 6dd2074..ebeac8d 100644 --- a/src/qt_install.pri +++ b/src/qt_install.pri @@ -15,11 +15,19 @@ qt_install_headers { $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH/arch } - flat_headers.files = $$INSTALL_HEADERS - flat_headers.path = $$[QT_INSTALL_HEADERS]/Qt - INSTALLS += flat_headers + equals(TARGET, phonon) { + class_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET/Phonon + } else { + flat_headers.files = $$INSTALL_HEADERS + flat_headers.path = $$[QT_INSTALL_HEADERS]/Qt + INSTALLS += flat_headers - targ_headers.files = $$INSTALL_HEADERS $$SYNCQT.HEADER_CLASSES + class_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET + } + class_headers.files = $$SYNCQT.HEADER_CLASSES + INSTALLS += class_headers + + targ_headers.files = $$INSTALL_HEADERS targ_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET INSTALLS += targ_headers } -- cgit v0.12