Current Build System
- step1 - installation of makefiles
- Creates sed command substitution script for tailoring of system build tools used - do we need it? Probably not.
- Builds/installs kinstall/knewest
- kinstall - copies files across with directory creation
- knewest - makes all files have timestamp of newest
- only used by kitchsrc/lib/libc/cobj
- want to remove need for this!!!
- Installs Makefiles from kitchsrc/lib to install/lib
- why do we need this? The files are simply copies of what is in the kitchsrc tree
- this was the result of an abortive attempt to separate the tools build from the main build, doesn't seem like the right way to do it though
- why do we need this? The files are simply copies of what is in the kitchsrc tree
- step2 - configure sesame (generates Make.config in each directory)
- also does configure_sesame in tools directory
- Make.config defines MKANCHOR, MKKITCHTOP, MKSRCTOP, _CWD and HAVE_OBJINFO
- Make.config is marked phony, but isn't
- step3 - install includes (gather include headers into "install")
- recurse through SUBDIRS invoking install_includes
- type of header files included:
- arch specific
- others
- type of header files included:
- why do we need this stage at all? No transformations applied to files
- recurse through SUBDIRS invoking install_includes
- step4 - install tools (build tools (compile and install))
- recurse into tools directory, install_includes, install_targets
- installs
- site configuration information
- hardware related tools
- development tools (eg templates for new files, nextErrNumber)
- runtime tools
- build config (eg gcc.specs)
- step4b - install kitchroot
- make in os (kfs file system) (install_images target)
- make in kitch-linux/pkgs (install_images target) (creates kitchroot directory structure)
- step5
- install genhrdr (generate stub headers)
- generates and installs:
stub/StubFoo.H meta/MetaFoo.H meta/TplMetaFoo.H xobj/XFoo.H xobj/TplXFoo.H tmpl/TplXFoo.H
from $(CLASSES) and $(SERVE) accordingly
- generates and installs:
- install libobjs (build/install libraries)
using the install_libobjs_stamps target, depends on BASE_STAMP, NATV_STAMP, EMU_STAMP, FS_STAMP, VFS_STAMP, LK_STAMP, SRV_STAMP, KERN_STAMP
create LIB_X (eg LIB_FS = $(LIBDIR)/libfs.a), using LIBXOBJS (eg LIBFSOBJS)
- kernobjs.INPUT
text built file of LIBKERNOBJS + contents of subdirs' kernobjs.INPUT
- doesn't seem to be used?
- rules repeated in os/kernel/Makefile?
- build 'static_libs' and 'dynlinker' targets (dependents of post_install_libobjs)
- static libs:
- creates .contents files from any .stamp files found in subdirs
bundles (ar) objs listed in .contents files
- dynlinker
makes dynlinker in $(TARGET_MACHINE)/$(OPTIMIZATION)/lib
- static libs:
- install targets (install target programs)
uses $(TARGETS) as list of targets for this step (eg kernel boot image)
- install_targets is called much eariler for the tools/ subdirectory
- install genhrdr (generate stub headers)
