On Thu, Nov 10, 2005 at 10:25:40AM -0800, Brian Dessent wrote: > Thomas Porschberg wrote: > > > because libcppunit was built as cygwin-library. I resolved the > > problem by compiling the library from sources with -mno-cygwin > > flag. And then I used this library for both, my application > > cygwin-build and my application mingw-build. > > If I understand you right, this is at least dangerous. I have > > Yes, it's dangerous, and I'm surprised it works. > > Basically, you have to treat Cygwin and mingw as two completely separate > platforms. You'll have to compile two versions of your code and every > library that it links with. In the case of the Cygwin version of the > library, you can use the copy installed by setup.exe from the Cygwin > mirrors. But it is not a goal of the Cygwin project to provide packaged > versions of mingw libraries (except for a couple of common cases like > zlib) so don't expect to use any of the libraries found on a Cygwin > mirror when compiling for mingw. You'll have to do this yourself, or > get them from the mingw site. > > To do this sanely under Cygwin, it seems to me like you could do > something like the following (untested) for each package/library: > > mkdir cygwin-build && cd cygwin-build > CC="gcc" ../configure --prefix=/usr/local/cygwin \ > CFLAGS="-I/usr/local/cygwin/include" \ > LDFLAGS="-L/usr/local/cygwin/lib" # etc.. > make && make install > cd .. > > mkdir mingw-build && cd mingw-build > CC="gcc -mno-cygwin" ../configure --prefix=/usr/local/mingw \ > CFLAGS="-I/usr/local/mingw/include" \ > LDFLAGS="-L/usr/local/mingw/lib" # etc.. > make && make install > > This keeps the separation between installed packages such that > everything installed under /usr/local/cygwin is Cygwin, and everything > installed under /usr/local/mingw is mingw. The reason for not using > just /usr/local is that the compiler picks up libraries installed there > by default, so you wouldn't want it picking up a cygwin lib when > compiling in mingw mode, and so on. > > You could also do it by using mounts. Mount one /usr/local, do a Cygwin > compile and install of all packages, then unmount and remount a > different /usr/local and redo everything in mingw mode. > > However you handle it, you have to keep this separation. I would not > try to mix them under the same --prefix unless you really know what > you're doing. > > You can even just forget about using -mno-cygwin and have an install of > Cygwin and an install of mingw+MSYS, and treat them as if they have no > idea about each other, just as you would if you were supporting e.g. > Cygwin and MS VC++. > > Also, it's important to realize that the -mno-cygwin flag is provided as > a convenience to turn the Cygwin build environment into mingw mode, but > the mingw project is an independant effort from Cygwin. Porting mingw > applications is not really on-topic for this list. If you have > questions about compiling with mingw you should ask on their mailing > list.
Thanks for your guideline. It made things much more clear to me. Thomas -- -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/