Include Makefile.subarch which somehow got
left out. svn path=/branches/kernel-image-2.6.11/; revision=3250
This commit is contained in:
parent
f4d08c6ed3
commit
ab5323a4cc
|
@ -0,0 +1,225 @@
|
|||
#
|
||||
# This Makefile executes the unpack/build/binary targets for a single
|
||||
# subarch, which is passed in the subarch variable. Empty subarch
|
||||
# variable means that we are building for an arch without the subarch.
|
||||
# Additionally, variables version, abiname and ktver are
|
||||
# expected to be available (need to be exported from the parent process).
|
||||
# It is possible to override the flavours by setting the flavours
|
||||
# variable.
|
||||
#
|
||||
# This Makefile is run from the debian subdir
|
||||
#
|
||||
SHELL := sh -e
|
||||
debver := $(version)-$(abiname)
|
||||
uver := $(subst .,_,$(version))
|
||||
debnum := -$(abiname)
|
||||
kbpkg := kernel-kbuild-$(version)-$(abiname)
|
||||
# This will eventually have to be changed to a command, applying
|
||||
# the debian's patches from the local tree (arch/patches?)
|
||||
kpatch := /usr/src/kernel-patches/all/$(version)/apply/debian $(version)-$(ktver)
|
||||
DEBIAN_UPSTREAM_VERSION := $(version)
|
||||
ifeq (,$(DEB_HOST_ARCH))
|
||||
DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
|
||||
DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
|
||||
endif
|
||||
export version debnum DEBIAN_UPSTREAM_VERSION
|
||||
|
||||
karch := $(DEB_HOST_ARCH)
|
||||
#
|
||||
# Build the list of common config files to be included
|
||||
#
|
||||
ifeq ($(subarch),none)
|
||||
basedir := arch/$(karch)
|
||||
append :=
|
||||
else
|
||||
basedir := arch/$(karch)/$(subarch)
|
||||
append := -$(subarch)
|
||||
endif
|
||||
default := $(basedir)/config.default
|
||||
configs := $(notdir $(wildcard $(basedir)/config.*))
|
||||
configs := $(filter-out config.common config.default, $(configs))
|
||||
tkdir := kernel-source-$(version)
|
||||
kdir := kernel-source-$(version)-$(subarch)
|
||||
ifndef flavours
|
||||
flavours := $(patsubst config.%,%,$(configs))
|
||||
endif
|
||||
|
||||
-include $(basedir)/Makefile.inc
|
||||
|
||||
#
|
||||
# Here we construct the command lines for different make-kpkg
|
||||
# calls (build, kernel-image, kernel-headers) based on the values
|
||||
# of variables defined so far and provided by the arch/subarch
|
||||
# in Makefile.inc. @flavour@ in the expressions is going to be
|
||||
# replaced by the flavour for which the command is run.
|
||||
#
|
||||
kpkg_headers_cmd := HEADER_CLEAN_HOOK='$(CURDIR)/header-install-$(subarch)'
|
||||
kpkg_headers_cmd += make-kpkg --append-to-version $(debnum)$(append)
|
||||
kpkg_build_cmd := make-kpkg --append-to-version $(debnum)-@flavour@
|
||||
ifdef added_patches
|
||||
kpkg_headers_cmd += --added_patches $(subst @uver@,$(uver),$(added_patches))
|
||||
kpkg_build_cmd += --added_patches $(subst @uver@,$(uver),$(added_patches))
|
||||
endif
|
||||
ifdef build_subarch
|
||||
kpkg_build_cmd += --subarch $(build_subarch)
|
||||
endif
|
||||
ifdef headers_subarch
|
||||
kpkg_headers_cmd += --subarch $(headers_subarch)
|
||||
endif
|
||||
ifdef build_makeflags
|
||||
kpkg_build_cmd := MAKEFLAGS=$(build_makeflags) $(kpkg_build_cmd)
|
||||
endif
|
||||
#
|
||||
# Note that next variable (kpkg_image_pre) is not going to be evaluated
|
||||
# immediately. When referenced, the variable $* will have the current
|
||||
# flavour for which the command is executed. So if this flavour will
|
||||
# happen to be in the image_prefix_flavours list, the call to make-kpkg
|
||||
# will be prepended with contents if image_prefix.
|
||||
#
|
||||
kpkg_image_pre = $(if $(filter $*,$(image_prefix_flavours)),$(image_prefix))
|
||||
kpkg_image_cmd := $(kpkg_build_cmd) --initrd kernel_image
|
||||
kpkg_build_cmd += build
|
||||
kpkg_headers_cmd += kernel-headers
|
||||
ifndef headers_dirs
|
||||
headers_dirs = $(karch)
|
||||
endif
|
||||
ifneq (no,$(include_common_config))
|
||||
ccommon := arch/config.common
|
||||
endif
|
||||
ccommon += arch/$(karch)/config.common arch/$(karch)/$(subarch)/config.common
|
||||
#
|
||||
# Here we build lists of directories and stamps which we will depend on.
|
||||
# For each class of such targets there is a pattern rule which will catch
|
||||
# it and do the right thing.
|
||||
#
|
||||
bdirs := $(addprefix build-$(subarch)-, $(flavours))
|
||||
bstamps := $(addprefix build-stamp-$(subarch)-, $(flavours))
|
||||
istamps := $(addprefix install-stamp-$(subarch)-, $(flavours))
|
||||
#
|
||||
# Targets
|
||||
#
|
||||
unpack: unpack-stamp-$(subarch)
|
||||
unpack-stamp-$(subarch): $(configs) header-install-$(subarch) $(bdirs)
|
||||
touch unpack-stamp-$(subarch)
|
||||
|
||||
build: build-stamp-$(subarch)
|
||||
build-stamp-$(subarch): unpack-stamp-$(subarch) $(bstamps)
|
||||
touch build-stamp-$(subarch)
|
||||
|
||||
binary-indep: build
|
||||
binary-arch: build headers-stamp $(istamps)
|
||||
mv *.deb ../..
|
||||
|
||||
install-stamp-$(subarch)-%: build-$(subarch)-% build-stamp-$(subarch)-%
|
||||
cp -al $< install-$*;
|
||||
cd install-$*; \
|
||||
$(strip $(kpkg_image_pre) $(subst @flavour@,$*,$(kpkg_image_cmd)))
|
||||
cat install-$*/debian/files >> files;
|
||||
rm -rf install-$*;
|
||||
touch install-stamp-$(subarch)-$*
|
||||
|
||||
headers-stamp: $(kdir)
|
||||
dh_testdir
|
||||
dh_clean -k
|
||||
dh_installdirs
|
||||
cp $(default) $(kdir)/.config
|
||||
cd $(kdir); $(kpkg_headers_cmd)
|
||||
cat $(kdir)/debian/files >> files
|
||||
touch headers-stamp
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
|
||||
header-install-$(subarch): templates/header-install.in
|
||||
sed -e 's,@kbpkg@,$(kbpkg),g' \
|
||||
-e 's,@ksource_dir@,$(CURDIR)/$(kdir),g' \
|
||||
-e 's,@headers_dirs@,$(headers_dirs),g' \
|
||||
-e 's,@headers_extra@,$(headers_extra),g' \
|
||||
templates/header-install.in > header-install-$(subarch)
|
||||
chmod u+x header-install-$(subarch)
|
||||
#
|
||||
# The way to make the correct package names is to make a
|
||||
# subarch-specific post-install script...
|
||||
#
|
||||
post-install-$(subarch): templates/post-install.in
|
||||
sed -e 's,@initrd_modules@,$(initrd_modules),' \
|
||||
-e 's,@append_subarch@,$(append),' \
|
||||
templates/post-install.in > post-install-$(subarch)
|
||||
#
|
||||
# Generates the kernel config file for a subarch by merging
|
||||
# the arch-independent config file (arch/config.common),
|
||||
# arch-specific config file (arch/$(karch)/config.common),
|
||||
# and subarch specific one (arch/$(karch)/config.subarch).
|
||||
# It is possible to avoid the inclusion of the arch-indep
|
||||
# config file by setting include_common_config = no in the
|
||||
# arch/$(karch)/Makefile.inc.
|
||||
#
|
||||
config.%:
|
||||
@echo "configs=$(configs)"
|
||||
@echo "Generating configuration file $@:"
|
||||
rm -f $@
|
||||
for i in $(ccommon); do \
|
||||
if [ -f $${i} ]; then \
|
||||
cat $${i} >> $@; \
|
||||
fi; \
|
||||
done
|
||||
# Flavour config file must be present
|
||||
cat $(basedir)/$@ >> $@
|
||||
|
||||
$(kdir): post-install-$(subarch)
|
||||
dh_testdir
|
||||
tar jxf /usr/src/$(tkdir).tar.bz2
|
||||
mkdir -p $(tkdir)/debian
|
||||
cp debian/changelog $(tkdir)/debian
|
||||
cp debian/control $(tkdir)/debian
|
||||
cp debian/copyright $(tkdir)/debian
|
||||
touch $(tkdir)/debian/official
|
||||
install post-install-$(subarch) $(tkdir)/debian/post-install
|
||||
cd $(tkdir) && $(kpatch)
|
||||
# Arch/subarch-specific patches
|
||||
if [ -d $(basedir)/patches ] && \
|
||||
[ -s $(basedir)/patches/list ]; then \
|
||||
cd $(tkdir); \
|
||||
for i in $$(cat ../$(basedir)/patches/list); do \
|
||||
patch -p1 < ../$(basedir)/patches/$${i}; \
|
||||
done; \
|
||||
fi
|
||||
mv $(tkdir) $@
|
||||
#
|
||||
# This target performs a build for a particular flavour. Note
|
||||
# that in this file it should be always placed *before* the
|
||||
# build-$(subarch)-% target, which creates the build directory.
|
||||
#
|
||||
# Some arches have extra arch/${ARCH}/kernel/asm-offsets.s files
|
||||
# which have to be included in kernel-headers. The problem is that
|
||||
# they are only generated during build and we never performed a
|
||||
# full build in the directory $(kdir) where kernel-headers are
|
||||
# built. So, after build we check whether current build arch has
|
||||
# such a file and symlink it into the $(kdir) if necessary.
|
||||
# Note that to get into the kernel-headers package the arch/subarch
|
||||
# still needs variables headers_dirs and headers_extra set.
|
||||
#
|
||||
build-stamp-$(subarch)-%: build-$(subarch)-%
|
||||
dh_testdir
|
||||
PATH=$$PWD/bin:$$PATH; \
|
||||
cd $<; \
|
||||
$(subst @flavour@,$*,$(kpkg_build_cmd)); \
|
||||
$(if $(image_postproc),$(image_postproc),true); \
|
||||
arch=$$(basename $$(readlink include/asm)); \
|
||||
arch="$${arch#asm-}"; \
|
||||
src="arch/$${arch}/kernel/asm-offsets.s"; \
|
||||
dst="../$(kdir)/$${src}"; \
|
||||
if [ -f "$${src}" ] && [ ! -e "$${dst}" ]; then \
|
||||
ln -s "$$(pwd)/$${src}" "$${dst}"; \
|
||||
fi
|
||||
touch build-stamp-$(subarch)-$*
|
||||
#
|
||||
# Creates a build directory for a particular flavour
|
||||
#
|
||||
build-$(subarch)-%: $(kdir) config.%
|
||||
dh_testdir
|
||||
if [ ! -d $@ ]; then \
|
||||
cp -al $(kdir) $@; \
|
||||
cp config.$* $@/.config; \
|
||||
fi
|
||||
|
||||
.PHONY: build unpack binary-indep binary-arch binary
|
Loading…
Reference in New Issue