machine/platform separation

Matthew Dillon dillon at apollo.backplane.com
Mon Jan 15 15:42:32 PST 2007


:so, what is
:
:cpu
:machine
:arch
:machine_arch
:platform
:
:and how do they relate?
:
:cheers
:  simon

    I'm still trying to figure that out after a decade.  There is an
    explanation in /usr/src/Makefile.inc1, around line 158.  Suffice it
    to say that the names chosen a very long time ago created mass
    confusion which persists today.

    We should probably rename them to BUILD_CPU, BUILD_MACHINE, and add
    BUILD_PLATFORM, then have TARGET_CPU, TARGET_MACHINE, and TARGET_PLATFORM
    for cross building.

    The problem is compounded by the fact that the make program (all make
    programs) are supposed to pre-define MACHINE and MACHINE_ARCH, so
    the make program also has to define MACHINE (== BUILD_MACHINE) and
    MACHINE_ARCH (== BUILD_CPU).

    Fun isn't it?

    OLD			NEW

    MACHINE_ARCH	BUILD_CPU	i386	cpu architecture
    MACHINE		BUILD_MACHINE	i386	machine ABI
    			BUILD_PLATFORM	pc32	platform build

			MACHINE_ARCH	(== BUILD_CPU) 	   (third party compat)
			MACHINE		(== BUILD_MACHINE) (third party compat)


    For our own purposes, our build system would be based on BUILD_CPU and
    BUILD_PLATFORM and ignore BUILD_MACHINE for this release.  Our kernel
    config files would have 'platform', 'machine', and 'cpu_arch' 
    specifications (instead of the 'machine' and 'machine_arch' it uses now).
    I would use 'cpu' but it is already used to specify particular cpu
    hardware support.

    So, e.g. the VKERNEL config file would have:

	cpu_arch	i386
	machine		i386
	platform	vkernel

    And all of our standard config files would have:

	cpu_arch	i386
	machine		i386
	platform	pc32

					-Matt






More information about the Kernel mailing list