[Issue N11069] Question about qt cygwin port

Ralf Habacker kde-cygwin@mail.kde.org
Thu, 5 Dec 2002 09:33:12 +0100


This is a multi-part message in MIME format.

------=_NextPart_000_011B_01C29C41.54B39DE0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

> Sure, it's just that buying another vmware licence and the commercial
> Cygwin version,

you need no license for cygwin. :-)

> installing the environment, porting Qt need lots of resources.

Mostly work is already done. See below

>
>
> > BTW: Currently we are working on the port for qt3.1. If we are ready,
> > I will
> > send you the remaining patches.
>
> Fine. If possible I would prefer following these steps:
>
> 1) Get configure to run. This should already be the case. If not I would
> be interested in feedback. Relevant patches would be immediately
> applied to Qt 3.1.

 it runs already. Only mkspecs/cygwin-g++ patches. See mkspecs_cygwin_310rc1.dif
One note: the qmake.conf contains the following as backward compatibility to
recent cygwin ld

# activate both below if implib for dlls are needed
#QMAKE_CYGWIN_IMPLIB	= 1
#QMAKE_LFLAGS_SHLIB	= -shared -Wl,--out-implib=$(TARGETI)


> 2) Get Qt to build. This should almost be the case. I would be
> interested in feedback. Relevant patches would be applied to Qt 3.1.

See file root_cygwin_310rc1.dif.

Additional there are some patches to qmake. While patching it i recognized an
incompatibility problem with the unix generator.

In all targets except shared library the TARGET macros is defined to the
absolute path of the installed library.

makefile(unix - app)
QMAKE_TARGET = moc
TARGET  = ../../bin/moc
...
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC)
...

Only for the shared library handles this in another way.
makefile(unix - shared lib/plugin)
QMAKE_TARGET = qt-mt
DESTDIR  = ../lib/
TARGET  = libqt-mt.so.3.1.0
[1]^^^^^^^^
TARGETA	= ../lib/libqt-mt.a
TARGETD	= libqt-mt.so.3.1.0
TARGET0	= libqt-mt.so
TARGET1	= libqt-mt.so.3
TARGET2	= libqt-mt.so.3.1

all: Makefile ../lib/libqt-mt.prl  ../lib/$(TARGET)
                                   ^^^^^^[2]
../lib/$(TARGET):  $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
[2]^^^^^^^^
	test -d ../lib/ || mkdir -p ../lib/
	-$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)
	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
	-ln -s $(TARGET) $(TARGET0)
	-ln -s $(TARGET) $(TARGET1)
	-ln -s $(TARGET) $(TARGET2)
	-$(DEL_FILE) ../lib/$(TARGET)
	-$(DEL_FILE) ../lib/$(TARGET0)
	-$(DEL_FILE) ../lib/$(TARGET1)
	-$(DEL_FILE) ../lib/$(TARGET2)
	-$(MOVE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) ../lib/


