- Improved ImageMagick detection and it should be able to build without it too now

This commit is contained in:
Christophe Dumez 2007-08-29 10:20:39 +00:00
parent 99268bfc06
commit 2ddcaf008b
5 changed files with 150 additions and 80 deletions

142
configure vendored
View file

@ -1,6 +1,6 @@
#!/bin/sh
#
# Generated by qconf 1.3 ( http://delta.affinix.com/qconf/ )
# Generated by qconf 1.4 ( http://delta.affinix.com/qconf/ )
#
show_usage() {
@ -189,7 +189,7 @@ while [ $# -gt 0 ]; do
;;
--verbose)
QC_DEBUG="Y"
QC_VERBOSE="Y"
shift
;;
--help) show_usage; exit ;;
@ -203,7 +203,7 @@ DATADIR=${DATADIR:-$PREFIX/share}
echo "Configuring qbittorrent ..."
if [ "$QC_DEBUG" = "Y" ]; then
if [ "$QC_VERBOSE" = "Y" ]; then
echo
echo PREFIX=$PREFIX
echo BINDIR=$BINDIR
@ -223,31 +223,50 @@ fi
printf "Verifying Qt 4 build environment ... "
if [ "$QC_DEBUG" = "Y" ]; then
# run qmake -v and check version
qmake_check_v4() {
if [ -x "$1" ]; then
if echo `$1 -v 2>&1` | grep "Qt version 4\." >/dev/null 2>&1; then
return 0
elif [ "$QC_VERBOSE" = "Y" ]; then
echo "Warning: $1 not for Qt 4"
fi
fi
return 1
}
if [ "$QC_VERBOSE" = "Y" ]; then
echo
fi
qm=""
names="qmake-qt4 qmake4 qmake"
# qt4 check: --qtdir
if [ -z "$qm" ]; then
qstr=$EX_QTDIR/bin/qmake
if [ -x "$qstr" ]; then
qm=$qstr
fi
if [ -z "$qm" ] && [ ! -z "$EX_QTDIR" ]; then
for n in $names; do
qstr=$EX_QTDIR/bin/$n
if qmake_check_v4 "$qstr"; then
qm=$qstr
break;
fi
done
fi
if [ -z "$qm" ] && [ "$QC_DEBUG" = "Y" ]; then
if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then
echo "Warning: qmake not found via --qtdir"
fi
# qt4 check: QTDIR
if [ -z "$qm" ]; then
qstr=$QTDIR/bin/qmake
if [ -x "$qstr" ]; then
qm=$qstr
fi
if [ -z "$qm" ] && [ ! -z "$QTDIR" ]; then
for n in $names; do
qstr=$QTDIR/bin/$n
if qmake_check_v4 "$qstr"; then
qm=$qstr
break;
fi
done
fi
if [ -z "$qm" ] && [ "$QC_DEBUG" = "Y" ]; then
if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then
echo "Warning: qmake not found via \$QTDIR"
fi
@ -255,40 +274,46 @@ fi
if [ -z "$qm" ]; then
str=`pkg-config QtCore --variable=exec_prefix 2>/dev/null`
if [ ! -z "$str" ]; then
qstr=$str/bin/qmake
if [ -x "$qstr" ]; then
qm=$qstr
fi
for n in $names; do
qstr=$str/bin/$n
if qmake_check_v4 "$qstr"; then
qm=$qstr
break;
fi
done
fi
fi
if [ -z "$qm" ] && [ "$QC_DEBUG" = "Y" ]; then
if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then
echo "Warning: qmake not found via pkg-config"
fi
# qt4 check: PATH
if [ -z "$qm" ]; then
qstr=`$WHICH qmake 2>/dev/null`
if [ -x "$qstr" ]; then
qm=$qstr
fi
for n in $names; do
qstr=`$WHICH $n 2>/dev/null`
if qmake_check_v4 "$qstr"; then
qm=$qstr
break;
fi
done
fi
if [ -z "$qm" ] && [ "$QC_DEBUG" = "Y" ]; then
if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then
echo "Warning: qmake not found via \$PATH"
fi
if [ -z "$qm" ]; then
if [ "$QC_DEBUG" = "Y" ]; then
if [ "$QC_VERBOSE" = "Y" ]; then
echo " -> fail"
else
echo "fail"
fi
printf "\n"
printf "Reason: Unable to find the 'qmake' tool.\n"
printf "Reason: Unable to find the 'qmake' tool for Qt 4.\n"
printf "\n"
show_qt_info
exit 1;
fi
if [ "$QC_DEBUG" = "Y" ]; then
if [ "$QC_VERBOSE" = "Y" ]; then
echo qmake found in $qm
fi
@ -535,13 +560,20 @@ public:
qc_libmagick(Conf *c) : ConfObj(c) {}
QString name() const { return "ImageMagick library (libmagick++)"; }
QString shortname() const { return "libmagick++"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
QString s;
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBMAGICK_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "Magick++.h")) {
return false;
}
}
}else{
QStringList sl;
sl << "/usr/include";
@ -553,17 +585,17 @@ public:
break;
}
}
if(!found) {
if(!found)
return false;
}
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBMAGICK_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("libMagick++.so")))
return false;
conf->addLib(QString("-L") + s);
if(!QFile::exists(s+QString("libMagick++.so"))){
return false;
}
conf->addLib(QString("-L") + s);
}else{
QStringList sl;
sl << "/usr/lib/";
@ -572,11 +604,14 @@ public:
foreach(s, sl){
if(QFile::exists(s+QString("libMagick++.so"))){
found = true;
break;
}
}
if(!found) return false;
if(!found)
return false;
conf->addLib(QString("-L") + s);
}
conf->addDefine("HAVE_MAGICK");
return true;
}
};
@ -624,6 +659,8 @@ cat >$1/modules_new.cpp <<EOT
EOT
cat >$1/conf4.h <<EOT
// For license information, see the COPYING file in the qconf base directory.
#ifndef QC_CONF4_H
#define QC_CONF4_H
@ -728,6 +765,8 @@ private:
EOT
cat >$1/conf4.cpp <<EOT
// For license information, see the COPYING file in the qconf base directory.
#include "conf4.h"
#include <stdio.h>
@ -878,6 +917,18 @@ void qc_splitcflags(const QString &cflags, QStringList *incs, QStringList *other
}
}
QString qc_escapeArg(const QString &str)
{
QString out;
for(int n = 0; n < (int)str.length(); ++n) {
if(str[n] == '-')
out += '_';
else
out += str[n];
}
return out;
}
//----------------------------------------------------------------------------
// ConfObj
//----------------------------------------------------------------------------
@ -994,14 +1045,14 @@ bool Conf::exec()
// if this was a disabled-by-default option, check if it was enabled
if(o->disabled)
{
QString v = QString("QC_ENABLE_") + o->shortname();
QString v = QString("QC_ENABLE_") + qc_escapeArg(o->shortname());
if(getenv(v) != "Y")
continue;
}
// and the opposite?
else
{
QString v = QString("QC_DISABLE_") + o->shortname();
QString v = QString("QC_DISABLE_") + qc_escapeArg(o->shortname());
if(getenv(v) == "Y")
continue;
}
@ -1428,7 +1479,7 @@ int main()
# include"modules_new.cpp"
#endif
conf->debug_enabled = (qc_getenv("QC_DEBUG") == "Y") ? true: false;
conf->debug_enabled = (qc_getenv("QC_VERBOSE") == "Y") ? true: false;
if(conf->debug_enabled)
printf(" -> ok\n");
else
@ -1484,6 +1535,9 @@ int main()
var = qc_getenv("BINDIR");
if(!var.isEmpty())
str += QString("BINDIR = %1\n").arg(var);
var = qc_getenv("INCDIR");
if(!var.isEmpty())
str += QString("INCDIR = %1\n").arg(var);
var = qc_getenv("LIBDIR");
if(!var.isEmpty())
str += QString("LIBDIR = %1\n").arg(var);
@ -1556,7 +1610,7 @@ export QC_WITH_LIBCOMMONCPP2_LIB
export QC_DISABLE_libmagick
export QC_WITH_LIBMAGICK_INC
export QC_WITH_LIBMAGICK_LIB
export QC_DEBUG
export QC_VERBOSE
rm -rf .qconftemp
(
mkdir .qconftemp
@ -1569,7 +1623,7 @@ rm -rf .qconftemp
if [ "$?" != "0" ]; then
rm -rf .qconftemp
if [ "$QC_DEBUG" = "Y" ]; then
if [ "$QC_VERBOSE" = "Y" ]; then
echo " -> fail"
else
echo "fail"
@ -1578,7 +1632,7 @@ if [ "$?" != "0" ]; then
printf "Reason: There was an error compiling 'conf'. See conf.log for details.\n"
printf "\n"
show_qt_info
if [ "$QC_DEBUG" = "Y" ]; then
if [ "$QC_VERBOSE" = "Y" ]; then
echo "conf.log:"
cat conf.log
fi
@ -1602,7 +1656,7 @@ if [ "$ret" = "1" ]; then
else
if [ "$ret" != "0" ]; then
rm -rf .qconftemp
if [ "$QC_DEBUG" = "Y" ]; then
if [ "$QC_VERBOSE" = "Y" ]; then
echo " -> fail"
else
echo "fail"

View file

@ -2,6 +2,7 @@
<name>qbittorrent</name>
<profile>qbittorrent.pro</profile>
<moddir>qcm</moddir>
<datadir/>
<dep type='qt42'>
<required/>
</dep>
@ -14,9 +15,7 @@
<dep type='libcommoncpp2'>
<required/>
</dep>
<dep type='libmagick'>
<optional/>
</dep>
<dep type='libmagick'/>
<dep type='python'>
<required/>
</dep>

View file

@ -11,13 +11,20 @@ public:
qc_libmagick(Conf *c) : ConfObj(c) {}
QString name() const { return "ImageMagick library (libmagick++)"; }
QString shortname() const { return "libmagick++"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
QString s;
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBMAGICK_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "Magick++.h")) {
return false;
}
}
}else{
QStringList sl;
sl << "/usr/include";
@ -29,17 +36,17 @@ public:
break;
}
}
if(!found) {
if(!found)
return false;
}
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBMAGICK_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("libMagick++.so")))
return false;
conf->addLib(QString("-L") + s);
if(!QFile::exists(s+QString("libMagick++.so"))){
return false;
}
conf->addLib(QString("-L") + s);
}else{
QStringList sl;
sl << "/usr/lib/";
@ -48,11 +55,14 @@ public:
foreach(s, sl){
if(QFile::exists(s+QString("libMagick++.so"))){
found = true;
break;
}
}
if(!found) return false;
if(!found)
return false;
conf->addLib(QString("-L") + s);
}
conf->addDefine("HAVE_MAGICK");
return true;
}
};

