Annotation of XNU/readme, revision 1.1.1.1

1.1       root        1: How to build XNU:
                      2: 
                      3: 1. Install Beaker build environment:
                      4: 
                      5:  Install the DeveloperLibs, DeveloperTools, Local, and LocalLibs 
                      6:  packages onto a Hera system from:
                      7: 
                      8:   /Net/osbuild/release/<latest Beaker>/System/Installation/Packages
                      9: 
                     10: IMPORTANT!!!!
                     11: 
                     12:        CHANGE THE DEFAULT INSTALL DIRECTORY TO /Local/Public/MacOSX
                     13: 
                     14: IF YOU DON'T DO THIS, YOU WILL NEED TO REINSTALL YOUR HERA SYSTEM!
                     15: 
                     16: When installing directly on Beaker, you do not need to do this.
                     17: 
                     18: 2. Build Setup:
                     19: 
                     20: 2.a. Setup your environment:
                     21: 
                     22:   Create and go  to your sandbox directory </sandbox/my_xnu>
                     23: 
                     24:   $ cd </sandbox/my_xnu>
                     25: 
                     26:   Extract the xnu project from cvs:
                     27: 
                     28:   $ cvs co -r<xnu-tag> xnu
                     29: 
                     30:   where <xnu-tag> must be replaced by the matching xnu tag for
                     31:   the xnu project level.
                     32: 
                     33:   Go to the top directory in your XNU project.
                     34: 
                     35:   $ cd </sandbox/my_xnu>/xnu
                     36: 
                     37:   If you are running with sh, run the following command:
                     38:     $ . SETUP/setup.sh
                     39: 
                     40:   If you are running with csh, run the following command:
                     41:     % source SETUP/setup.csh
                     42: 
                     43:   This will define  NEXT_ROOT , DSTROOT, OBJROOT, SRCROOT, SYMROOT.
                     44: 
                     45: 2.b. Populate OBJROOT (Optional):
                     46: 
                     47:   Create a symlink in the root of your development and debug machines as 
                     48:   follows:
                     49: 
                     50:   $ su
                     51:   # ln -s /Network/Servers/humpty/Prebuilt /Prebuilt
                     52: 
                     53:   $ ./SETUP/seed_objroot <xnu-tag> [RELEASE,DEBUG]_[PPC,I366]
                     54: 
                     55: or
                     56: 
                     57:   $ ./SETUP/seed_objroot <xnu-tag>
                     58: 
                     59:   seed_objroot populates the OBJROOT with a prebuilt OBJROOT. The 
                     60:   second argument specifies the configuration (RELEASE_PPC, DEBUG_PPC, etc).
                     61:   If no configuration is specified, all the configurations will
                     62:   be populated.
                     63: 
                     64:   You can also use it to duplicate an OBJROOT by setting PREBUILT_OBJROOT 
                     65:   in your shell environment with your own OBJROOT reference (xnu-tag is
                     66:   ignored then).
                     67: 
                     68: 3. Export the Component Header Files
                     69: 
                     70:   From the top directory, run:
                     71: 
                     72:   $ make exporthdrs
                     73: 
                     74:   This exports the component header files in the $OBJROOT/EXPORT_HDRS 
                     75:   directory.
                     76: 
                     77: 4. Build all the Components
                     78: 
                     79:   From the top directory. run:
                     80: 
                     81:   $ make all
                     82: 
                     83:   This builds all the components for all architectures defined in 
                     84:   ARCH_CONFIGS and for all kernel configurations defined in KERNEL_CONFIGS.
                     85:   By default, ARCH_CONFIGS contains one architecture, the build machine 
                     86:   architecture, and KERNEL_CONFIGS is set to build for RELEASE.
                     87:   This will also create a bootable image, mach_kernel,  and a kernel binary 
                     88:   with symbols, mach_kernel.sys.
                     89: 
                     90:   Example:
                     91:     $(OBJROOT)/RELEASE_PPC/osfmk/RELEASE/osfmk.o: pre-linked object for osfmk component
                     92:     $(OBJROOT)/RELEASE_PPC/mach_kernel: bootable image
                     93: 
                     94: 5. Building a Component
                     95: 
                     96:   From a component top directory:
                     97: 
                     98:     $make all
                     99: 
                    100:   This builds a component for all architectures defined in ARCH_CONFIGS 
                    101:   and for all kernel configurations defined in KERNEL_CONFIGS. 
                    102:   By default, ARCH_CONFIGS contains one architecture, the build machine 
                    103:   architecture, and KERNEL_CONFIGS is set to build for RELEASE .
                    104: 
                    105:   WARNING: If a component header file has been modified, you will have to do 
                    106:            the above procedures 3 and 4.
                    107: 
                    108:   Example:
                    109:     $(OBJROOT)/RELEASE_PPC/osfmk/RELEASE/osfmk.o: pre-linked object for osfmk component
                    110: 
                    111:   From the component top directory:
                    112: 
                    113:     $make mach_kernel
                    114: 
                    115:   This includes your component in the bootable image, mach_kernel,  and 
                    116:   in the kernel binary with symbols, mach_kernel.sys.
                    117: 
                    118: 6. Building DEBUG
                    119: 
                    120:   Define KERNEL_CONFIGS to DEBUG in your environment or when running a 
                    121:   make command.  Then, apply procedures 4, 5
                    122: 
                    123:   $ make KERNEL_CONFIGS=DEBUG all
                    124: 
                    125:   or
                    126: 
                    127:   $ export KERNEL_CONFIGS=DEBUG
                    128:   $ make all
                    129: 
                    130:   Example:
                    131:     $(OBJROOT)/DEBUG_PPC/osfmk/DEBUG/osfmk.o: pre-linked object for osfmk component
                    132:     $(OBJROOT)/DEBUG_PPC/mach_kernel: bootable image
                    133: 
                    134: 6. Building fat
                    135: 
                    136:   Define ARCH_CONFIGS in your environment or when running a make command.
                    137:   Apply procedures 3, 4, 5
                    138: 
                    139:   $ make ARCH_CONFIGS="PPC I386" exporthdrs all
                    140: 
                    141:   or
                    142: 
                    143:   $ export ARCH_CONFIGS="PPC I386"
                    144:   $ make exporthdrs all
                    145: 
                    146:   Optionally you may do the following and your NEXTROOT will be set to
                    147:     /Local/Public/MacOSX automaticly.
                    148: 
                    149:     $ ~rc/bin/buildit . -arch ppc -arch i386 -noinstallsrc -nosum \
                    150:                        -release Beaker
                    151: 
                    152: 7. Build check before integration
                    153: 
                    154:   Set NEXT_ROOT to /Local/Public/MacOSX (Default path for Mac OS X SDK)
                    155: 
                    156:   From the top directory, run:
                    157: 
                    158:     $ ~rc/bin/buildit . -arch ppc -arch i386 -noinstallsrc -nosum
                    159: 
                    160: 8. Creating tags and cscope
                    161: 
                    162:   Set up your build environment as per instructions in 2.a
                    163: 
                    164:   From the top directory, run:
                    165: 
                    166:     $ make tags                # this will build ctags and etags
                    167: 
                    168:     $ make cscope      # this will build cscope database
                    169: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.