[LLVMdev] Arm port

Chuck Robey chuckr at telenix.org
Fri May 22 13:37:02 PDT 2009


Samuel Crow wrote:
>> OK, I checked the llvm-2.5 Makefiles.  They have constructs in them which cannot
>> be used in any BSD Makefile (such as the form of conditionals: ifndef is a GNU
>> Makeism), and won't run on any BSD Make.  I know BSD Make and GNU Make well
>> enough, but I doon't know much about Cmake,  I can say that all of the makefiles
>> I saw in llvm would (1) refuse to run on BSD make and (2) make no use whatever
>> of the large set of BSD Make template files that always reside in /usr/share/mk.
>>
>> What I could offer, would be to capture a llvm build as done with the current
>> Makefile setup, and create a set of BSD Makefiles which would work with BSD
>> Makefiles and cooperate with the BSD template Makefiles (such as bsd.prog.mk,
>> bsd.lib.mk, etc).  I think that the only thing that CMake is offering you is
>> that snazzy buildtime clock, but I think that's all.  If you folks felt this
>> would be desireable.  If llvm gets brought into any BSD, it's going to have to
>> be created by the BSD involved, anyhow ... well nearly all, I've seen recently
>> that OpenBSD seems to be making use of outside makefiles in outside sourced
>> things like Perl.  But it would surely need BSD Makefiles for FreeBSD, and I'm
>> pretty sure for NetBSD also.  They're not all that difficult to add in, I could
>> do that for you if you wanted.
>>
> 
> According to an article at OSNews http://osne.ws/gjz Clang (the LLVM's C family frontend) is already being adopted as the C compiler of choice for FreeBSD.  However, one of Clang's design principles is IDE integration.  Makefiles may soon become a thing of the past for LLVM.
> 
> Before CMake was adopted by the LLVM team they were having troubles with maintaining build files for XCode on the Mac, Visual Studio projects for Windows, and GNU Make on Linux.  The idea of adopting CMake was to put the days of maintaning multiple build environments in the past or at least in somebody else's lap.  Reintroducing yet another build environment to LLVM sounds to me like a step backward.  We'll see what the team says about it.
> 
> I think that if you want BSD support for LLVM, working with the CMake
> team to add BSD support to CMake would be the route to go.  It was
> designed from the ground up with cross-platform development in mind. 
> It is much more powerful than any make utility will ever be.  Even
> though LLVM may be only scratching the surface of its functionality,
> that doesn't mean that CMake is merely graphical bells and whistles. 
> It was desgned for parallel processing supercomputer users and ported
> to other platforms from there.  I'm honestly surprised that BSD Unix is still not supported by it.

I *really* hate the idea of getting into yet another discussion about yet
another new make system.  I like (and am imprssed by) you folks here on this
list, you're very polite and knowledgeable, but getting into another flamewar
which really reveals no new arguments is just too distateful for me.  I don't
want to get involved with CMake on any level, beyond running it.  Honestly.  I
*will* state, with full honesty, that every time I've looked at any other new
make environment (where they *ALWAYS* state they are more powerful).  Did you
think that CMake is alone in supporting parallel makes?  Note even close, not
even BSD alone.  I've never seen any features of any import, that BSD Make
doesn't already support.  I'll qualify that by saying that I don't consider the
feature telling you how far the  task has gottten is not something I consider of
any importance, but it's something that, if anyone in BSD considered it
important, it would be not terribly hard to add to to BSD Makefile without
making any change to the BSD Make tool at all, just make an extension to one of
the make tempolate files, then ask for the feature to work, pretty simply.  I
can't see any, *any* at all, features of any build system, that the BSD Make
tool can't already do.  I won't say it *does* do it, because (like that pct done
feature) no one in the BSD community feels it's important enough to do.  I could
myself, without any problem, add such a feature to the BSD templates.

That's one feature, BTW, that I know isn't available in many other make systems
(such as GNU Make), and I'd be curious if it's there in CMake:  the ability to
automatically, transparently, add important features to make, without modifying
the makefiles at all.  BSD Make has the idea of a central directory that holds
make template files.  GMake, while it does allow one to add in include files,
doesn't have the concept of a preset directory.  You have to tell it where to
go, so without telling the Makefile where to go for what, you can't just
transparently add features.  Like the "obj" target in BSD, which is read in from
the bsd.obj.mk template file, from the central directory on any BSD machine of
/usr/share/mk, it adds in special targets, which the user may decide to use.  It
makes writing makefiles for libraries really easy, just bring in the bsd.lib.mk,
whic his always available on any machine that has BSD Make, always in the same
place, and BSD Make doesn't need to  be told where to look, either.  One
template file often calls in another, so you get, when including "bsd.lib.mk" to
build a library, an entire set of helper targets, making constructing libraries
on a BSD system truly easy, and far less likely to have an error.

Someone else has told me "patches are always welcome" in llvm, so I'm going to
act on that and mail them in.  I am not expecting any particular usage, you can
even decide to toss them away, but I am fairly sure that both llvm is going to
be brought into FreeBSD (most often cited reason is inability to live with the
new GPL) AND that the makefiles which drive the build will be BSD Makefiles,
which if they're not available from llvm, they'll be added by the FreeBSD
builders.  Lots more people than I know how to do this.

I suggested adding in BSD Makefiles, because that's what one expects in a
BSD-intended system.  If you don't want them for some reason, that's your
decision, and it won't really cause any BSD OS programmers any huge problems to
add them back in.  It'll surprise the users very little, because they'll already
be added in when, say, a FreeBSD user goes looking for them.  I was offering a
smallish help, because I am impressed by you, that's all.

I just very much dislike the proliferation of all these different make systems,
which only serve to complicate things, and never add any useful new features,
they just make troubleshooting more difficult (for folks who have to become
familiar with yet another different build system).

I probably shouldn't even have said this, but you pushed a hot button, I do hope
you understand.

> 
> 
> 
>       
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list