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. 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. header_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). For sparc, for example, if will have to be set to 'sparc | sparc64' for the correct packages to be generated. See headers-install file for details. arch_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 arch_makeflags = 'CC=amd64-linux-gcc V=1" added_patches Setting this variable to non-empty value will cause an option --added_patches to be added to the make-kpkg call in 'build' target, followed by the contents of this variable. Currently hppa is using it and it looks like ia64 have used it before. arch_with_subarch Setting this variable to non-empty value will cause an option --subarch to be added to make-kpkg call in 'build' target, followed by the flavour for which the kernel is built. NOTE that the contents of this variable are completely ignored, any non-empty value indicates that --subarch option should be added. 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.