377 lines
8.7 KiB
Text
377 lines
8.7 KiB
Text
|
|
/*
|
||
|
|
-----BEGIN QCMOD-----
|
||
|
|
name: Jingle
|
||
|
|
arg: enable-jingle,Enable Jingle support
|
||
|
|
arg: with-expat-inc=[path],Path to Expat include files (for Jingle)
|
||
|
|
arg: with-expat-lib=[path],Path to Expat library files (for Jingle)
|
||
|
|
arg: with-speex-inc=[path],Path to Speex include files (for Jingle)
|
||
|
|
arg: with-speex-lib=[path],Path to Speex library files (for Jingle)
|
||
|
|
arg: with-ilbc-inc=[path],Path to iLBC include files (for Jingle)
|
||
|
|
arg: with-ilbc-lib=[path],Path to iLBC library files (for Jingle)
|
||
|
|
arg: with-ortp-inc=[path],Path to ORTP include files (for Jingle)
|
||
|
|
arg: with-ortp-lib=[path],Path to ORTP library files (for Jingle)
|
||
|
|
arg: with-alsa-inc=[path],Path to Alsa include files (for Jingle)
|
||
|
|
arg: with-alsa-lib=[path],Path to Alsa library files (for Jingle)
|
||
|
|
arg: with-portaudio-inc=[path],Path to PortAudio include files (for Jingle)
|
||
|
|
arg: with-portaudio-lib=[path],Path to PortAudio library files (for Jingle)
|
||
|
|
arg: with-glib-inc=[path],Path to GLib include files (for Jingle)
|
||
|
|
arg: with-glib-lib=[path],Path to GLib library files (for Jingle)
|
||
|
|
arg: with-glibconfig-inc=[path],Path to glibconfig include file (for Jingle)
|
||
|
|
-----END QCMOD-----
|
||
|
|
*/
|
||
|
|
|
||
|
|
//----------------------------------------------------------------------------
|
||
|
|
// qc_jingle
|
||
|
|
//----------------------------------------------------------------------------
|
||
|
|
class qc_jingle : public ConfObj
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
qc_jingle(Conf *c) : ConfObj(c) {}
|
||
|
|
QString name() const { return "Jingle"; }
|
||
|
|
QString shortname() const { return "Jingle"; }
|
||
|
|
bool exec()
|
||
|
|
{
|
||
|
|
QString s;
|
||
|
|
|
||
|
|
// Check if Jingle was enabled explicitly
|
||
|
|
s = conf->getenv("QC_ENABLE_JINGLE");
|
||
|
|
if(s.isEmpty())
|
||
|
|
return false;
|
||
|
|
|
||
|
|
// Expat
|
||
|
|
s = conf->getenv("QC_WITH_EXPAT_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(!conf->checkHeader(s, "expat.h")) {
|
||
|
|
qWarning("Expat includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(!conf->findHeader("expat.h", QStringList(), &s)) {
|
||
|
|
qWarning("Expat includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_EXPAT_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(!conf->checkLibrary(s, "expat")) {
|
||
|
|
qWarning("Expat library not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(!conf->findLibrary("expat", &s)) {
|
||
|
|
qWarning("Expat library not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!s.isEmpty())
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
|
||
|
|
conf->addLib("-lexpat");
|
||
|
|
|
||
|
|
|
||
|
|
// Speex
|
||
|
|
s = conf->getenv("QC_WITH_SPEEX_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(!conf->checkHeader(s, "speex.h")) {
|
||
|
|
qWarning("Speex includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
QStringList sl;
|
||
|
|
sl += "/usr/include/speex";
|
||
|
|
sl += "/usr/local/include/speex";
|
||
|
|
if(!conf->findHeader("speex.h", sl, &s)) {
|
||
|
|
qWarning("Speex includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_SPEEX_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(!conf->checkLibrary(s, "speex")) {
|
||
|
|
qWarning("Speex libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(!conf->findLibrary("speex", &s)) {
|
||
|
|
qWarning("Speex libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!s.isEmpty())
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
|
||
|
|
conf->addDefine("HAVE_SPEEX");
|
||
|
|
conf->addLib("-lspeex");
|
||
|
|
|
||
|
|
|
||
|
|
// ILBC (optional)
|
||
|
|
QString ilbc_include, ilbc_lib;
|
||
|
|
s = conf->getenv("QC_WITH_ILBC_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkHeader(s, "iLBC_encode.h")) {
|
||
|
|
ilbc_include = s;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
QStringList sl;
|
||
|
|
sl += "/usr/include/ilbc";
|
||
|
|
sl += "/usr/local/include/ilbc";
|
||
|
|
if(conf->findHeader("iLBC_encode.h", sl, &s)) {
|
||
|
|
ilbc_include = s;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_ILBC_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkLibrary(s, "ilbc")) {
|
||
|
|
ilbc_lib = s;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(conf->findLibrary("ilbc", &s)) {
|
||
|
|
ilbc_lib = s;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!ilbc_include.isEmpty() && !ilbc_lib.isEmpty()) {
|
||
|
|
conf->addIncludePath(ilbc_include);
|
||
|
|
conf->addLib(QString("-L") + ilbc_lib);
|
||
|
|
conf->addLib("-lilbc");
|
||
|
|
conf->addDefine("HAVE_ILBC");
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// ORTP
|
||
|
|
s = conf->getenv("QC_WITH_ORTP_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkHeader(s, "ortp/ortp.h")) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("ORTP includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
QStringList sl;
|
||
|
|
sl += "/usr/include";
|
||
|
|
sl += "/usr/local/include";
|
||
|
|
if(conf->findHeader("ortp/ortp.h", sl, &s)) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("ORTP includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_ORTP_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkLibrary(s, "ortp")) {
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("ORTP libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(conf->findLibrary("ortp", &s)) {
|
||
|
|
if (!s.isEmpty())
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("ORTP libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
conf->addLib("-lortp");
|
||
|
|
conf->addDefine("HAVE_ORTP");
|
||
|
|
|
||
|
|
|
||
|
|
#if defined(Q_WS_X11)
|
||
|
|
s = conf->getenv("QC_WITH_ALSA_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkHeader(s, "alsa/asoundlib.h")) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("Alsa includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
QStringList sl;
|
||
|
|
sl += "/usr/include";
|
||
|
|
sl += "/usr/local/include";
|
||
|
|
if(conf->findHeader("alsa/asoundlib.h", sl, &s)) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("Alsa includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_ALSA_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkLibrary(s, "asound")) {
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("Alsa libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(conf->findLibrary("asound", &s)) {
|
||
|
|
if (!s.isEmpty())
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("Alsa libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
conf->addLib("-lasound");
|
||
|
|
conf->addDefine("HAVE_ALSA_ASOUNDLIB_H");
|
||
|
|
conf->addDefine("__ALSA_ENABLED__");
|
||
|
|
#elif defined(Q_WS_MAC)
|
||
|
|
// Check for PortAudio
|
||
|
|
s = conf->getenv("QC_WITH_PORTAUDIO_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(!conf->checkHeader(s, "portaudio.h")) {
|
||
|
|
qWarning("Portaudio includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(!conf->findHeader("portaudio.h", QStringList(), &s)) {
|
||
|
|
qWarning("Portaudio includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_PORTAUDIO_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(!conf->checkLibrary(s, "portaudio")) {
|
||
|
|
qWarning("PortAudio library not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(!conf->findLibrary("portaudio", &s)) {
|
||
|
|
qWarning("PortAudio library not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!s.isEmpty())
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
|
||
|
|
conf->addLib("-lportaudio");
|
||
|
|
conf->addDefine("HAVE_PORTAUDIO");
|
||
|
|
#endif
|
||
|
|
QFile file("third-party/libjingle/config.h");
|
||
|
|
if (file.open(QIODevice::WriteOnly))
|
||
|
|
file.close();
|
||
|
|
|
||
|
|
// GLib
|
||
|
|
s = conf->getenv("QC_WITH_GLIB_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkHeader(s, "glib.h")) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("GLib includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
QStringList sl;
|
||
|
|
sl += "/usr/include/glib";
|
||
|
|
sl += "/usr/local/include/glib";
|
||
|
|
sl += "/usr/include/glib-2.0";
|
||
|
|
if(conf->findHeader("glib.h", sl, &s)) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("GLib includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
s = conf->getenv("QC_WITH_GLIB_LIB");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkLibrary(s, "glib-2.0")) {
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("GLib 2.0 libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(conf->findLibrary("glib-2.0", &s)) {
|
||
|
|
if (!s.isEmpty())
|
||
|
|
conf->addLib(QString("-L") + s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("GLib 2.0 libraries not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
conf->addLib("-lglib-2.0 -lgmodule-2.0 -lgthread-2.0");
|
||
|
|
conf->addDefine("HAVE_GLIB");
|
||
|
|
|
||
|
|
// Glibconfig
|
||
|
|
s = conf->getenv("QC_WITH_GLIBCONFIG_INC");
|
||
|
|
if(!s.isEmpty()) {
|
||
|
|
if(conf->checkHeader(s, "glibconfig.h")) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("glibconfig.h includes not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(conf->findHeader("glibconfig.h", QStringList("/usr/lib/glib-2.0/include"), &s)) {
|
||
|
|
conf->addIncludePath(s);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qWarning("glibconfig.h not found!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Finish
|
||
|
|
conf->addExtra("CONFIG += jingle");
|
||
|
|
|
||
|
|
qWarning("");
|
||
|
|
qWarning("");
|
||
|
|
qWarning(" !!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!");
|
||
|
|
qWarning(" LIBJINGLE SUPPORT IS STILL EXPERIMENTAL !!!");
|
||
|
|
qWarning(" USE AT YOUR OWN RISK !!!");
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
};
|