make QMakeMetaInfo a little less inefficient with libtool .la files
don't read the spec from scratch for every library just to get QMAKE_LFLAGS_RPATH. we can perfectly use our current project for that purpose. Change-Id: I4e408b3fd5de81652181df032aa53cd8f2f8f806 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
This commit is contained in:
parent
09df6bec73
commit
791cb02463
@ -815,7 +815,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
|
|||||||
*/
|
*/
|
||||||
QString lib_file = (*lit) + Option::dir_sep + lib;
|
QString lib_file = (*lit) + Option::dir_sep + lib;
|
||||||
if(QMakeMetaInfo::libExists(lib_file)) {
|
if(QMakeMetaInfo::libExists(lib_file)) {
|
||||||
QMakeMetaInfo libinfo;
|
QMakeMetaInfo libinfo(project);
|
||||||
if(libinfo.readLib(lib_file)) {
|
if(libinfo.readLib(lib_file)) {
|
||||||
if(!libinfo.isEmpty("QMAKE_PRL_TARGET")) {
|
if(!libinfo.isEmpty("QMAKE_PRL_TARGET")) {
|
||||||
library = (*lit) + Option::dir_sep + libinfo.first("QMAKE_PRL_TARGET");
|
library = (*lit) + Option::dir_sep + libinfo.first("QMAKE_PRL_TARGET");
|
||||||
|
@ -888,7 +888,7 @@ MakefileGenerator::processPrlFile(QString &file)
|
|||||||
if(!meta_file.isEmpty()) {
|
if(!meta_file.isEmpty()) {
|
||||||
QString f = fileFixify(real_meta_file, qmake_getpwd(), Option::output_dir);
|
QString f = fileFixify(real_meta_file, qmake_getpwd(), Option::output_dir);
|
||||||
if(QMakeMetaInfo::libExists(f)) {
|
if(QMakeMetaInfo::libExists(f)) {
|
||||||
QMakeMetaInfo libinfo;
|
QMakeMetaInfo libinfo(project);
|
||||||
debug_msg(1, "Processing PRL file: %s", real_meta_file.toLatin1().constData());
|
debug_msg(1, "Processing PRL file: %s", real_meta_file.toLatin1().constData());
|
||||||
if(!libinfo.readLib(f)) {
|
if(!libinfo.readLib(f)) {
|
||||||
fprintf(stderr, "Error processing meta file: %s\n", real_meta_file.toLatin1().constData());
|
fprintf(stderr, "Error processing meta file: %s\n", real_meta_file.toLatin1().constData());
|
||||||
|
@ -353,7 +353,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
|
|||||||
const QStringList &l = project->values("QMAKE_PRL_INTERNAL_FILES");
|
const QStringList &l = project->values("QMAKE_PRL_INTERNAL_FILES");
|
||||||
QStringList::ConstIterator it;
|
QStringList::ConstIterator it;
|
||||||
for(it = l.begin(); it != l.end(); ++it) {
|
for(it = l.begin(); it != l.end(); ++it) {
|
||||||
QMakeMetaInfo libinfo;
|
QMakeMetaInfo libinfo(project);
|
||||||
if(libinfo.readLib((*it)) && !libinfo.isEmpty("QMAKE_PRL_BUILD_DIR")) {
|
if(libinfo.readLib((*it)) && !libinfo.isEmpty("QMAKE_PRL_BUILD_DIR")) {
|
||||||
QString dir;
|
QString dir;
|
||||||
int slsh = (*it).lastIndexOf(Option::dir_sep);
|
int slsh = (*it).lastIndexOf(Option::dir_sep);
|
||||||
|
@ -64,7 +64,7 @@ Win32MakefileGenerator::findHighestVersion(const QString &d, const QString &stem
|
|||||||
if(!exists(bd))
|
if(!exists(bd))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
QMakeMetaInfo libinfo;
|
QMakeMetaInfo libinfo(project);
|
||||||
bool libInfoRead = libinfo.readLib(bd + Option::dir_sep + stem);
|
bool libInfoRead = libinfo.readLib(bd + Option::dir_sep + stem);
|
||||||
|
|
||||||
// If the library, for which we're trying to find the highest version
|
// If the library, for which we're trying to find the highest version
|
||||||
|
@ -48,7 +48,8 @@ QT_BEGIN_NAMESPACE
|
|||||||
|
|
||||||
QHash<QString, QHash<QString, QStringList> > QMakeMetaInfo::cache_vars;
|
QHash<QString, QHash<QString, QStringList> > QMakeMetaInfo::cache_vars;
|
||||||
|
|
||||||
QMakeMetaInfo::QMakeMetaInfo()
|
QMakeMetaInfo::QMakeMetaInfo(QMakeProject *_conf)
|
||||||
|
: conf(_conf)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -180,19 +181,12 @@ QMakeMetaInfo::readLibtoolFile(const QString &f)
|
|||||||
dep = dep.mid(1, dep.length() - 2);
|
dep = dep.mid(1, dep.length() - 2);
|
||||||
lst = dep.trimmed().split(" ");
|
lst = dep.trimmed().split(" ");
|
||||||
}
|
}
|
||||||
QMakeProject *conf = NULL;
|
|
||||||
for(QStringList::Iterator lit = lst.begin(); lit != lst.end(); ++lit) {
|
for(QStringList::Iterator lit = lst.begin(); lit != lst.end(); ++lit) {
|
||||||
if((*lit).startsWith("-R")) {
|
if((*lit).startsWith("-R")) {
|
||||||
if(!conf) {
|
|
||||||
conf = new QMakeProject;
|
|
||||||
conf->read(QMakeProject::ReadAll ^ QMakeProject::ReadProFile);
|
|
||||||
}
|
|
||||||
if(!conf->isEmpty("QMAKE_LFLAGS_RPATH"))
|
if(!conf->isEmpty("QMAKE_LFLAGS_RPATH"))
|
||||||
(*lit) = conf->first("QMAKE_LFLAGS_RPATH") + (*lit).mid(2);
|
(*lit) = conf->first("QMAKE_LFLAGS_RPATH") + (*lit).mid(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(conf)
|
|
||||||
delete conf;
|
|
||||||
vars["QMAKE_PRL_LIBS"] += lst;
|
vars["QMAKE_PRL_LIBS"] += lst;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,16 +48,19 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class QMakeProject;
|
||||||
|
|
||||||
class QMakeMetaInfo
|
class QMakeMetaInfo
|
||||||
{
|
{
|
||||||
bool readLibtoolFile(const QString &f);
|
bool readLibtoolFile(const QString &f);
|
||||||
bool readPkgCfgFile(const QString &f);
|
bool readPkgCfgFile(const QString &f);
|
||||||
|
QMakeProject *conf;
|
||||||
QHash<QString, QStringList> vars;
|
QHash<QString, QStringList> vars;
|
||||||
QString meta_type;
|
QString meta_type;
|
||||||
static QHash<QString, QHash<QString, QStringList> > cache_vars;
|
static QHash<QString, QHash<QString, QStringList> > cache_vars;
|
||||||
void clear();
|
void clear();
|
||||||
public:
|
public:
|
||||||
QMakeMetaInfo();
|
QMakeMetaInfo(QMakeProject *_conf);
|
||||||
|
|
||||||
bool readLib(QString lib);
|
bool readLib(QString lib);
|
||||||
static QString findLib(QString lib);
|
static QString findLib(QString lib);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user