Fix qmake shared library naming

Add long long int support to TQTextStream
Fix potential segmentation fault in QValueList
Fix library naming in TQT Plugins
This relates to Bug 2107
(cherry picked from commit b716176cec)
v3.5.13-sru
Francois Andriot 11 years ago committed by Slávek Banko
parent 9ea7824ff9
commit b5cb163e01

@ -806,7 +806,7 @@ UnixMakefileGenerator::defaultInstall(const QString &t)
uninst.append("\n\t");
uninst.append("-$(DEL_FILE) \"" + dst_pc + "\"");
}
if ( project->isEmpty("QMAKE_CYGWIN_SHLIB") ) {
if ( project->isEmpty("QMAKE_CYGWIN_SHLIB") && project->isEmpty("QMAKE_OPENBSD_SHLIBS") ) {
if ( !project->isActiveConfig("staticlib") && !project->isActiveConfig("plugin") ) {
if ( project->isEmpty("QMAKE_HPUX_SHLIB") ) {
links << "$(TARGET0)" << "$(TARGET1)" << "$(TARGET2)";

@ -132,6 +132,8 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
src_incremental=FALSE, moc_incremental=FALSE;
t << "####### Compiler, tools and options" << endl << endl;
if (varGlue("INCLUDEPATH", " -I", " -I", "").find("$(LOCALBASE)") != -1)
t << "LOCALBASE?= /usr/local" << endl;
t << "CC = ";
if (project->isActiveConfig("thread") &&
! project->variables()["QMAKE_CC_THREAD"].isEmpty())
@ -298,10 +300,15 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
} else if (!project->isActiveConfig("staticlib") && project->variables()["QMAKE_APP_FLAG"].isEmpty()) {
t << "TARGETA = " << var("TARGETA") << endl;
if (project->isEmpty("QMAKE_HPUX_SHLIB")) {
t << "TARGETD = " << var("TARGET_x.y.z") << endl;
t << "TARGET0 = " << var("TARGET_") << endl;
t << "TARGET1 = " << var("TARGET_x") << endl;
t << "TARGET2 = " << var("TARGET_x.y") << endl;
if (!project->isEmpty("QMAKE_OPENBSD_SHLIBS")) {
t << "LIB"+var("OBSD_TARGET_NAME")+"_VERSION = " << var("OBSD_TARGET_VERSION") << endl;
t << "TARGETD = " << var("TARGET_x.y") << endl;
} else {
t << "TARGETD = " << var("TARGET_x.y.z") << endl;
t << "TARGET0 = " << var("TARGET_") << endl;
t << "TARGET1 = " << var("TARGET_x") << endl;
t << "TARGET2 = " << var("TARGET_x.y") << endl;
}
} else {
t << "TARGETD = " << var("TARGET_x") << endl;
t << "TARGET0 = " << var("TARGET_") << endl;
@ -378,6 +385,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
}
t << "####### Build rules" << endl << endl;
t << "$(OBJECTS): $(UICDECLS)" << endl << endl;
if(!project->variables()["SUBLIBS"].isEmpty()) {
QString libdir = "tmp/";
if(!project->isEmpty("SUBLIBS_DIR"))
@ -1296,10 +1304,20 @@ void UnixMakefileGenerator::init2()
project->variables()["TARGET_x"].append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB") +
"." + project->first("VER_MAJ"));
project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB")
+ "." + project->first("VER_MAJ") +
"." + project->first("VER_MIN"));
if ( !project->variables()["QMAKE_OPENBSD_SHLIBS"].isEmpty() ) {
QString s;
s.setNum(project->first("VER_MIN").toInt()*10+ project->first("VER_PAT").toInt());
project->variables()["OBSD_TARGET_VERSION"].append(project->first("VER_MAJ") + "." + s);
project->variables()["OBSD_TARGET_NAME"].append(project->first("TARGET"));
project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB")
+ ".$(LIB"+ project->first("TARGET") + "_VERSION)");
} else {
project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB")
+ "." + project->first("VER_MAJ") +
"." + project->first("VER_MIN"));
}
project->variables()["TARGET_x.y.z"].append("lib" + project->first("TARGET") +
"." +
project->variables()[
@ -1308,7 +1326,10 @@ void UnixMakefileGenerator::init2()
project->first("VER_MIN") + "." +
project->first("VER_PAT"));
}
project->variables()["TARGET"] = project->variables()["TARGET_x.y.z"];
if ( !project->variables()["QMAKE_OPENBSD_SHLIBS"].isEmpty() )
project->variables()["TARGET"] = project->variables()["TARGET_x.y"];
else
project->variables()["TARGET"] = project->variables()["TARGET_x.y.z"];
}
if(project->isEmpty("QMAKE_LN_SHLIB"))
project->variables()["QMAKE_LN_SHLIB"].append("ln -s");

