[Top][All Lists]

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

[Gcl-devel] RE: [Maxima] Re: Maxima cmucl patch

From: Mike Thomas
Subject: [Gcl-devel] RE: [Maxima] Re: Maxima cmucl patch
Date: Thu, 29 Jan 2004 12:09:19 +1000

Hi all.

I thought that I might attempt to clarify what appears to be some
misconceptions about the nature of the MinGW compiler suite, the executables
it produces, and Unix workalike host systems such as Cygwin, MSYS and MKS

I think James understands this stuff and is taking the right steps by making
the Windows Maxima build system independent of MSYS and/or Cygwin in order
to broaden the attractiveness of Windows Maxima to potential Maxima
developers irrespective of which brand of Common Lisp they prefer.

Most Windows users including potential Maxima users and developers don't
want to know about Cygwin and MSYS - they are tools for people who feel
comfortable with the Unix tradition.  James is trying to get rid of those
emulation systems.

Some background information pertinent to this discussion:


Cygwin is a Unix workalike tool set which includes two different compiler
suites which produce either:

 - Cygwin compatible executables, which are dependent on the Cygwin runtime
to emulate non-Windows C library functionality such as fork()
(CYGWIN1.DLL) - (Cygwin gcc),

 - ordinary Windows executables which use the standard Windows OS calls and
Microsoft Visual C++ C library (MSVCRT.DLL) - (MinGW32 gcc).

Cygwin has an arcane working environment from the point of view of average
Windows users.  Applications which are built to use CYGWIN1.DLL are less
efficient because of the emulation layer, and more difficult to support,
because of potential CYGWIN1.DLL version conflicts if distributed without
the Cygwin environment or alternatively, because of the need to pre-install
and understand/use the Cygwin environment before installing the new
application (eg Maxima).

The payoff from this arcane but essentially foreign envvironment is that it
is easier to build (as opposed to support) Unix programs such as TexMacs et
al - especially when they depend on XWindows.


MSYS is a fork of the Cygwin environment which has been simplified to make
it easier to use and to support the use of the MinGW32 compiler suite.

MSYS is also an arcane working environment from the point of view of Windows
users, but on the other hand, it produces normal Windows executables which
don't depend on Unix utilities or emulation DLLs and which can therefore be
distributed and used in the familiar Windows manner.

MinGW32 gcc and friends

This is nothing more than a Windows compiler (MinGW32 gcc) which uses
standard Windows libraries and produces executables with the same Windows OS
friendly characteristics.  It happily runs under DOS shells, several
Integrated Development Environments, MSYS or even Cygwin.

Cygwin gcc and friends

This is a compiler which is difficult to use outside the Cygwin Unix
workalike command line environment.  It produces Cygwin dependent
executables, which likewise are best left in the Cygwin environment.  It can
cross-compile non-Cygwin executables using the MinGW32 libraries and
headers, but there are subtle traps for the unwary.

In effect, Cygwin puts all the problems onto the end user rather than the

If you have to use a Cygwin package, you might as well get Linux and have a
system which runs quickly as well.

Windows GNU Common Lisp

As it stands, this compiler does not depend on Cygwin.  It is therfore much
easier to distribute and maintain than if it were dependent on CYGWIN1.DLL.
It is happy to run under any development environment in the same way as the
MinGW32 compiler.  If it were to be ported to Cygwin gcc, it would be
dependent on that compiler for compiling Lisp code.

Having this information on hand, I would like to answer some questions in
James and Camm's email exchange.

| On Wed, 2004-01-28 at 10:18, Camm Maguire wrote:
| > Greetings!
| >
| > James Amundson <address@hidden> writes:
| > > (When I am done, windows builds without MinGW should be a reality...)
| >
| >   I'm just wondering if
| > you'd feel a GCL port to cygwin would be desireable (should be
| > straightforward).
| Well, it's completely unrelated, but cygwin is necessary for running
| texmacs on Windows. People who have cygwin for texmacs might also be
| interested in using cygwin for maxima. It's possible, anyway. Maxima
| should work equally well under mingw and cygwin -- no porting should be
| necessary. I know that GCL, by its nature, is much more
| platform-sensitive than Maxima. Would porting to Cygwin require real
| work?

Porting just the Maxima or GCL build environment to Cygwin would require not
much work as it is essentially a standard GNU autotools and sh build
environment like MSYS.  For Maxima, care would need to be taken to feed
Windows paths rather than Cygwin paths to native Common Lisp compilers such
as Windows CLISP, ACL, Corman CL, LW and of course GCL as it stands now.  I
am not sure about the status of Cygwin CLISP, but I think it uses
CYGWIN1.DLL and therefore would be compatible with a Cygwin build

The alternative approach of porting GCL to use the Cygwin dll and then
building Maxima with such a compiler which would in turn be Cygwin dependent
would seriously complicate the distribution and support of Maxima as a
separate entity from Cygwin to the point of uselessness.

In effect, users of Maxima would be forced to install Cygwin.

Examples of Cygwin dependent projects like this are the GRASS Geographic
Information System and GNU Octave.  Each of these packages, however useful
they may be, is a monster to install and support on Windows and is
correspondingly not making much headway in the Windows world.

| > I've been told mingw is superior -- is there a
| > reason you are looking for a windows build without it?

For the goals to which I perceive the Maxima developers aspiring, I think it
certainly is better to use MinGW32 to build GCL and in turn GCL (which
includes MinGW32 gcc) to build Maxima.  It is not about MinGW32 being
superior to Cygwin per se - that is a context sensitive issue.

What James is apparently doing is building Maxima without MSYS, using
whatever Windows Common Lisp compiler is desired by any particular developer
(eg I use GCL, Richard Fateman uses ACL, others use CLISP, I would like to
use Corman Common Lisp or LW).

I suppose that James is writing  batch files for a DOS shell hosted build,
but I am guessing - he could equally be using TCL scripts.

| In many senses, using either MinGW or Cygwin on Windows is the worst of
| all possible worlds -- something unsatisfactory to serious users of
| windows and unix alike.

| It is my hope that a more "native" compilation
| system for windows will attract more contributions from people expert in
| windows. We *desperately* need them.

I agree absolutely!  Likewise on the GCL project although I am happy to
stick with MSYS hosted MinGW32 because of the greater need for autoconf.


Mike Thomas.

reply via email to

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