From 4da47d0fba04e5d50bf6b63e73bc0de986560f42 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 3 Jun 2019 14:59:16 +0200 Subject: Make sure .pc, .prl and .la files are created for header_only modules Those modules are TEMPLATE=aux, so they weren't triggering the file creation here. To make this work properly we have to: - check for TEMPLATE aux in the right places - add a dummy target to INSTALLS to actually trigger the creation - initialize PRL_TARGET for aux templates Fixes: QTBUG-75901 Started-by: Thiago Macieira Change-Id: Idce141629dd34287808bfffd159f92ac28c6c8b1 Reviewed-by: Thiago Macieira --- mkspecs/features/qt_module.prf | 5 +++++ qmake/generators/makefile.cpp | 3 ++- qmake/generators/unix/unixmake.cpp | 2 +- qmake/generators/unix/unixmake2.cpp | 10 +++++++--- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 51b5bde67a..18060cd490 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -82,6 +82,11 @@ header_module { CONFIG += force_qt # Needed for the headers_clean tests. !lib_bundle: \ CONFIG += qt_no_install_library + + # Allow creation of .prl, .la and .pc files. + target.path = $$[QT_INSTALL_LIBS] + target.CONFIG += dummy_install + INSTALLS += target } else { TEMPLATE = lib } diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 4a99a60892..caaf6e71b6 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -1120,7 +1120,8 @@ MakefileGenerator::writePrlFile() && project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty() && project->isActiveConfig("create_prl") && (project->first("TEMPLATE") == "lib" - || project->first("TEMPLATE") == "vclib") + || project->first("TEMPLATE") == "vclib" + || project->first("TEMPLATE") == "aux") && (!project->isActiveConfig("plugin") || project->isActiveConfig("static"))) { //write prl file QString local_prl = prlFileName(); QString prl = fileFixify(local_prl); diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp index 7f42fbe09e..b809bb6c19 100644 --- a/qmake/generators/unix/unixmake.cpp +++ b/qmake/generators/unix/unixmake.cpp @@ -726,7 +726,7 @@ UnixMakefileGenerator::defaultInstall(const QString &t) } } } - if(project->first("TEMPLATE") == "lib") { + if (isAux || project->first("TEMPLATE") == "lib") { QStringList types; types << "prl" << "libtool" << "pkgconfig"; for(int i = 0; i < types.size(); ++i) { diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index 24215ae7b0..d9bcccf2e2 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -48,12 +48,15 @@ void UnixMakefileGenerator::writePrlFile(QTextStream &t) { MakefileGenerator::writePrlFile(t); + const ProString tmplt = project->first("TEMPLATE"); + if (tmplt != "lib" && tmplt != "aux") + return; // libtool support - if(project->isActiveConfig("create_libtool") && project->first("TEMPLATE") == "lib") { //write .la + if (project->isActiveConfig("create_libtool")) { writeLibtoolFile(); } // pkg-config support - if(project->isActiveConfig("create_pc") && project->first("TEMPLATE") == "lib") + if (project->isActiveConfig("create_pc")) writePkgConfigFile(); } @@ -1199,7 +1202,8 @@ void UnixMakefileGenerator::init2() project->values("QMAKE_FRAMEWORK_VERSION").append(project->first("VER_MAJ")); if (project->first("TEMPLATE") == "aux") { - // nothing + project->values("PRL_TARGET") = + project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB")); } else if (!project->values("QMAKE_APP_FLAG").isEmpty()) { if(!project->isEmpty("QMAKE_BUNDLE")) { ProString bundle_loc = project->first("QMAKE_BUNDLE_LOCATION"); -- cgit v1.2.3