@ -323,6 +323,8 @@ void QGPluginManager::addLibraryPath( const QString& path )
QString filter = "*.dylib; *.so; *.bundle";
#elif defined(Q_OS_HPUX)
QString filter = "*.sl";
#elif defined(Q_OS_OPENBSD)
QString filter = "*.so; *.so.*";
#elif defined(Q_OS_UNIX)
QString filter = "*.so";
#endif

@ -195,6 +195,7 @@
#define I_SHORT 0x0010
#define I_INT 0x0020
#define I_LONG 0x0030
#define I_LONGLONG 0x0040
#define I_TYPE_MASK 0x00f0
#define I_BASE_2 QTS::bin
@ -1862,7 +1863,7 @@ QTextStream &QTextStream::operator<<( char c )
return *this;
}
QTextStream &QTextStream::output_int( int format, ulong n, bool neg )
QTextStream &QTextStream::output_int( int format, unsigned long long n, bool neg )
{
static const char hexdigits_lower[] = "0123456789abcdef";
static const char hexdigits_upper[] = "0123456789ABCDEF";
@ -1879,6 +1880,7 @@ QTextStream &QTextStream::output_int( int format, ulong n, bool neg )
case I_SHORT: len=16; break;
case I_INT: len=sizeof(int)*8; break;
case I_LONG: len=32; break;
case I_LONGLONG: len=64; break;
default: len = 0;
}
p = &buf[74]; // go reverse order
@ -1925,7 +1927,7 @@ QTextStream &QTextStream::output_int( int format, ulong n, bool neg )
p = &buf[74];
*p = '\0';
if ( neg )
n = (ulong)(-(long)n);
n = (unsigned long long)(-(long long)n);
do {
*--p = ((int)(n%10)) + '0';
n /= 10;
@ -2041,6 +2043,31 @@ QTextStream &QTextStream::operator<<( unsigned long i )
return output_int( I_LONG | I_UNSIGNED, i, FALSE );
}
/*!
\overload
Writes a \c long long \c int \a i to the stream and returns a reference
to the stream.
*/
QTextStream &QTextStream::operator<<( signed long long i )
{
return output_int( I_LONGLONG | I_SIGNED, i, i < 0 );
}
/*!
\overload
Writes an \c unsigned \c long \c int \a i to the stream and
returns a reference to the stream.
*/
QTextStream &QTextStream::operator<<( unsigned long long i )
{
return output_int( I_LONGLONG | I_UNSIGNED, i, FALSE );
}
/*!
\overload

@ -102,6 +102,8 @@ public:
QTextStream &operator<<( unsigned int );
QTextStream &operator<<( signed long );
QTextStream &operator<<( unsigned long );
QTextStream &operator<<( signed long long );
QTextStream &operator<<( unsigned long long );
QTextStream &operator<<( float );
QTextStream &operator<<( double );
QTextStream &operator<<( const char* );
@ -155,7 +157,8 @@ public:
private:
long input_int();
void init();
QTextStream &output_int( int, ulong, bool );
QTextStream &output_int( int, unsigned long long, bool );
QIODevice *dev;
int fflags;

@ -644,13 +644,11 @@ Q_INLINE_TEMPLATES QDataStream& operator>>( QDataStream& s, QValueList<T>& l )
l.clear();
Q_UINT32 c;
s >> c;
for( Q_UINT32 i = 0; i < c; ++i )
for( Q_UINT32 i = 0; i < c && !s.atEnd(); ++i )
{
T t;
s >> t;
l.append( t );
if ( s.atEnd() )
break;
}
return s;
}

Loading…
Cancel
Save