View file

@ -41,7 +41,7 @@
#include "misc.h"
#include "downloadThread.h"
#ifndef NO_MAGICK
#ifdef HAVE_MAGICK
#include <Magick++.h>
using namespace Magick;
#endif
@ -389,7 +389,7 @@ class RssManager : public QObject{
if(url.endsWith("favicon.ico")){
// Icon downloaded
QImage fileIcon;
#ifndef NO_MAGICK
#ifdef HAVE_MAGICK
try{
QFile::copy(path, path+".ico");
Image image(QDir::cleanPath(path+".ico").toUtf8().data());

View file

@ -27,29 +27,6 @@ contains(DEBUG_MODE, 0){
message(Release build!)
}
QMAKE_CXXFLAGS_RELEASE += -fwrapv -O2
QMAKE_CXXFLAGS_DEBUG += -fwrapv -O1
CONFIG += link_pkgconfig
PKGCONFIG += libtorrent libccext2 libccgnu2 ImageMagick++
QT += network xml
DEFINES += QT_NO_CAST_TO_ASCII
#QT_NO_CAST_FROM_ASCII
contains(DEBUG_MODE, 0){
contains(QT_VERSION, 4.2.0) {
message(Qt 4.2.0 detected : enabling debug output because of a bug in this version of Qt)
}else{
contains(QT_VERSION, 4.2.1) {
message(Qt 4.2.1 detected : enabling debug output because of a bug in this version of Qt)
}else{
DEFINES += QT_NO_DEBUG_OUTPUT
}
}
CONFIG += release
}
# Install
!win32 {
@ -95,6 +72,36 @@ contains(DEBUG_MODE, 0){
INSTALLS += icon16 icon22 icon24 icon32 icon36 icon48 icon64 icon72 icon96 icon128 icon192
}
QMAKE_CXXFLAGS_RELEASE += -fwrapv -O2
QMAKE_CXXFLAGS_DEBUG += -fwrapv -O1
CONFIG += link_pkgconfig
PKGCONFIG += libtorrent libccext2 libccgnu2
contains(DEFINES, HAVE_MAGICK){
PKGCONFIG += ImageMagick++
}else{
message(ImageMagick disabled)
}
QT += network xml
DEFINES += QT_NO_CAST_TO_ASCII
#QT_NO_CAST_FROM_ASCII
contains(DEBUG_MODE, 0){
contains(QT_VERSION, 4.2.0) {
message(Qt 4.2.0 detected : enabling debug output because of a bug in this version of Qt)
}else{
contains(QT_VERSION, 4.2.1) {
message(Qt 4.2.1 detected : enabling debug output because of a bug in this version of Qt)
}else{
DEFINES += QT_NO_DEBUG_OUTPUT
}
}
CONFIG += release
}
# Windows
win32 {
LIBS += -ltorrent -lccext2 -lccgnu2