The problem is, that cygwin need to install the shared library in the bin dir,
which conflicts with [1] [2].
If the destination dir would be added to TARGET the if would be easeier. (The
uses TARGET macro should be replaced with the TARGETD, which is the same.

TARGET  = ../lib/libqt-mt.so.3.1.0
[1] ^^^^
TARGETA	= ../lib/libqt-mt.a
TARGETD	= libqt-mt.so.3.1.0
TARGET0	= libqt-mt.so
TARGET1	= libqt-mt.so.3
TARGET2	= libqt-mt.so.3.1

all: Makefile ../lib/libqt-mt.prl  $(TARGET)
                                   ^^^[2]
$(TARGET):  $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
[2]^^^
	-$(DEL_FILE) $(TARGETD) $(TARGET0) $(TARGET1) $(TARGET2)
                           ^
	$(LINK) $(LFLAGS) -o $(TARGETD) $(OBJECTS) $(OBJMOC) $(LIBS)
                                   ^
	-ln -s $(TARGETD) $(TARGET0)
                     ^
	-ln -s $(TARGETD) $(TARGET1)
                     ^
	-ln -s $(TARGETD) $(TARGET2)
                     ^
	-$(DEL_FILE) ../lib/$(TARGET)
	-$(DEL_FILE) ../lib/$(TARGET0)
	-$(DEL_FILE) ../lib/$(TARGET1)
	-$(DEL_FILE) ../lib/$(TARGET2)
	-$(MOVE) $(TARGETD) $(TARGET0) $(TARGET1) $(TARGET2) ../lib/
                       ^

If you like I can prepare a patch for this.

Ralf




------=_NextPart_000_011B_01C29C41.54B39DE0
Content-Type: application/octet-stream;
	name="mkspecs_cygwin_310rc1.dif"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="mkspecs_cygwin_310rc1.dif"

Index: mkspecs/cygwin-g++/qmake.conf=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvsroot/kde-cygwin/qt-3/mkspecs/cygwin-g++/qmake.conf,v=0A=
retrieving revision 1.1.1.1=0A=
retrieving revision 1.1.2.4=0A=
diff -u -3 -p -B -r1.1.1.1 -r1.1.2.4=0A=
--- mkspecs/cygwin-g++/qmake.conf	13 Nov 2002 14:52:09 -0000	1.1.1.1=0A=
+++ mkspecs/cygwin-g++/qmake.conf	30 Nov 2002 23:26:16 -0000	1.1.2.4=0A=
@@ -48,17 +47,20 @@ QMAKE_LINK		=3D g++=0A=
 QMAKE_LINK_SHLIB	=3D g++=0A=
 QMAKE_LFLAGS		=3D=0A=
 QMAKE_LFLAGS_RELEASE	=3D=0A=
-QMAKE_LFLAGS_DEBUG	=3D=0A=
-QMAKE_LFLAGS_SHLIB	=3D -shared=0A=
+QMAKE_LFLAGS_DEBUG	=3D -g=0A=
+QMAKE_LFLAGS_SHLIB	=3D -shared =0A=
 QMAKE_LFLAGS_PLUGIN	=3D $$QMAKE_LFLAGS_SHLIB=0A=
-QMAKE_LFLAGS_SONAME	=3D -Wl,-soname,=0A=
+QMAKE_LFLAGS_SONAME	=3D =0A=
 QMAKE_LFLAGS_THREAD	=3D=0A=
 QMAKE_RPATH		=3D -Wl,-rpath,=0A=
 QMAKE_CYGWIN_SHLIB	=3D 1=0A=
+# activate both below if implib for dlls are needed=0A=
+#QMAKE_CYGWIN_IMPLIB	=3D 1=0A=
+#QMAKE_LFLAGS_SHLIB	=3D -shared -Wl,--out-implib=3D$(TARGETI)=0A=
  =0A=
 QMAKE_LIBS		=3D=0A=
 QMAKE_LIBS_DYNLOAD	=3D -ldl=0A=
-QMAKE_LIBS_X11		=3D -lXext -lX11=0A=
+QMAKE_LIBS_X11		=3D  -lGL -lXext -lX11=0A=
 QMAKE_LIBS_X11SM	=3D -lSM -lICE=0A=
 QMAKE_LIBS_QT		=3D -lqt=0A=
 QMAKE_LIBS_QT_THREAD	=3D -lqt-mt=0A=
Index: mkspecs/cygwin-g++/qplatformdefs.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvsroot/kde-cygwin/qt-3/mkspecs/cygwin-g++/qplatformdefs.h,v=0A=
retrieving revision 1.1.1.1=0A=
retrieving revision 1.1.2.1=0A=
diff -u -3 -p -B -r1.1.1.1 -r1.1.2.1=0A=
--- mkspecs/cygwin-g++/qplatformdefs.h	13 Nov 2002 14:52:09 -0000	1.1.1.1=0A=
+++ mkspecs/cygwin-g++/qplatformdefs.h	28 Nov 2002 16:35:01 -0000	1.1.2.1=0A=
@@ -57,6 +57,8 @@=0A=
 // or Don Berstein's djbdns:=0A=
 // 	http://cr.yp.to/djbdns.html=0A=
 // provide this functionality, but not necessarily under the Cygwin =
license...=0A=
+// =0A=
+// note: The cygwin port is now using the win32 dns stuff provided with =
qt3=0A=
 #include <netinet/in.h>=0A=
 =0A=
 =0A=

------=_NextPart_000_011B_01C29C41.54B39DE0
Content-Type: application/octet-stream;
	name="root_cygwin_310rc1.dif"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="root_cygwin_310rc1.dif"

Index: configure=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvsroot/kde-cygwin/qt-3/configure,v=0A=
retrieving revision 1.1.1.3=0A=
retrieving revision 1.3.4.1=0A=
diff -u -3 -p -B -r1.1.1.3 -r1.3.4.1=0A=
--- configure	13 Nov 2002 14:51:38 -0000	1.1.1.3=0A=
+++ configure	21 Nov 2002 06:56:20 -0000	1.3.4.1=0A=
@@ -1258,6 +1258,9 @@ if [ -z "$PLATFORM" ]; then=0A=
 	    - Also available for Linux: linux-kcc linux-icc linux-cxx=0A=
 	"=0A=
 	;;=0A=
+     CYGWIN*:*)=0A=
+        PLATFORM=3Dcygwin-g++=0A=
+        ;;=0A=
      SunOS:5*)=0A=
 	#PLATFORM=3Dsolaris-g++=0A=
 	PLATFORM=3Dsolaris-cc=0A=

