summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancois Andriot <albator78@libertysurf.fr>2014-09-12 12:57:56 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-09-12 13:01:39 -0500
commitb716176cec88f5fa604b637a947b44b9ff165d5a (patch)
tree72177722906e1c4afc03bcc57b30cdbad5dd8f60
parente17513956503963f4d468342a5be6a0967aca97c (diff)
downloadqt3-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.cpp2
-rw-r--r--qmake/generators/unix/unixmake2.cpp39
-rw-r--r--src/tools/qgpluginmanager.cpp2
-rw-r--r--src/tools/qtextstream.cpp31
-rw-r--r--src/tools/qtextstream.h5
-rw-r--r--src/tools/qvaluelist.h4
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;
}