You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.7 KiB
81 lines
1.7 KiB
/*
|
|
-----BEGIN QCMOD-----
|
|
name: OpenSSL
|
|
arg: with-openssl-inc=[path],Path to OpenSSL include files
|
|
arg: with-openssl-lib=[path],Path to OpenSSL library files
|
|
-----END QCMOD-----
|
|
*/
|
|
class qc_openssl : public ConfObj
|
|
{
|
|
public:
|
|
qc_openssl(Conf *c) : ConfObj(c) {}
|
|
QString name() const { return "OpenSSL"; }
|
|
QString shortname() const { return "openssl"; }
|
|
bool exec()
|
|
{
|
|
QString inc, lib;
|
|
QString s;
|
|
bool kb = false;
|
|
QString kbdir = "/usr/kerberos/include";
|
|
|
|
// Redhat 9?
|
|
if(QFileInfo(kbdir).exists())
|
|
kb = true;
|
|
|
|
s = conf->getenv("QC_WITH_OPENSSL_INC");
|
|
if(!s.isEmpty()) {
|
|
if(!conf->checkHeader(s, "openssl/ssl.h"))
|
|
return false;
|
|
inc = s;
|
|
}
|
|
else {
|
|
if(!conf->findHeader("openssl/ssl.h", QStringList(), &s))
|
|
return false;
|
|
inc = s;
|
|
}
|
|
|
|
s = conf->getenv("QC_WITH_OPENSSL_LIB");
|
|
if(!s.isEmpty()) {
|
|
if(!conf->checkLibrary(s, "ssl"))
|
|
return false;
|
|
lib = s;
|
|
}
|
|
else {
|
|
if(!conf->findLibrary("ssl", &s))
|
|
return false;
|
|
lib = s;
|
|
}
|
|
|
|
// is it at least openssl 0.9.7?
|
|
QString str =
|
|
"#include<openssl/opensslv.h>\n"
|
|
"int main()\n"
|
|
"{\n"
|
|
" unsigned long x = OPENSSL_VERSION_NUMBER;\n"
|
|
" if(x >= 0x00907000) return 0; else return 1;\n"
|
|
"}\n";
|
|
QString ext;
|
|
if(!inc.isEmpty())
|
|
ext += QString("-I") + inc + ' ';
|
|
if(kb)
|
|
ext += QString("-I") + kbdir + ' ';
|
|
if(!lib.isEmpty())
|
|
ext += QString("-L") + lib + " -lssl -lcrypto ";
|
|
int ret;
|
|
if(!conf->doCompileAndLink(str, ext, &ret))
|
|
return false;
|
|
if(ret == 0)
|
|
conf->addDefine("OSSL_097");
|
|
|
|
if(!inc.isEmpty())
|
|
conf->addIncludePath(inc);
|
|
if(kb)
|
|
conf->addIncludePath(kbdir);
|
|
if(!lib.isEmpty())
|
|
conf->addLib(QString("-L") + s);
|
|
conf->addLib("-lssl -lcrypto");
|
|
|
|
return true;
|
|
}
|
|
};
|