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