kBuild Quick Reference
This is an attempt at summarizing the magic of kBuild makefiles.
Note! This is work in progress and very very incomplete at the moment.
The anatomy of a kBuild Makefile
A typical makefile:
# $Id: QuickReference-kBuild.txt 2345 2009-04-19 23:47:42Z bird $
## @file
# Makefile description.
#
#
# Copyright (c) year name
# License, disclaimer and other legal text.
#
SUB_DEPTH = ../..
include $(KBUILD_PATH)/subheader.kmk
#
# Include sub-makefiles.
#
include $(PATH_CURRENT)/subdir1/Makefile.kmk
include $(PATH_CURRENT)/subdir2/Makefile.kmk
#
# Global variables.
#
MYPREFIX_SOMETHING = or another
#
# Target lists.
#
DLLS += mydll
PROGRAMS += myprogs
#
# mydll - description.
#
mydll_TEMPLATE = MYDLL
mydll_SOURCES = mydll.c
mydll_SOURCES.win = $(mydll_0_OUTDIR)/mydll.def
#
# myprog - description.
#
myprog_TEMPLATE = MYPROG
myprog_SOURCES = myprog.c
#
# Custom rules (optional of course).
#
$$(mydll_0_OUTDIR)/mydll.def:
$(APPEND) -t $@ LIBRARY mydll.dll
$(APPEND) $@ EXPORTS
$(APPEND) $@ ' myfunction'
include $(FILE_KBUILD_SUB_FOOTER)
Target lists
| # | Name | Description |
|---|---|---|
| 1 | BLDPROGS | Build programs, targets the host platform. |
| 2 | LIBRARIES | Libraries (not shared). |
| 3 | IMPORT_LIBS | Import libraries or stub shared libraries. |
| 4 | DLLS | DLLs, Shared Libraries, DYLIBs, etc. |
| 5 | PROGRAMS | Executable programs. |
| 6 | SYSMODS | System modules (kexts, kernel modules, drivers, etc). |
| 7 | MISCBINS | Miscellanceous binaries like BIOS images and such. |
| 8 | INSTALLS | Things to install. [1] |
| 9 | FETCHES | Things to fetch. [1] |
| a | OTHERS | List of targets made during the others pass. |
Target properties
The first column indicates the kind of property, S=Single, D=Deferred, Ar=Accumlate-Right and Al=Accumulate-Left.
The third column should be cross referenced with the first column in the target list table above.
| K | Name | Which | Description |
|---|---|---|---|
| S | ARLIBSUFF | 2 | |
| S | ARTOOL | 2 | |
| S | ASOBJSUFF | 1-7 | |
| S | ASTOOL | 1-7 | |
| S | BINSUFF | 7 | |
| S | BLD_TRG | 1-7 | |
| S | BLD_TRG_ARCH | 1-7 | |
| S | BLD_TRG_CPU | 1-7 | |
| S | BLD_TYPE | 1-7 | |
| S | COBJSUFF | 1-7 | |
| S | CTOOL | 1-7 | |
| S | CXXOBJSUFF | 1-7 | |
| S | CXXTOOL | 1-7 | |
| S | DLLSUFF | 34 | |
| S | EXESUFF | 15 | |
| S | FETCHDIR | 9 | |
| S | FETCHTOOL | 9 | |
| S | GID | 1-7 | |
| S | INST | 1-9 | |
| S | LDTOOL | 13-7 | |
| S | LIBSUFF | 234 | |
| S | MODE | 1-7 | |
| S | NOINST | 1-8 | |
| S | OBJCOBJSUFF | 1-7 | |
| S | OBJCTOOL | 1-7 | |
| S | OBJSUFF | 1-7 | |
| S | PATCHTOOL | 9 | |
| S | RCOBJSUFF | 1-7 | |
| S | RCTOOL | 1-7 | |
| S | SYSSUFF | 6 | |
| S | TEMPLATE | 1-9 | |
| S | TOOL | 1-9 | |
| S | UID | 1-7 | |
| S | UNPACKTOOL | 9 | |
| D | INSTALLER | 1-8 | |
| D | INSTFUN | 1-8 | |
| D | NAME | 1-7 | |
| D | POST_CMDS | 1-7 | |
| D | PRE_CMDS | 1-7 | |
| D | SONAME | 13-7 | |
| Ar | ARFLAGS | 2 | |
| Ar | ASDEFS | 1-7 | |
| Ar | ASFLAGS | 1-7 | |
| Ar | CDEFS | 1-7 | |
| Ar | CFLAGS | 1-7 | |
| Ar | CXXDEFS | 1-7 | |
| Ar | CXXFLAGS | 1-7 | |
| Ar | DEFS | 1-7 | |
| Ar | DEPS | 1-8 | |
| Ar | FETCHFLAGS | 9 | |
| Ar | IDFLAGS | 1-7 | |
| Ar | IFDLAGS | 1-7 | |
| Ar | ISFLAGS | 1-7 | |
| Ar | LDFLAGS | 13-7 | |
| Ar | LNK_DEPS | 1-7 | |
| Ar | LNK_ORDERDEPS | 1-7 | |
| Ar | OBJCDEFS | 1-7 | |
| Ar | OBJCFLAGS | 1-7 | |
| Ar | ORDERDEPS | 1-8 | |
| Ar | PATCHFLAGS | 9 | |
| Ar | RCDEFS | 1-7 | |
| Ar | RCFLAGS | 1-7 | |
| Ar | UNPACKFLAGS | 9 | |
| Al | ASINCS | 1-7 | |
| Al | BLDDIRS | 1-7 | |
| Al | CINCS | 1-7 | |
| Al | CLEAN | 1-9 | |
| Al | CXXINCS | 1-7 | |
| Al | DIRS | 8 | |
| Al | INCS | 1-7 | |
| Al | INTERMEDIATES | 1-7 | |
| Al | LIBPATH | 13-7 | |
| Al | LIBS | 13-7 | |
| Al | OBJCINCS | 1-7 | |
| Al | RCINCS | 1-7 | |
| Al | SDKS | 1-7 | |
| Al | SOURCES | 1-9 | |
| Al | SRC_HANDLERS | 1-7 | |
| Al | USES | 1-7 |
| [1] | (1, 2) Normally not one of the default passes. |
| Status: | $Id: QuickReference-kBuild.txt 2345 2009-04-19 23:47:42Z bird $ |
|---|---|
| Copyright: | Copyright (c) 2009 knut st. osmundsen |
Last modified
17 years ago
Last modified on Apr 20, 2009, 1:49:11 AM
Note:
See TracWiki
for help on using the wiki.
