diff options
author | Francois Andriot <albator78@libertysurf.fr> | 2014-09-12 12:57:56 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2014-09-12 13:01:39 -0500 |
commit | b716176cec88f5fa604b637a947b44b9ff165d5a (patch) | |
tree | 72177722906e1c4afc03bcc57b30cdbad5dd8f60 | |
parent | e17513956503963f4d468342a5be6a0967aca97c (diff) | |
download | qt3-b716176cec88f5fa604b637a947b44b9ff165d5a.tar.gz qt3-b716176cec88f5fa604b637a947b44b9ff165d5a.zip |
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
-rw-r--r-- | qmake/generators/unix/unixmake.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/unix/unixmake2.cpp | 39 | ||||
-rw-r--r-- | src/tools/qgpluginmanager.cpp | 2 | ||||
-rw-r--r-- | src/tools/qtextstream.cpp | 31 | ||||
-rw-r--r-- | src/tools/qtextstream.h | 5 | ||||
-rw-r--r-- | src/tools/qvaluelist.h | 4 |
6 files changed, 67 insertions, 16 deletions
diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp index e863495..865c84a 100644 --- a/qmake/generators/unix/unixmake.cpp +++ b/qmake/generators/unix/unixmake.cpp @@ -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)"; diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index 354bcf6..d1ed572 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -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"); diff --git a/src/tools/qgpluginmanager.cpp b/src/tools/qgpluginmanager.cpp index 56b12cd..520e16d 100644 --- a/src/tools/qgpluginmanager.cpp +++ b/src/tools/qgpluginmanager.cpp @@ -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 diff --git a/src/tools/qtextstream.cpp b/src/tools/qtextstream.cpp index 63f9625..eb56eec 100644 --- a/src/tools/qtextstream.cpp +++ b/src/tools/qtextstream.cpp @@ -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 diff --git a/src/tools/qtextstream.h b/src/tools/qtextstream.h index 337cc3b..fb494f0 100644 --- a/src/tools/qtextstream.h +++ b/src/tools/qtextstream.h @@ -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; diff --git a/src/tools/qvaluelist.h b/src/tools/qvaluelist.h index 2976214..8c57e54 100644 --- a/src/tools/qvaluelist.h +++ b/src/tools/qvaluelist.h @@ -655,13 +655,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; } |