qt: tune .pc files after installation in staging directory
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 24 Jul 2012 22:05:44 +0000 (00:05 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 25 Jul 2012 16:25:43 +0000 (18:25 +0200)
The Qt configuration and installation process is a bit strange, and it
leads the .pc files to contain absolute paths to the staging
directory, while it should only contains paths relative to the staging
directory, because pkg-config already adds the path of the sysroot
automatically to the headers and libraries locations.

This allows the 'pkg-config --cflags' results for Qt libraries to be
correct.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/qt/qt.mk

index feb0d6f3eb88754b49edc98e191b6ef9bc7b4d9d..3b40ea460f85ec3755fe44d23ffb09106c0f0ded 100644 (file)
@@ -577,13 +577,20 @@ endef
 # everything in the STAGING_DIR), we move host programs such as qmake,
 # rcc or uic to the HOST_DIR so that they are available at the usual
 # location. A qt.conf file is generated to make sure that all host
-# programs still find all files they need.
+# programs still find all files they need. The .pc files are tuned to
+# remove the sysroot path from them, since pkg-config already adds it
+# automatically.
 define QT_INSTALL_STAGING_CMDS
        $(MAKE) -C $(@D) install
        mkdir -p $(HOST_DIR)/usr/bin
        mv $(addprefix $(STAGING_DIR)/usr/bin/,$(QT_HOST_PROGRAMS)) $(HOST_DIR)/usr/bin
        ln -sf $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/usr/mkspecs
        $(QT_INSTALL_QT_CONF)
+       for i in moc uic rcc lupdate lrelease ; do \
+               $(SED) "s,^$${i}_location=.*,$${i}_location=$(HOST_DIR)/usr/bin/$${i}," \
+                       $(STAGING_DIR)/usr/lib/pkgconfig/Qt*.pc ; \
+       done
+       $(SED) "s,$(STAGING_DIR)/,,g" $(STAGING_DIR)/usr/lib/pkgconfig/Qt*.pc
 endef
 
 # Library installation