2005-04-17 02:20:36 +04:00
# Makefile for the different targets used to generate full packages of a kernel
# It uses the generic clean infrastructure of kbuild
# RPM target
# ---------------------------------------------------------------------------
# The rpm target generates two rpm files:
# /usr/src/packages/SRPMS/kernel-2.6.7rc2-1.src.rpm
# /usr/src/packages/RPMS/i386/kernel-2.6.7rc2-1.<arch>.rpm
# The src.rpm files includes all source for the kernel being built
# The <arch>.rpm includes kernel configuration, modules etc.
#
# Process to create the rpm files
# a) clean the kernel
# b) Generate .spec file
# c) Build a tar ball, using symlink to make kernel version
# first entry in the path
# d) and pack the result to a tar.gz file
# e) generate the rpm files, based on kernel.spec
# - Use /. to avoid tar packing just the symlink
2009-08-26 00:15:39 +04:00
# Note that the rpm-pkg target cannot be used with KBUILD_OUTPUT,
# but the binrpm-pkg target can; for some reason O= gets ignored.
2005-04-17 02:20:36 +04:00
# Remove hyphens since they have special meaning in RPM filenames
2011-05-05 00:48:11 +04:00
KERNELPATH := kernel-$( subst -,_,$( KERNELRELEASE) )
2015-09-02 12:57:24 +03:00
KDEB_SOURCENAME ?= linux-$( KERNELRELEASE)
export KDEB_SOURCENAME
2013-04-12 16:12:50 +04:00
# Include only those top-level files that are needed by make, plus the GPL copy
2015-09-02 12:57:08 +03:00
TAR_CONTENT := $( KBUILD_ALLDIRS) .config .scmversion Makefile \
2013-04-12 16:12:50 +04:00
Kbuild Kconfig COPYING $( wildcard localversion*)
2005-04-17 02:20:36 +04:00
MKSPEC := $( srctree) /scripts/package/mkspec
2015-09-02 12:57:08 +03:00
quiet_cmd_src_tar = TAR $( 2) .tar.gz
cmd_src_tar = \
i f t e s t "$(objtree)" ! = "$(srctree)" ; t h e n \
echo "Building source tarball is not possible outside the" ; \
echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the" ; \
echo "binrpm-pkg or bindeb-pkg target instead." ; \
false; \
f i ; \
$( srctree ) / s c r i p t s / s e t l o c a l v e r s i o n - - s a v e - s c m v e r s i o n ; \
l n - s f $( srctree ) $( 2) ; \
t a r - c z $( RCS_TAR_IGNORE ) - f $( 2) . t a r . g z \
$( addprefix $( 2) /,$( TAR_CONTENT) $( 3) ) ; \
r m - f $( 2) $( objtree ) / . s c m v e r s i o n
2005-04-17 02:20:36 +04:00
# rpm-pkg
2006-03-08 20:39:05 +03:00
# ---------------------------------------------------------------------------
2013-04-13 23:21:15 +04:00
rpm-pkg rpm : FORCE
2005-04-17 02:20:36 +04:00
$( MAKE) clean
2013-04-13 23:21:15 +04:00
$( CONFIG_SHELL) $( MKSPEC) >$( objtree) /kernel.spec
2015-09-02 12:57:08 +03:00
$( call cmd,src_tar,$( KERNELPATH) ,kernel.spec)
2005-04-17 02:20:36 +04:00
$( CONFIG_SHELL) $( srctree) /scripts/mkversion > $( objtree) /.tmp_version
mv -f $( objtree) /.tmp_version $( objtree) /.version
2016-05-15 06:09:52 +03:00
rpmbuild $( RPMOPTS) --target $( UTS_MACHINE) -ta $( KERNELPATH) .tar.gz
2013-04-13 23:21:15 +04:00
rm $( KERNELPATH) .tar.gz kernel.spec
2005-04-17 02:20:36 +04:00
# binrpm-pkg
2006-03-08 20:39:05 +03:00
# ---------------------------------------------------------------------------
2013-04-13 23:21:15 +04:00
binrpm-pkg : FORCE
2005-07-15 00:26:09 +04:00
$( MAKE) KBUILD_SRC =
2013-04-13 23:21:15 +04:00
$( CONFIG_SHELL) $( MKSPEC) prebuilt > $( objtree) /binkernel.spec
2005-04-17 02:20:36 +04:00
$( CONFIG_SHELL) $( srctree) /scripts/mkversion > $( objtree) /.tmp_version
mv -f $( objtree) /.tmp_version $( objtree) /.version
2016-05-15 06:09:52 +03:00
rpmbuild $( RPMOPTS) --define " _builddir $( objtree) " --target \
2013-05-15 20:06:26 +04:00
$( UTS_MACHINE) -bb $( objtree) /binkernel.spec
2013-04-13 23:21:15 +04:00
rm binkernel.spec
2005-04-17 02:20:36 +04:00
# Deb target
# ---------------------------------------------------------------------------
2009-11-24 18:21:56 +03:00
quiet_cmd_builddeb = BUILDDEB
cmd_builddeb = set -e; \
test ` id -u` = 0 || \
test -n " $( KBUILD_PKG_ROOTCMD) " || { \
which fakeroot >/dev/null 2>& 1 && \
KBUILD_PKG_ROOTCMD = "fakeroot -u" ; \
} || { \
echo; \
echo "builddeb must be run as root (or using fakeroot)." ; \
echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found." ; \
echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire" ; \
echo "root privileges (e.g., 'fakeroot -u' or 'sudo')." ; \
false; \
} && \
\
$$ KBUILD_PKG_ROOTCMD $( CONFIG_SHELL) \
2015-09-02 12:57:24 +03:00
$( srctree) /scripts/package/builddeb $@
2009-11-24 18:21:56 +03:00
2006-03-08 20:39:05 +03:00
deb-pkg : FORCE
2015-09-02 12:57:24 +03:00
$( MAKE) clean
$( call cmd,src_tar,$( KDEB_SOURCENAME) )
$( MAKE) KBUILD_SRC =
+$( call cmd,builddeb)
bindeb-pkg : FORCE
2005-07-15 00:26:09 +04:00
$( MAKE) KBUILD_SRC =
2015-09-02 12:57:24 +03:00
+$( call cmd,builddeb)
2005-04-17 02:20:36 +04:00
clean-dirs += $( objtree) /debian/
2005-05-24 13:27:37 +04:00
# tarball targets
# ---------------------------------------------------------------------------
2006-03-08 20:39:05 +03:00
tar%pkg : FORCE
2006-01-01 16:23:47 +03:00
$( MAKE) KBUILD_SRC =
2005-05-24 13:27:37 +04:00
$( CONFIG_SHELL) $( srctree) /scripts/package/buildtar $@
clean-dirs += $( objtree) /tar-install/
2010-05-31 18:13:21 +04:00
# perf-pkg - generate a source tarball with perf source
# ---------------------------------------------------------------------------
perf-tar = perf-$( KERNELVERSION)
quiet_cmd_perf_tar = TAR
cmd_perf_tar = \
2011-05-14 03:41:12 +04:00
g i t --git-dir = $( srctree) /.git archive --prefix= $( perf-tar) / \
HEAD^{ tree} $$ ( cd $( srctree) ; \
2015-09-01 17:14:21 +03:00
echo $$ ( cat tools/perf/MANIFEST) ) \
2011-05-14 03:41:12 +04:00
-o $( perf-tar) .tar; \
2010-05-31 18:13:21 +04:00
m k d i r - p $( perf -tar ) ; \
2011-05-14 03:41:12 +04:00
g i t --git-dir = $( srctree) /.git rev-parse HEAD > $( perf-tar) /HEAD; \
2013-11-06 19:55:35 +04:00
( c d $( srctree ) / t o o l s / p e r f ; \
2015-09-01 17:14:21 +03:00
u t i l / P E R F - V E R S I O N - G E N $( CURDIR ) / $( perf -tar ) / ) ; \
2013-11-06 19:55:35 +04:00
t a r r f $( perf -tar ) . t a r $( perf -tar ) / H E A D $( perf -tar ) / P E R F - V E R S I O N - F I L E ; \
2010-05-31 18:13:21 +04:00
r m - r $( perf -tar ) ; \
$( if $ ( findstring tar -src ,$ @) ,, \
$( if $ ( findstring bz 2,$ @) ,bzip 2, \
$( if $ ( findstring gz ,$ @) ,gzip , \
2011-01-30 14:18:51 +03:00
$( if $ ( findstring xz ,$ @) ,xz , \
$( error unknown target $ @) ) ) ) \
2010-05-31 18:13:21 +04:00
-f -9 $( perf-tar) .tar)
perf-%pkg : FORCE
$( call cmd,perf_tar)
2005-04-17 02:20:36 +04:00
# Help text displayed when executing 'make help'
# ---------------------------------------------------------------------------
2006-03-08 20:39:05 +03:00
help : FORCE
2010-05-31 18:13:21 +04:00
@echo ' rpm-pkg - Build both source and binary RPM kernel packages'
2015-09-02 12:57:24 +03:00
@echo ' binrpm-pkg - Build only the binary kernel RPM package'
@echo ' deb-pkg - Build both source and binary deb kernel packages'
@echo ' bindeb-pkg - Build only the binary kernel deb package'
2010-05-31 18:13:21 +04:00
@echo ' tar-pkg - Build the kernel as an uncompressed tarball'
@echo ' targz-pkg - Build the kernel as a gzip compressed tarball'
@echo ' tarbz2-pkg - Build the kernel as a bzip2 compressed tarball'
2011-01-30 14:18:51 +03:00
@echo ' tarxz-pkg - Build the kernel as a xz compressed tarball'
2010-05-31 18:13:21 +04:00
@echo ' perf-tar-src-pkg - Build $(perf-tar).tar source tarball'
@echo ' perf-targz-src-pkg - Build $(perf-tar).tar.gz source tarball'
@echo ' perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball'
2011-01-30 14:18:51 +03:00
@echo ' perf-tarxz-src-pkg - Build $(perf-tar).tar.xz source tarball'