------=_NextPart_000_011B_01C29C41.54B39DE0
Content-Type: application/octet-stream;
	name="qmake_cygwin_310rc1.dif"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="qmake_cygwin_310rc1.dif"

Index: GNUmakefile.in=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvsroot/kde-cygwin/qt-3/qmake/GNUmakefile.in,v=0A=
retrieving revision 1.1.1.3=0A=
retrieving revision 1.2.4.3=0A=
diff -u -3 -p -B -u -b -r1.1.1.3 -r1.2.4.3=0A=
--- GNUmakefile.in	13 Nov 2002 14:52:14 -0000	1.1.1.3=0A=
+++ GNUmakefile.in	29 Nov 2002 13:02:03 -0000	1.2.4.3=0A=
@@ -18,9 +18,16 @@ CFLAGS=3D@QMAKE_CFLAGS@ -I. -Igenerators -=0A=
 CXXFLAGS=3D $(CFLAGS)=0A=
 LFLAGS=3D@QMAKE_LFLAGS@=0A=
 =0A=
+# check if windows based system =0A=
+ifdef PATHEXT=0A=
+QMAKE=3Dqmake.exe =0A=
+else=0A=
+QMAKE=3Dqmake=0A=
+endif =0A=
+=0A=
 #if cc isn't gcc I need to use the bad makefile=0A=
 ifeq ($(CC),gcc)=0A=
-all: qmake=0A=
+all: $(QMAKE)=0A=
 DEPDIR:=3D$(shell [ -d .deps ] || mkdir -p .deps)=0A=
 -include $(OBJS:.o=3D.dep)=0A=
 else=0A=
@@ -28,16 +35,16 @@ all: uqmake=0A=
 endif=0A=
 =0A=
 uqmake:=0A=
-	$(MAKE) -f Makefile qmake=0A=
+	$(MAKE) -f Makefile $(QMAKE)=0A=
 =0A=
-qmake: $(OBJS) $(QTOBJS)=0A=
+$(QMAKE): $(OBJS) $(QTOBJS)=0A=
 	$(CXX) -o $@ $^ $(LFLAGS)=0A=
 	rm -f @BUILD_PATH@/bin/$@=0A=
 	ln -s @BUILD_PATH@/qmake/$@ @BUILD_PATH@/bin/$@=0A=
 =0A=
 install: all=0A=
 	[ -d @QT_INSTALL_BINS@ ] || mkdir -p @QT_INSTALL_BINS@=0A=
-	-cp -f @BUILD_PATH@/bin/qmake @QT_INSTALL_BINS@=0A=
+	-cp -f @BUILD_PATH@/bin/$(QMAKE) @QT_INSTALL_BINS@=0A=
 	[ -d @QT_INSTALL_DATA@ ] || mkdir -p @QT_INSTALL_DATA@=0A=
 	-cp -r -f @SOURCE_PATH@/mkspecs @QT_INSTALL_DATA@=0A=
 =0A=
@@ -45,7 +52,7 @@ clean::=0A=
 	rm -f $(OBJS) $(QTOBJS)=0A=
 =0A=
 distclean:: clean=0A=
