[Vm-dev] Why the hell directives for compiling with clang were not taken into account

K K Subbu kksubbu.ml at gmail.com
Tue Apr 3 17:35:22 UTC 2018


On Tuesday 03 April 2018 08:54 PM, Eliot Miranda wrote:

>> If we don't intend to support all the 100+ variants of
>> GNU/UNIX/Linux out there but only a handful, then manual makefiles
>> are sufficient.
> 
> It's not that we do of do not intend, it's that we simply cannot
> afford to and it is not relevant to our current needs.  We instead
> need to support a much smaller number of operating systems well,
> namely Linux and maybe FreeBSD, although I don't see much energy
> there.  We could keep the old build system for those that want to
> build their own vm on something exotic (although I'd still argue that
> they would do as well working with conventional makefiles).  But it
> is no longer fit for purpose in the continuous integration context we
> now inhabit.

Valid point. The CI pipeline requires a different approach.

>> 
>> GNU Make is available on GNU/Linux/Mac/Win so we could create a
>> single top level Makefile for all three platform builds and let the
>> configure handle other ports.
> 
> Having modified Andreas' makefiles for windows, and having written
> the makefiles for the Mac build I can say that a common top level
> makefiles is not a good idea.  It would be even more of a mess of
> ifdefs.  But certain not following the way nudes and Mac OS schemes
> is sensible.  The important thing is to get rid of the extremely hard
> to modify, slow autoconf based system used for Linux builds.

A top level Makefile does not exclude platform-specific Makefiles, nor 
should it attempt a cross-platform build by itself.

The purpose of top level Makefile is general help, handle version tags, 
possible products and variants etc. It should delegate the actual build 
to platform-specific make. Similar to how we use OSProcess as a facade 
over OSUnixProcess etc.

In fact, I am making one for my own use. Once it stabilizes, I will 
offer a PR.

The downsides to spreading Makefiles into build dirs is explosion of 
directories under version control and duplication of code. It also means 
that I cannot mount build on tmpfs/ramfs. Keeping Makefile templates 
under platform/win32/.. and copying them to build/ as needed will 
simplify version control and avoid duplicate code.

Regards .. Subbu


More information about the Vm-dev mailing list