/*
-----BEGIN QCMOD-----
name: jdns
arg: with-qjdns-inc=[path],Path to QJDns include files
arg: with-qjdns-lib=[path],Path to QJDns library files
-----END QCMOD-----
*/

//----------------------------------------------------------------------------
// qc_qjdns
//----------------------------------------------------------------------------
class qc_qjdns : public ConfObj
{
public:
	qc_qjdns(Conf *c) : ConfObj(c) {}
	QString name() const { return "QJDns"; }
	QString shortname() const { return "qjdns"; }
	QString resultString() const
	{
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
		return "Disabled for Qt5 and above";
#else
		return ConfObj::resultString();
#endif
	}
	bool exec()
	{
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
		return true; // hack. TODO: figure out how to force jdns
#endif
		conf->addExtra("CONFIG += need_jdns");
#if defined Q_OS_WIN || defined Q_OS_MAC
		// HACK: on Windows and Mac OS X, always use psi's bundled qjdns
		conf->addExtra("CONFIG += iris-qjdns");
		return true;
#else
		QStringList incs;
		QString version, libs, other;
		QString s;

#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
		bool found = conf->findPkgConfig("qjdns-qt5", VersionMin, "2.0.3", &version, &incs, &libs, &other);
#else
		bool found = conf->findPkgConfig("qjdns-qt4", VersionMin, "2.0.3", &version, &incs, &libs, &other);
#endif
		if(!found && !conf->findPkgConfig("qjdns", VersionMin, "2.0.0", &version, &incs, &libs, &other)) {
			s = conf->getenv("QC_WITH_QJDNS_INC");
			if ((!s.isEmpty() && conf->checkHeader(s, "qjdns.h")) ||
				(s.isEmpty() && conf->findHeader("qjdns.h", QStringList(), &s))) {
				incs.append(s);
			}

			s = conf->getenv("QC_WITH_QJDNS_LIB");
			if((!s.isEmpty() && conf->checkLibrary(s, "qjdns")) ||
			   (s.isEmpty() && conf->findLibrary("qjdns", &s))) {
				libs = s.isEmpty()? "-lqjdns -ljdns" : QString("-L%1 -lqjdns -ljdns").arg(s);
			}
		}

		if (!incs.isEmpty() && !libs.isEmpty()) {
			foreach(const QString &inc, incs) {
				conf->addIncludePath(inc);
			}
			conf->addLib(libs);
			conf->addExtra("CONFIG += ext-qjdns");
		}

		return true;
#endif
	}
};
