Config files ------------ All the config files live in the arch subdirectory. The config file for a particular subarch is constructed by concatenating the following files (any of them can be missing): arch/config.common - architecture-independent config file arch//config.common - subarch-independent config file for a particular architecture arch//config. - subarch-specific config file. arch//config.default - the arch-specific config file used to build the kernel-headers. It is possible to avoid the inclusion of the arch-independent config file (handy for the transitional period) by setting the include_common_config variable to 'no' in arch//Makefile.inc. Control file ------------ The master control file debian/control must be generated before the package is uploaded. debian/rules contains the debian/control target, which generates the control file by concatenating the common debian/control.in and all the arch//control.in files, and performing the variable substitution. Currently the following variables are going to be substituted: @karch@ Replaced by the architecture string, identical to DEB_HOST_ARCH, as returned by dpkg-architecture. @version@ Upstream kernel version, for example 2.6.11. @ktver@ Minor version of kernel-tree to build-depend on. @abiname@ Abiname value for this set of packages. @kbpkg@ Current name and version of the kernel-build package to build-depend on. Typical value may be 'kernel-build-2.6-3', for example. After variable substitution the resulting file is formatted to ensure that the only blank lines are the ones separating the entries (i.e. before the next Package: line). Makefile.inc ------------ Each architecture subdirectory in arch may contain a Makefile.inc file, which is included by debian/rules after definining all the variables. It may be used to override the standard variables on per-architecture basis and other evil things. So far the valid uses of this file include the setting of the following variables: include_common_config Setting it to 'no' will prevent the common kernel config from being included for this particular architecture. Typical usage: include_common_config := no headers_dirs This variable is substituted into the headers-install script, controlling which asm-* directories are included into the kernel-headers package. By default it is set to karch (see above). See header-install.in file for detail. Typical usage: headers_dirs := sparc | sparc64 headers_subarch The subarch to pass to the --subarch option for the make-kpkg call to build the kernel-headers. Typical usage: headers_subarch := sparc64 added_patches Setting this variable to non-empty value will cause an option --added_patches to be added to the make-kpkg 'build' and 'kernel-image' calls. The value of the variable will be given as an argument for the --added-patchs option. The value of this variable may contain a special string @uver@ which is going to be expanded into the upstream kernel's version with dots replaced by underscores (for example, 2_6_11 for the kernel version 2.6.11). Typical usage: added_patches := debian,hppa-@uver@ build_subarch Setting this variable to non-empty value will cause an option --subarch to be added to 'build' and 'kernel-image' make-kpkg calls, followed by the flavour for which the kernel is built. In general, if you wish to add subarch support for your architecture, you should contact kernel-package maintainer to ensure that the flavour name correctly maps onto a kernel subarch name. Currently only mips and sparc are using this facility, and both of them should be fine. Typical usage: build_subarch := yes Note that the value of this variable is ignored. build_makeflags This variable may contain the make flags settings for the make-kpkg invocation in the 'build' target. Currently it is only used by amd64, where it should be set to something like build_makeflags := 'CC=amd64-linux-gcc V=1' The value of the variable must be properly quoted.