/*
-----BEGIN QCMOD-----
name: libupnp
arg: disable-upnp, disable UPnP support
arg: with-libupnp-inc=[path], Path to libupnp include files
arg: with-libupnp-lib=[path], Path to libupnp library files
-----END QCMOD-----
*/
class qc_libupnp : public ConfObj
{
public:
	qc_libupnp(Conf *c) : ConfObj(c) {}
	QString name() const { return "libupnp"; }
	QString shortname() const { return "libupnp"; }
	bool exec(){
          QString s;
					s = conf->getenv("QC_DISABLE_UPNP");
					if(!s.isEmpty()){
					  conf->addDefine("NO_UPNP");
						return false;
					}
					s = conf->getenv("QC_WITH_LIBUPNP_INC");
					if(!s.isEmpty()) {
						if(!conf->checkHeader(s, "upnp/upnp.h")) {
        			//qWarning("libupnp includes not found!");
							conf->addDefine("NO_UPNP");
							return false;
      			}
      			conf->addIncludePath(s);
					}else{
	          QStringList sl;
  	        sl += "/usr/include";
    	      sl += "/usr/local/include";
        	  if(!conf->findHeader("upnp/upnp.h", sl, &s)) {
          	  //qWarning("libupnp includes not found!");
							conf->addDefine("NO_UPNP");
            	return false;
          	}
	  				conf->addIncludePath(s);
					}

					s = conf->getenv("QC_WITH_LIBUPNP_LIB");
          if(!s.isEmpty()) {
            if(!conf->checkLibrary(s, "upnp")) {
              qWarning("libupnp library not found!");
              return false;
            }
            conf->addLib(QString("-L") + s);
          }else{
            if(!conf->findLibrary("upnp", &s)) {
              qWarning("libupnp library not found!");
              return false;
            }
            if (!s.isEmpty())
              conf->addLib(QString("-L") + s);
          }

          conf->addLib("-lupnp");

          return true;
	}
};