axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] binary naming scheme


From: daly
Subject: [Axiom-developer] binary naming scheme
Date: Mon, 25 Jun 2007 16:09:06 -0500

There are 4 primary directories: src, int, obj, and mnt.
They can be located anywhere (including out of source builds)

The int directory contains system-independent, machine-generated code.
The obj directory contains system-dependent, machine-generated code.
The mnt directory contains the final ship tree. All else can be removed.

The obj and mnt directories contain a subdirectory that specifies the
system target. This target name is taken from the basename of the AXIOM
variable. Thus
   AXIOM=`pwd`/mnt/linux
creates
    obj/linux
    mnt/linux

but
   AXIOM=`pwd`/mnt/fedora5
creates
   obj/fedora5
   mnt/fedora5

Thus you can build for multiple target machines using the same src and int
subdirectories. The usual path was to use NFS to cross-mount the sources
and then use make to build on the target machine. Using this method it is
possible to build on multiple machines with different architecture in parallel.
This was heavily used when builds took 3 weeks.

The basename (linux, fedora5, whatever) selects a chunk out of the top
level Makefile.pamphlet. That chunk is used to create Makefile.whatever
which directs the build per architecture. Thus
   AXIOM=`pwd`/mnt/linux
selects and creates
   Makefile -> 
     Makefile.pamphlet (select linux chunk) -> 
       Makefile.linux

and
  AXIOM=`pwd`/mnt/fedora5
selects and creates
   Makefile -> 
     Makefile.pamphlet (select fedora5 chunk) -> 
       Makefile.fedora5

You can follow this scheme to create compiler-name-version-os-arch
   AXIOM=`pwd`/mnt/compiler-name-version-os-arch
which selects the chunk and creates the makefile:
   Makefile -> 
     Makefile.pamphlet (select compiler-name-version-os-arch chunk) -> 
       Makefile.compiler-name-version-os-arch
which creates the directories:
   int
   obj/compiler-name-version-os-arch
   mnt/compiler-name-version-os-arch
where 
   obj/compiler-name-version-os-arch contains machine-generated binaries
   mnt/compiler-name-version-os-arch contains a ship image for that arch

Tim




reply via email to

[Prev in Thread] Current Thread [Next in Thread]