From 0e844eff19f1174bd5a8f88e8873307ae25cb892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 6 Jun 2018 22:34:33 +0200 Subject: [PATCH] Fix framework include paths in .pc files The macOS framework build of Qt copies headers to each framework instead of a centralized include location. Update the .pc file generator to match this behavior. Add two include paths to the .pc files: -Ipath/to/lib/foo.framework/Headers This makes #include work. -Fpath/to/lib This makes #include work. Task-number: QTBUG-35256 Change-Id: I013ce161c904fe6b7bbb03e33c163d32fdda0647 Reviewed-by: Oswald Buddenhagen --- mkspecs/features/qt_module.prf | 9 +++++++-- qmake/generators/makefile.cpp | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index d4b660b77ae..24d9ce20961 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -271,8 +271,13 @@ load(qt_targets) QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] else: \ QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] - QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] - QMAKE_PKGCONFIG_CFLAGS = -D$$MODULE_DEFINE -I${includedir}/$$MODULE_INCNAME + lib_bundle { + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_LIBS/raw]/$${MODULE_INCNAME}.framework/Headers + QMAKE_PKGCONFIG_CFLAGS = -D$$MODULE_DEFINE + } else { + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] + QMAKE_PKGCONFIG_CFLAGS = -D$$MODULE_DEFINE -I${includedir}/$$MODULE_INCNAME + } QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$QT_MAJOR_VERSION ") QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$QT_MAJOR_VERSION) for(i, MODULE_DEPENDS): \ diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 78e6633c1c6..cdbd84b8cc1 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -3328,6 +3328,10 @@ MakefileGenerator::writePkgConfigFile() ; if (!project->values("QMAKE_DEFAULT_INCDIRS").contains(includeDir)) t << "-I${includedir}"; + if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle") + && libDir != QLatin1String("/Library/Frameworks")) { + t << " -F${libdir}"; + } t << endl; // requires