[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