Improved libboost detection by configure file

This commit is contained in:
Christophe Dumez
2010-04-07 09:36:44 +00:00
parent db43606620
commit dcfed67173
3 changed files with 85 additions and 44 deletions

View File

@@ -7,6 +7,7 @@
- BUGFIX: Fix "Download from URL" title size in Web UI - BUGFIX: Fix "Download from URL" title size in Web UI
- BUGFIX: Fix transparency of speed limits icons - BUGFIX: Fix transparency of speed limits icons
- BUGFIX: Dropped dependency on Qt gif library - BUGFIX: Dropped dependency on Qt gif library
- BUGFIX: Improved libboost detection by configure file
- COSMETIC: Added icons to menu actions in Web UI - COSMETIC: Added icons to menu actions in Web UI
* Tue Apr 06 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.2.4 * Tue Apr 06 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.2.4

64
configure vendored
View File

@@ -394,6 +394,19 @@ public:
qc_libboost(Conf *c) : ConfObj(c) {} qc_libboost(Conf *c) : ConfObj(c) {}
QString name() const { return "libboost"; } QString name() const { return "libboost"; }
QString shortname() const { return "libboost"; } QString shortname() const { return "libboost"; }
QString findBoostLib(QString path, QString lib) const {
QString name;
QDir libDir(path);
QStringList filters;
filters << "libboost_"+lib+"*-mt.so";
QStringList result = libDir.entryList(filters, QDir::Files);
if(!result.empty()) {
name = result.first().mid(3);
// Remove .so
name.chop(3);
}
return name;
}
bool exec(){ bool exec(){
QString s; QString s;
s = conf->getenv("QC_WITH_LIBBOOST_INC"); s = conf->getenv("QC_WITH_LIBBOOST_INC");
@@ -437,28 +450,35 @@ public:
conf->addIncludePath(s); conf->addIncludePath(s);
// Find library // Find library
s = conf->getenv("QC_WITH_LIBBOOST_LIB"); s = conf->getenv("QC_WITH_LIBBOOST_LIB");
if(!s.isEmpty()) { QStringList required_libs;
if(!conf->checkLibrary(s, "boost_system-mt")) { required_libs << "system" << "filesystem" << "thread";
return false; QStringList libDirs;
} libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/";
}else{ foreach(const QString& lib, required_libs) {
QStringList sl; if(!s.isEmpty()) {
sl << "/usr/lib/"; QString detected_name = findBoostLib(s, lib);
sl << "/usr/lib64/"; if(detected_name.isEmpty()) {
sl << "/usr/local/lib/"; printf("Could not find boost %s library!\n", qPrintable(lib));
sl << "/usr/local/lib64/"; return false;
bool found = false; } else {
foreach(s, sl){ conf->addLib("-l"+detected_name);
if(conf->checkLibrary(s, "boost_system-mt")) { }
found = true; } else {
break; bool found = false;
} foreach(const QString& libDir, libDirs) {
} QString detected_name = findBoostLib(libDir, lib);
if(!found) if(!detected_name.isEmpty()) {
return false; conf->addLib("-l"+detected_name);
} found = true;
conf->addLib(QString("-L") + s); break;
conf->addLib("-lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt"); }
}
if(!found) {
printf("Could not find boost %s library!\n", qPrintable(lib));
return false;
}
}
}
return true; return true;
} }
}; };

View File

@@ -11,6 +11,19 @@ public:
qc_libboost(Conf *c) : ConfObj(c) {} qc_libboost(Conf *c) : ConfObj(c) {}
QString name() const { return "libboost"; } QString name() const { return "libboost"; }
QString shortname() const { return "libboost"; } QString shortname() const { return "libboost"; }
QString findBoostLib(QString path, QString lib) const {
QString name;
QDir libDir(path);
QStringList filters;
filters << "libboost_"+lib+"*-mt.so";
QStringList result = libDir.entryList(filters, QDir::Files);
if(!result.empty()) {
name = result.first().mid(3);
// Remove .so
name.chop(3);
}
return name;
}
bool exec(){ bool exec(){
QString s; QString s;
s = conf->getenv("QC_WITH_LIBBOOST_INC"); s = conf->getenv("QC_WITH_LIBBOOST_INC");
@@ -54,28 +67,35 @@ public:
conf->addIncludePath(s); conf->addIncludePath(s);
// Find library // Find library
s = conf->getenv("QC_WITH_LIBBOOST_LIB"); s = conf->getenv("QC_WITH_LIBBOOST_LIB");
if(!s.isEmpty()) { QStringList required_libs;
if(!conf->checkLibrary(s, "boost_system-mt")) { required_libs << "system" << "filesystem" << "thread";
return false; QStringList libDirs;
} libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/";
}else{ foreach(const QString& lib, required_libs) {
QStringList sl; if(!s.isEmpty()) {
sl << "/usr/lib/"; QString detected_name = findBoostLib(s, lib);
sl << "/usr/lib64/"; if(detected_name.isEmpty()) {
sl << "/usr/local/lib/"; printf("Could not find boost %s library!\n", qPrintable(lib));
sl << "/usr/local/lib64/"; return false;
bool found = false; } else {
foreach(s, sl){ conf->addLib("-l"+detected_name);
if(conf->checkLibrary(s, "boost_system-mt")) { }
found = true; } else {
break; bool found = false;
} foreach(const QString& libDir, libDirs) {
} QString detected_name = findBoostLib(libDir, lib);
if(!found) if(!detected_name.isEmpty()) {
return false; conf->addLib("-l"+detected_name);
} found = true;
conf->addLib(QString("-L") + s); break;
conf->addLib("-lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt"); }
}
if(!found) {
printf("Could not find boost %s library!\n", qPrintable(lib));
return false;
}
}
}
return true; return true;
} }
}; };