[LLVMdev] Ninja (make replacement)

Mikael Lyngvig mikael at lyngvig.org
Sun Jun 17 18:29:52 PDT 2012


Yes, sorry, the LLVM CMake documentation :-)

I don't think I am duplicating a large chunk; I am continuously trying to
shave off extraneous and redundant stuff off my Windows-specific document.
 I just managed to shave off about six lines or so because I don't like the
huge introduction and explanation of what MinGW is.  Now that the document
covers Ninja, there's even more reason for _Windows_ users to read it (and
the document even got a bit simpler).

You might ask: Why not just make a generic document and patch it up to
support Windows as well as Unices?  Well, you guys keep making all sorts
of, IMHO, undesirable assumptions regarding your potential userbase.  That
somebody in CS201 wants to try out LLVM or perhaps more likely Clang does
not mean that they have a Ph. D. in converting Unix commands into Windows
commands.  I simply don't understand your often repeated assumption that
"any user of LLVM knows this and that (and probably has a beard according
to many articles on how gurus look) and therefore we don't need to cater to
the less experienced".    That attitude strikes ME as arrogant.  Because it
makes life very complicated for those newbies that are just out to look and
learn.  And there are many pitfalls on the Windows path because Clang++
does not support the Microsoft C++ ABI and the MinGW64 C++ ABI: This was
nowhere documented before, now it is documented together with an
easy-to-use guide for how to build and use Clang on Windows.

One guy recently called LLVM an advanced, multi-backend, optimizing
assembler language.  There are even today newbies who throw themselves at
coding in assembly, so why not code in LLVM IR?  The potential for LLVM is,
in my mind, much bigger than just 17 research dudes and five corporations.

Another angle is that most guys interested in Computer Science go through a
period of their life where they want to know everything about how compilers
(usually not linkers) work.  So they want to study some source code and see
how things are done.  I'd like to wager that Clang is probably one of the
best authored compilers out there.  So why not make it easy for people to
get going on their studies of Clang?  I don't mean to offend anyone, but I
don't personally think that the GNU compilers are overly much worth
studying.  I myself contemplated adding a new frontend to the GNU compiler
suite, for my own language, but ended up dropping the idea because I found
it to be too difficult and too complex for my taste (I am allergic to
structured programming).

A third angle is that 80 percent of Windows users are breathing Windows and
have never known anything but Windows.  They don't know what Linux is.
 Literally.  They much less know what Unix is.  The word Linux they may
have heard here and there, but they don't know what it means.  And yet,
some of these Linux/Unix ignorant people are great thinkers with great
brains that can provide great assistance to the project if only they get a
little helping hand in the beginning.

You cannot reasonably assume that any and all potential users of LLVM and
especially Clang are willing to play around for two or three days with the
various combinations of tools and settings to get something to work.
 Windows users are perhaps a bit spoiled, but on Windows, people normally
get a binary release that works straight out of the box without additional
downloads.  Compare that to two or three days of experimentation and you
see why I am so intent on making LLVM and especially Clang EASY to get to
work (I have not given up making a binary distribution of Clang).

I know I am probably being perceived as a arrogant, lunatic n00b, but all I
want is to make Clang READILY available to as many Windows users as
possible.  I have at least two reasons for this:

   1. I want the Windows support in LLVM (and to some extent Clang) to be
100 percent mature as I need it myself for a project I am working on.
 Since I don't code on LLVM/Clang myself, I have to find others to do it.
   2. I think the Windows platform has too few options with respect to
compiling your C and C++ programs.  MSVS is expensive.  MSVS Express is a
joke (IMHO).  OpenWatcom is, I suspect, slowly dying (this used to be my
favorite compiler throughout the past 19 years!).  And GCC has a somewhat
unsettling track record of broken features.

I hope this makes my actions and intentions more understandable :-)  Also,
please remember that MinGW32 has been downloaded more than a million times.
 Why aren't millions downloading Clang for Windows?

But all that stuff being said, please don't hesitate to criticize my
documents.  I know they are not perfect.  They will never be perfect.  But
the more feedback I get, the closer to perfect they'll hopefully become.

Try checking out this latest version of the "Building using MinGW on
Windows" document.  It is reStructured Text and therefore requires
Python+Sphinx to be installed.  I've attached it.  It is not a formal
release, it is intended only for those worrying that I am duplicating too
much or writing too much text.


Cheers,
Mikael
-- Disclaimer: I am not arrogant in real life, so if you perceive me as
being arrogant, there's a communications problem somewhere.


2012/6/18 Óscar Fuentes <ofv at wanadoo.es>

> Mikael Lyngvig <mikael at lyngvig.org> writes:
>
> [snip]
>
> > Yes, I am quite familiar with the CMake documentation, but why are you
> > asking?
>
> That's not the cmake documentation, that's the LLVM cmake documentation:
> a short document that tries to explain everything you need to know about
> cmake to build LLVM. I had the impression that you were duplicating a
> large chunk of the info contained on that page. OTOH it's my personal
> opinion that you may be explaining too much: it is not necessary to
> explain, nor even mention, the different available build tools on
> Windows. As LLVM and Clang are developer tools, one can suppose that the
> user knows how to run a build. IMHO you only need to explain the bits
> that are specific to LLVM. As cmake might not be popular enough yet, a
> bit of an introduction is needed, but no more.
>
> I haven't thoroughly read your proposed documentation, sorry if my
> opinions are off-base.
>
> [snip]
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120618/65bd8416/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Building with MinGW on Windows.rst
Type: application/octet-stream
Size: 18608 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120618/65bd8416/attachment.obj>


More information about the llvm-dev mailing list