Each directory in the source-tree has a distinct task, i.e. each directory builds special kinds of targets. This distinct task is expressed by a role, where role is one of the following:
subdir: | be a container for other directories and recursively build them | ||
prog: | build executable binaries | ||
lib: | build libraries | ||
idl: | translate IDL definitions into code | ||
include: | hold include-files which have to be installed | ||
doc: | build documentation for the package | ||
ptest: | test the package using Fiasco-UX |
To define the role of a directory, the Makefile of that directory has to include an according Makefile-include, the role-file. The role-files are templates that define rules and variables to build the proper targets. Make-variables are used to control the behaviour of the role-files. Each Makefile must include exactly one role-file.
To define the role of a directory, use the following code in your Makefile:
subdir: | include $(L4DIR)/mk/subdir.mk | ||
prog: | include $(L4DIR)/mk/prog.mk | ||
lib: | include $(L4DIR)/mk/lib.mk | ||
idl: | include $(L4DIR)/mk/idl.mk | ||
include: | include $(L4DIR)/mk/include.mk | ||
doc: | include $(L4DIR)/mk/doc.mk | ||
ptest: | include $(L4DIR)/mk/runux.mk |