-	rm -rf qmake .deps=0A=
+	rm -rf $(QMAKE) .deps=0A=
 =0A=
 # don't use optimization for these=0A=
 projectgenerator.o: projectgenerator.cpp=0A=
Index: project.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvsroot/kde-cygwin/qt-3/qmake/project.h,v=0A=
retrieving revision 1.1.1.3=0A=
diff -u -3 -p -B -u -b -r1.1.1.3 project.h=0A=
--- project.h	13 Nov 2002 14:52:15 -0000	1.1.1.3=0A=
+++ project.h	1 Dec 2002 13:25:29 -0000=0A=
@@ -1,5 +1,5 @@=0A=
 =
/************************************************************************=
****=0A=
-** =0A=
+** $Id: project.h,v 1.2.4.1 2002/11/21 06:57:20 tanner Exp $=0A=
 **=0A=
 ** Definition of ________ class.=0A=
 **=0A=
@@ -62,6 +62,7 @@ public:=0A=
     QString configFile();=0A=
 =0A=
     bool isEmpty(const QString &v);=0A=
+    bool isDefined(const QString &v);=0A=
     QStringList &values(const QString &v);=0A=
     QString first(const QString &v);=0A=
     QMap<QString, QStringList> &variables();=0A=
@@ -91,6 +92,9 @@ inline QString QMakeProject::configFile(=0A=
 =0A=
 inline bool QMakeProject::isEmpty(const QString &v)=0A=
 { return !vars.contains(v) || vars[v].isEmpty(); }=0A=
+=0A=
+inline bool QMakeProject::isDefined(const QString &v)=0A=
+{ return vars.contains(v) && !vars[v].isEmpty(); }=0A=
 =0A=
 inline QStringList &QMakeProject::values(const QString &v)=0A=
 { return vars[v]; }=0A=
Index: generators/unix/unixmake2.cpp=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvsroot/kde-cygwin/qt-3/qmake/generators/unix/unixmake2.cpp,v=0A=
retrieving revision 1.1.1.3=0A=
diff -u -3 -p -B -u -b -r1.1.1.3 unixmake2.cpp=0A=
--- generators/unix/unixmake2.cpp	13 Nov 2002 14:52:16 -0000	1.1.1.3=0A=
+++ generators/unix/unixmake2.cpp	1 Dec 2002 13:25:36 -0000=0A=
@@ -218,7 +218,10 @@ UnixMakefileGenerator::writeMakeParts(QT=0A=
 	t << "TARGETD   =3D " << var("TARGET") << endl;=0A=
     } else if (!project->isActiveConfig("staticlib") && =
project->variables()["QMAKE_APP_FLAG"].isEmpty()) {=0A=
 	t << "TARGETA	=3D " << var("TARGETA") << endl;=0A=
-	if (project->isEmpty("QMAKE_HPUX_SHLIB")) {=0A=
+  if (!project->isEmpty("QMAKE_CYGWIN_SHLIB") )  {=0A=
+    t << "TARGETI	=3D " << var("TARGET_I") << endl;=0A=
+    t << "TARGETL	=3D " << var("TARGET_L") << endl;=0A=
+  } else if (project->isEmpty("QMAKE_HPUX_SHLIB")) {=0A=
 	    t << "TARGETD	=3D " << var("TARGET_x.y.z") << endl;=0A=
 	    t << "TARGET0	=3D " << var("TARGET_") << endl;=0A=
 	    t << "TARGET1	=3D " << var("TARGET_x") << endl;=0A=
@@ -382,7 +385,7 @@ UnixMakefileGenerator::writeMakeParts(QT=0A=
 	      << endl << endl;=0A=
 =0A=
 	    //real target=0A=
-	    t << var("TARGET") << ": " << " " << incr_deps << " " << =
var("TARGETDEPS") << "\n\t";=0A=
+      t << "$(TARGET): " << " " << incr_deps << " " << =
var("TARGETDEPS") << "\n\t";=0A=
 	    if(!destdir.isEmpty())=0A=
 		t << "\n\t" << "test -d " << destdir << " || mkdir -p " << destdir << =
"\n\t";=0A=
 	    if(!project->isEmpty("QMAKE_PRE_LINK"))=0A=
@@ -453,19 +456,22 @@ UnixMakefileGenerator::writeMakeParts(QT=0A=
 	    }=0A=
 =0A=
 	    t << "all: " << " " << deps << " " << varGlue("ALL_DEPS",""," ","")=0A=
-	      << " " <<  var("DESTDIR_TARGET") << endl << endl;=0A=
+        << " $(TARGET)" << endl << endl;=0A=
 =0A=
 	    //real target=0A=
-	    t << var("DESTDIR_TARGET") << ": " << incr_deps << " $(SUBLIBS) " =
<<=0A=
+      t << "$(TARGET): " << incr_deps << " $(SUBLIBS) " <<=0A=
 		var("TARGETDEPS");=0A=
 	} else {=0A=
 	    t << "all: " << deps << " " << varGlue("ALL_DEPS",""," ","") << " =
" <<=0A=
-		var("DESTDIR_TARGET") << endl << endl;=0A=
-	    t << var("DESTDIR_TARGET") << ":  $(UICDECLS) $(OBJECTS) $(OBJMOC) =
$(SUBLIBS) " <<=0A=
+    " $(TARGET)" << endl << endl;=0A=
+      t << "$(TARGET):  $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS) " <<=0A=
 		var("TARGETDEPS");=0A=
 	}=0A=
 	if(!destdir.isEmpty())=0A=
 	    t << "\n\t" << "test -d " << destdir << " || mkdir -p " << destdir;=0A=
+    	if (!project->isEmpty("QMAKE_CYGWIN_SHLIB") ) =0A=
+      	t << "\n\t" << "test -d " << var("DLLDESTDIR") << " || mkdir -p =
" << var("DLLDESTDIR");=0A=
+=0A=
 	if(!project->isEmpty("QMAKE_PRE_LINK"))=0A=
 	    t << "\n\t" << var("QMAKE_PRE_LINK");=0A=
 =0A=
@@ -474,25 +480,39 @@ UnixMakefileGenerator::writeMakeParts(QT=0A=
 	      << "-$(DEL_FILE) $(TARGET)" << "\n\t"=0A=
 	      << var("QMAKE_LINK_SHLIB_CMD");=0A=
 	    if(!destdir.isEmpty())=0A=
+      // FIXME: this seems obsolate to me because target is linked into =
DESTDIR=0A=
 		t << "\n\t"=0A=
 		  << "-$(MOVE) $(TARGET) " << var("DESTDIR");=0A=
 	    if(!project->isEmpty("QMAKE_POST_LINK"))=0A=
 		t << "\n\t" << var("QMAKE_POST_LINK") << "\n\t";=0A=
 	    t << endl << endl;=0A=
 	} else if(project->isEmpty("QMAKE_HPUX_SHLIB")) {=0A=
+=0A=
+    	if (!project->isEmpty("QMAKE_CYGWIN_SHLIB") ) =0A=
+    	   t << "\n\t"=0A=
+      	  << "-$(DEL_FILE) $(TARGET) $(TARGETA) $(TARGETI) $(TARGETL) " =
<< "\n\t"=0A=
+    	    << var("QMAKE_LINK_SHLIB_CMD") << "\n\t";=0A=
+    	else =0A=
 	    t << "\n\t"=0A=
 	      << "-$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)" << =
"\n\t"=0A=
 	      << var("QMAKE_LINK_SHLIB_CMD") << "\n\t";=0A=
+=0A=
+    	if (project->isEmpty("QMAKE_CYGWIN_SHLIB") ) =0A=
 	    t << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET0)")  << =
"\n\t"=0A=
 	      << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET1)") << =
"\n\t"=0A=
 	      << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET2)");=0A=
+    	else if (project->isEmpty("QMAKE_CYGWIN_IMPLIB") )=0A=
+    	  t << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGETL)") =
<< "\n\t";=0A=
+    		  	=0A=
 	    if(!destdir.isEmpty())=0A=
+    		if (project->isEmpty("QMAKE_CYGWIN_SHLIB") ) =0A=
 		t << "\n\t"=0A=
 		  << "-$(DEL_FILE) " << var("DESTDIR") << "$(TARGET)\n\t"=0A=
 		  << "-$(DEL_FILE) " << var("DESTDIR") << "$(TARGET0)\n\t"=0A=
 		  << "-$(DEL_FILE) " << var("DESTDIR") << "$(TARGET1)\n\t"=0A=
 		  << "-$(DEL_FILE) " << var("DESTDIR") << "$(TARGET2)\n\t"=0A=
 		  << "-$(MOVE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) " << =
var("DESTDIR");=0A=
+    		=0A=
 	    if(!project->isEmpty("QMAKE_POST_LINK"))=0A=
 		t << "\n\t" << var("QMAKE_POST_LINK");=0A=
 	    t << endl << endl;=0A=
@@ -711,9 +731,13 @@ UnixMakefileGenerator::writeMakeParts(QT=0A=
        project->isActiveConfig("resource_fork") && =
!project->isActiveConfig("console"))=0A=
 	t << "\t-$(DEL_FILE) -r " << destdir.section(Option::dir_sep, 0, -4) =
<< "\n";=0A=
     else=0A=
-	t << "\t-$(DEL_FILE) " << destdir << "$(TARGET)" << " " << "$(TARGET)" =
<< "\n";=0A=
+  // FIXME: This may be rearranged to TARGET TARGETI in one line and =
TARGETA in another line =0A=
+  t << "\t-$(DEL_FILE) $(TARGET)" << "\n";=0A=
     if(!project->isActiveConfig("staticlib") && =
project->variables()["QMAKE_APP_FLAG"].isEmpty() &&=0A=
        !project->isActiveConfig("plugin"))=0A=
+    	if (!project->isEmpty("QMAKE_CYGWIN_SHLIB") ) =0A=
+    		t << "\t-$(DEL_FILE) " "$(TARGETA) " << "$(TARGETI) " << =
"$(TARGETL) " << "\n";=0A=
+    	else =0A=
 	t << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << =
"$(TARGET1) "=0A=
 	  << destdir << "$(TARGET2) $(TARGETA)" << "\n";=0A=
     t << endl << endl;=0A=
@@ -971,6 +995,25 @@ void UnixMakefileGenerator::init2()=0A=
 							    project->first("VER_PAT"));=0A=
 	    }=0A=
 	    project->variables()["TARGET"] =3D =
project->variables()["TARGET_x.y.z"];=0A=
+=0A=
+  } else if ( !project->isEmpty("QMAKE_CYGWIN_SHLIB") ) {=0A=
+      project->variables()["DLLDESTDIR"] =3D project->first ("DESTDIR");=0A=
+      project->variables()["DLLDESTDIR"].first ().replace ("lib", =
"bin");=0A=
+      project->variables()["TARGET_"].append("lib" + =
project->first("TARGET") + ".a");=0A=
+    	=
project->variables()["TARGET_x"].append(project->first("DLLDESTDIR") + =
"cyg" + =0A=
+    					project->first("TARGET") + "-" + project->first("VER_MAJ") + =
"." +=0A=
+    					project->first("QMAKE_EXTENSION_SHLIB"));=0A=
+=0A=
+    	project->variables()["TARGET_I"].append(project->first("DESTDIR") =
+ "lib" + =0A=
+    					project->first("TARGET") + "." + =
project->first("QMAKE_EXTENSION_SHLIB") + ".a");=0A=
+=0A=
+    	project->variables()["TARGET_L"].append(project->first("DESTDIR") =
+ "lib" + =0A=
+    					project->first("TARGET") + "." + =
project->first("QMAKE_EXTENSION_SHLIB"));=0A=
+=0A=
+      project->variables()["TARGET"] =3D project->first("DLLDESTDIR") + =
"cyg" + =0A=
+    					project->first("TARGET") + "-" + project->first("VER_MAJ") + =
"." +=0A=
+    					project->first("QMAKE_EXTENSION_SHLIB");=0A=
+    =0A=
 	} else {=0A=
 	    project->variables()["TARGET_"].append("lib" + =
project->first("TARGET") + "." +=0A=
 						   project->first("QMAKE_EXTENSION_SHLIB"));=0A=

------=_NextPart_000_011B_01C29C41.54B39DE0--