autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: autoconf in pure MSVC environment?


From: Roger Leigh
Subject: Re: autoconf in pure MSVC environment?
Date: Wed, 08 Sep 2004 00:35:19 +0100
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)

"Brandon J. Van Every" <address@hidden> writes:

> To get real duplicability of build environment, and real vetting by a
> lot of Windows developers, code has to be built natively under MSVC.
> That's not an absolute, but it is the correct "in practice" operative
> statement most of the time.  My rule of thumb is if a project is Cygwin
> / Mingw, they aren't serious about Windows support.  Part of this is
> cultural, not just technical: they're UNIXen and Windows is viewed as a
> second class citizen.

But Windows /is/ a second class citizen.

The fact of the matter is that the baseline standards for software
development are: ISO C, ISO C++, and POSIX/SUSv3.  They are all a
given (bar minor incompatibilities) on nearly every platform but
Windows.  Windows /is/ the odd one out, being gratuitously
incompatible with everyone else.  This imposes a heavy burden on
porting to Windows, so that people like myself who would like to build
Windows-native versions of our software have not the resources to do
so--despite supporting every other commonly available OS out there!

For people like me, targeting a Cygwin or MinGW toolchain isn't not
"being serious" about Windows support--it's the only choice.  There
isn't an alternative toolchain available, and non-POSIX toolchains are
not supportable: the build infrastructure for many projects is
non-trivial (for gimp-print, the bootstrapped build infrastructure
totals over 65000 lines).  The fact that there has never ever been a
standard build environment on Windows does not help matters.  Can I
rewrite an entire build system for just /one/ platform?  No, of course
not!  The build took man months to write and especially debug, so it
would build on every other platform--that's being serious about
portability!

For many projects the entire development team uses Linux, UNIX and/or
MacOS X.  Windows support will only be supportable if there are folks
using Windows daily who are willing to do the grunt work, since folks
like myself do not have the skills to debug Windows issues such as DLL
linking problems, or even normal bugs.  Since we are not using Windows
regularly (if at all), while we are not against a Windows port, there
is not much we can do to make it happen either.

In March, I spent a significant amount of time building GTK+ 2.2.4 and
its dependent libraries for Cygwin.  It took several weeks, basing my
work on previous patches for 2.2.1.  I then had to forward port the
patches to GTK+ 2.4.x.  Thankfully these were incorporated in the
official release [GTK+ is now part of Cygwin].  Once I had the build
and portability issues fixed, I could then build my software.  It ran
reasonably well (using Gtkmm and Postgres).  Building "native"
non-Cygwin versions would have been an order of magnitude more
difficult--well outside my capabilities.

The solution to this problem is for Microsoft to provide a full POSIX
environment (APIs and tools) which would greatly ease both porting and
native development.  Having a working DLL implementation would also
help.  This would however be nothing more than a reimplementation of
Cygwin.  It's called "Windows Services for UNIX".  If it came as
standard with the OS, it might even be useful.

I think you need to approach the question from the other side: it's
not a question of how the autotools must change to accommodate
Windows, it's a question of how Windows can provide a Standard POSIX
environment for building and running POSIX applications.  When Windows
can provide such an environment, it will cease to be "second class"
(in this respect).


Regards,
Roger

-- 
Roger Leigh

                Printing on GNU/Linux?  http://gimp-print.sourceforge.net/
                GPG Public Key: 0x25BFB848.  Please sign and encrypt your mail.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]