This repository has been archived on 2025-12-24. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
yachat/iris/qcm/qca.qcm

127 lines
2.9 KiB
Text
Raw Normal View History

2025-12-25 01:37:49 +05:00
/*
-----BEGIN QCMOD-----
name: QCA >= 2.0
arg: with-qca=[path],Specify path to QCA tree, mainly for building against an uninstalled QCA.
-----END QCMOD-----
*/
// based on crypto.prf. any changes made to that file need to be tracked here.
static QString internal_crypto_prf(const QString &incdir, const QString &libdir)
{
QString out = QString(
"QCA_INCDIR = %1\n"
"QCA_LIBDIR = %2\n"
"\n"
"CONFIG *= qt\n"
"\n"
"LINKAGE =\n"
"\n"
"# on mac, if qca was built as a framework, link against it\n"
"mac: {\n"
" framework_dir = $$QCA_LIBDIR\n"
" exists($$framework_dir/qca.framework) {\n"
" #QMAKE_FRAMEWORKPATH *= $$framework_dir\n"
" LIBS += -F$$framework_dir\n"
" INCLUDEPATH += $$framework_dir/qca.framework/Headers\n"
" LINKAGE = -framework qca\n"
" }\n"
"}\n"
"\n"
"# else, link normally\n"
"isEmpty(LINKAGE) {\n"
" INCLUDEPATH += $$QCA_INCDIR/QtCrypto\n"
" LIBS += -L$$QCA_LIBDIR\n"
" LINKAGE = -lqca\n"
" CONFIG(debug, debug|release) {\n"
" windows:LINKAGE = -lqcad\n"
" mac:LINKAGE = -lqca_debug\n"
" }\n"
"}\n"
"\n"
"LIBS += $$LINKAGE\n"
).arg(incdir, libdir);
return out;
}
#define QC_QCA
QString qc_qca_procode;
//----------------------------------------------------------------------------
// qc_qca
//----------------------------------------------------------------------------
class qc_qca : public ConfObj
{
public:
qc_qca(Conf *c) : ConfObj(c) {}
QString name() const { return "QCA >= 2.0"; }
QString shortname() const { return "qca"; }
bool exec()
{
// get the build mode
#ifdef QC_BUILDMODE
bool release = qc_buildmode_release;
bool debug = qc_buildmode_debug;
#else
// else, default to just release mode
bool release = true;
bool debug = false;
#endif
// test for "crypto" feature and check qca version number
QString qca_prefix, qca_incdir, qca_libdir, qca_crypto_prf;
qca_prefix = conf->getenv("QC_WITH_QCA");
QString proextra;
if(!qca_prefix.isEmpty()) {
qca_incdir = qca_prefix + "/include";
qca_libdir = qca_prefix + "/lib";
qca_crypto_prf = internal_crypto_prf(qca_incdir, qca_libdir);
proextra =
"CONFIG += qt\n"
"QT -= gui\n";
proextra += qca_crypto_prf;
} else {
proextra =
"CONFIG += qt crypto\n"
"QT -= gui\n";
}
QString str =
"#include <QtCrypto>\n"
"\n"
"int main()\n"
"{\n"
" unsigned long x = QCA_VERSION;\n"
" if(x >= 0x020000 && x < 0x030000) return 0; else return 1;\n"
"}\n";
if(release)
{
int ret;
if(!conf->doCompileAndLink(str, QStringList(), QString(), proextra + "CONFIG += release\n", &ret))
return false;
if(ret != 0)
return false;
}
if(debug)
{
int ret;
if(!conf->doCompileAndLink(str, QStringList(), QString(), proextra + "CONFIG += debug\n", &ret))
return false;
if(ret != 0)
return false;
}
if(!qca_prefix.isEmpty())
str = qca_crypto_prf;
else
str = "CONFIG += crypto\n";
qc_qca_procode = str;
conf->addExtra(str);
return true;
}
};