[Qt] Make sure headers.pri has the right relative paths for install
authorvestbo@webkit.org <vestbo@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Nov 2011 11:11:06 +0000 (11:11 +0000)
committervestbo@webkit.org <vestbo@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Nov 2011 11:11:06 +0000 (11:11 +0000)
The install rules are generated from api.pri which lives in Source,
which means the paths in headers.pri, which is the basis for the
install rules, needs to be relative to Source as well.

We were also installing the headers from the forwarding headers
directory, which was wrong, as those headers contained relative paths.

We now install the actual headers, by using headers.pri as a basis.

https://bugs.webkit.org/show_bug.cgi?id=71697

Reviewed by Simon Hausmann.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@99832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/QtWebKit.pro
Source/api.pri
sync.profile

index 522304a474943614fa4793a4f0948a4009f20122..5e16e12b6afcd42bf214044c55cf1869403449ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2011-11-10  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
+
+        [Qt] Make sure headers.pri has the right relative paths for install
+
+        The install rules are generated from api.pri which lives in Source,
+        which means the paths in headers.pri, which is the basis for the
+        install rules, needs to be relative to Source as well.
+
+        We were also installing the headers from the forwarding headers
+        directory, which was wrong, as those headers contained relative paths.
+
+        We now install the actual headers, by using headers.pri as a basis.
+
+        https://bugs.webkit.org/show_bug.cgi?id=71697
+
+        Reviewed by Simon Hausmann.
+
+        * Source/QtWebKit.pro:
+        * Source/api.pri:
+        * sync.profile:
+
 2011-11-09  Shinya Kawanaka  <shinyak@google.com>
 
         Internals.markerRangeForNode should be able to take markers by specifying a marker type.
index 9c861d5e8630c7c9afa627ed6ad03c23d4066660..8fa5cddfc07aa4d24d529e82d7afa627b1cbee7e 100644 (file)
@@ -34,9 +34,14 @@ SUBDIRS += examples
     win32-msvc*: command = $$command -windows
 
     outdir = $$toSystemPath($${ROOT_BUILD_DIR})
-    rootdir = $$toSystemPath($${ROOT_WEBKIT_DIR})
 
-    fwheader_generator.commands = perl $${command} -outdir $${outdir} -separate-module $${TARGET}$${DIRLIST_SEPARATOR}$${rootdir}$${DIRLIST_SEPARATOR}$$toSystemPath(Source/WebKit/qt/Api)
+    # The module root has to be the same as directory of the pro-file that generates
+    # the install rules (api.pri), otherwise the relative paths in the generated
+    # headers.pri will be incorrect.
+    module_rootdir = $$toSystemPath($${_PRO_FILE_PWD_})
+
+    module = $${TARGET}$${DIRLIST_SEPARATOR}$${module_rootdir}$${DIRLIST_SEPARATOR}$$toSystemPath(WebKit/qt/Api)
+    fwheader_generator.commands = perl $${command} -outdir $${outdir} -separate-module $${module}
     fwheader_generator.depends = $${syncqt}
 
     variables = $$computeSubdirVariables(api)
index 35a94e2cfcc2e9dd302820c5c05daec818f78737..7afc99a971e59d5521f52f61a00aa7a3a22975f5 100644 (file)
@@ -37,10 +37,6 @@ CONFIG(release) {
     unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
 }
 
-MODULE_FILE = $${ROOT_WEBKIT_DIR}/Tools/qmake/qt_webkit.pri
-include($${MODULE_FILE})
-VERSION = $${QT.webkit.MAJOR_VERSION}.$${QT.webkit.MINOR_VERSION}.$${QT.webkit.PATCH_VERSION}
-
 !static: DEFINES += QT_MAKEDLL
 
 SOURCES += \
@@ -164,13 +160,24 @@ contains(CONFIG, texmap) {
     DEFINES += WTF_USE_TEXTURE_MAPPER=1
 }
 
-modulefile.files = $${MODULE_FILE}
+
+# ------------- Install rules -------------
+
+modulefile.files = $${ROOT_WEBKIT_DIR}/Tools/qmake/qt_webkit.pri
 mkspecs = $$[QMAKE_MKSPECS]
 mkspecs = $$split(mkspecs, :)
 modulefile.path = $$last(mkspecs)/modules
 INSTALLS += modulefile
 
-headers.files = $${ROOT_BUILD_DIR}/include/$${TARGET}/*
+include($$first(modulefile.files))
+VERSION = $${QT.webkit.VERSION}
+
+# Syncqt has already run at this point, so we can use headers.pri
+# as a basis for our install-rules
+HEADERS_PRI = $${ROOT_BUILD_DIR}/include/$$TARGET/headers.pri
+!include($$HEADERS_PRI): error(Failed to resolve install headers)
+
+headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES
 !isEmpty(INSTALL_HEADERS): headers.path = $$INSTALL_HEADERS/$${TARGET}
 else: headers.path = $$[QT_INSTALL_HEADERS]/$${TARGET}
 INSTALLS += headers
@@ -203,7 +210,7 @@ mac {
         # For debug_and_release configs, only copy headers in release
         !debug_and_release|if(build_pass:CONFIG(release, debug|release)) {
             FRAMEWORK_HEADERS.version = Versions
-            FRAMEWORK_HEADERS.files = $$files($$headers.files, false)
+            FRAMEWORK_HEADERS.files = $${headers.files}
             FRAMEWORK_HEADERS.path = Headers
             QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS
         }
index 953027bb22ee047df558d06ea52b63c7a61d305b..b5ac45e8dad977592211a8fabb25ee3707b4dec8 100644 (file)
@@ -1,8 +1,10 @@
 %modules = ( # path to module name map
-    "QtWebKit" => "$basedir"
+    # Has to be the same directory as the pro file that generates install rules,
+    # otherwise the relative paths in headers.pri will not be correct.
+    "QtWebKit" => "$basedir/Source"
 );
 %moduleheaders = ( # restrict the module headers to those found in relative path
-    "QtWebKit" => "Source/WebKit/qt/Api;Source/WebKit2/UIProcess/API/qt",
+    "QtWebKit" => "WebKit/qt/Api;WebKit2/UIProcess/API/qt",
 );
 %classnames = (
 );