summaryrefslogtreecommitdiffstats
path: root/openssl.qcm
diff options
context:
space:
mode:
Diffstat (limited to 'openssl.qcm')
-rw-r--r--openssl.qcm80
1 files changed, 80 insertions, 0 deletions
diff --git a/openssl.qcm b/openssl.qcm
new file mode 100644
index 0000000..242ad20
--- /dev/null
+++ b/openssl.qcm
@@ -0,0 +1,80 @@
+/*
+-----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;
+ }
+};