Browse Source

Improved libbost detection

adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
6148e6b192
  1. 64
      configure
  2. 64
      qcm/libboost.qcm

64
configure vendored

@ -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;
} }
}; };

64
qcm/libboost.qcm

@ -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;
} }
}; };

Loading…
Cancel
Save