]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blame - debian/rules.d/0-common-vars.mk
UBUNTU: [debian] derive indep_hdrs_pkg_name from src_pkg_name
[mirror_ubuntu-zesty-kernel.git] / debian / rules.d / 0-common-vars.mk
CommitLineData
78046548
AW
1# Used when you need to 'escape' a comma.
2comma = ,
3
6cc28377
LO
4#
5# The source package name will be the first token from $(DEBIAN)/changelog
6#
7src_pkg_name=$(shell sed -n '1s/^\(.*\) (.*).*$$/\1/p' $(DEBIAN)/changelog)
8
9# Get some version info
6cc28377
LO
10release := $(shell sed -n '1s/^$(src_pkg_name).*(\(.*\)-.*).*$$/\1/p' $(DEBIAN)/changelog)
11revisions := $(shell sed -n 's/^$(src_pkg_name)\ .*($(release)-\(.*\)).*$$/\1/p' $(DEBIAN)/changelog | tac)
12revision ?= $(word $(words $(revisions)),$(revisions))
13prev_revisions := $(filter-out $(revision),0.0 $(revisions))
14prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions))
15
6c987510
AW
16prev_fullver ?= $(shell dpkg-parsechangelog -l$(DEBIAN)/changelog -o1 -c1 | sed -ne 's/^Version: *//p')
17
6cc28377
LO
18family=ubuntu
19
20# This is an internally used mechanism for the daily kernel builds. It
21# creates packages whose ABI is suffixed with a minimal representation of
22# the current git HEAD sha. If .git/HEAD is not present, then it uses the
23# uuidgen program,
24#
25# AUTOBUILD can also be used by anyone wanting to build a custom kernel
26# image, or rebuild the entire set of Ubuntu packages using custom patches
27# or configs.
28AUTOBUILD=
29
6cc28377
LO
30ifneq ($(AUTOBUILD),)
31skipabi = true
32skipmodule = true
33skipdbg = true
34gitver=$(shell if test -f .git/HEAD; then cat .git/HEAD; else uuidgen; fi)
35gitverpre=$(shell echo $(gitver) | cut -b -3)
36gitverpost=$(shell echo $(gitver) | cut -b 38-40)
37abi_suffix = -$(gitverpre)$(gitverpost)
38endif
39
40ifneq ($(NOKERNLOG),)
41ubuntu_log_opts += --no-kern-log
42endif
43ifneq ($(PRINTSHAS),)
44ubuntu_log_opts += --print-shas
45endif
46
47# Get the kernels own extra version to be added to the release signature.
48raw_kernelversion=$(shell make kernelversion)
49
50#
51# full_build -- are we doing a full buildd style build
52#
53ifeq ($(wildcard /CurrentlyBuilding),)
54full_build?=false
55else
56full_build?=true
57endif
58
59#
60# The debug packages are ginormous, so you probably want to skip
61# building them (as a developer).
62#
63ifeq ($(full_build),false)
64skipdbg=true
65endif
66
7e837649 67abinum := $(shell echo $(revision) | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$$/\1/')$(abi_suffix)
68prev_abinum := $(shell echo $(prev_revision) | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$$/\1/')$(abi_suffix)
6cc28377
LO
69abi_release := $(release)-$(abinum)
70
0ab5f2fd 71uploadnum := $(shell echo $(revision) | sed -r -e 's/[^\+~]*\.([^\.~]+(~.*)?(\+.*)?$$)/\1/')
6cc28377
LO
72ifneq ($(full_build),false)
73 uploadnum := $(uploadnum)-Ubuntu
74endif
75
76# XXX: linux-libc-dev got bumped to -803.N inadvertantly by a ti-omap4 upload
77# shift our version higher for this package only. Ensure this only
78# occurs for the v2.6.35 kernel so that we do not propogate this into
79# any other series.
80raw_uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//')
81libc_dev_version :=
82ifeq ($(DEBIAN),debian.master)
83ifeq ($(release),2.6.35)
84libc_dev_version := -v$(release)-$(shell expr "$(abinum)" + 1000).$(raw_uploadnum)
85endif
86endif
87
88DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
89DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
90DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
91DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH)
92DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
93
94#
374c4d89 95# Detect invocations of the form 'fakeroot debian/rules binary arch=armhf'
6cc28377
LO
96# within an x86'en schroot. This only gets you part of the way since the
97# packaging phase fails, but you can at least compile the kernel quickly.
98#
99arch := $(DEB_HOST_ARCH)
100ifneq ($(arch),$(DEB_HOST_ARCH))
101 CROSS_COMPILE ?= $(shell dpkg-architecture -a$(arch) -qDEB_HOST_GNU_TYPE -f 2>/dev/null)-
102endif
103
104#
374c4d89 105# Detect invocations of the form 'dpkg-buildpackage -B -aarmhf' within
6cc28377
LO
106# an x86'en schroot. This is the only way to build all of the packages
107# (except for tools).
108#
109ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
110 CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)-
111endif
112
113abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(revision)/$(arch)
114prev_abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(prev_revision)/$(arch)
115commonconfdir := $(CURDIR)/$(DEBIAN)/config
116archconfdir := $(CURDIR)/$(DEBIAN)/config/$(arch)
117sharedconfdir := $(CURDIR)/debian.master/config
118builddir := $(CURDIR)/debian/build
119stampdir := $(CURDIR)/debian/stamps
120
121#
122# The binary package name always starts with linux-image-$KVER-$ABI.$UPLOAD_NUM. There
123# are places that you'll find linux-image hard coded, but I guess thats OK since the
124# assumption that the binary package always starts with linux-image will never change.
125#
126bin_pkg_name=linux-image-$(abi_release)
127extra_pkg_name=linux-image-extra-$(abi_release)
128hdrs_pkg_name=linux-headers-$(abi_release)
813489f7 129indep_hdrs_pkg_name=$(src_pkg_name)-headers-$(abi_release)
23b893cb 130
6cc28377
LO
131#
132# The generation of content in the doc package depends on both 'AUTOBUILD=' and
133# 'do_doc_package_content=true'. There are usually build errors during the development
134# cycle, so its OK to leave 'do_doc_package_content=false' until those build
135# failures get sorted out. Finally, the doc package doesn't really need to be built
136# for developer testing (its kind of slow), so only do it if on a buildd.
137do_doc_package=true
138do_doc_package_content=true
139ifeq ($(full_build),false)
140do_doc_package_content=false
141endif
142doc_pkg_name=$(src_pkg_name)-doc
143
144#
145# Similarly with the linux-source package, you need not build it as a developer. Its
146# somewhat I/O intensive and utterly useless.
147#
148do_source_package=true
149do_source_package_content=true
150ifeq ($(full_build),false)
151do_source_package_content=false
152endif
153
154# linux-libc-dev may not be needed, default to building it.
155do_libc_dev_package=true
156
157# common headers normally is built as an indep package, but may be arch
158do_common_headers_indep=true
159
160# add a 'full source' mode
161do_full_source=false
162
163# build tools
164ifneq ($(wildcard $(CURDIR)/tools),)
165 ifeq ($(do_tools),)
166 ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
167 do_tools=false
168 endif
169 endif
170 do_tools?=true
171else
172 do_tools?=false
173endif
174tools_pkg_name=$(src_pkg_name)-tools-$(abi_release)
175tools_common_pkg_name=$(src_pkg_name)-tools-common
464a8a56 176tools_flavour_pkg_name=linux-tools-$(abi_release)
abbb6db5
TG
177cloud_pkg_name=$(src_pkg_name)-cloud-tools-$(abi_release)
178cloud_common_pkg_name=$(src_pkg_name)-cloud-tools-common
179cloud_flavour_pkg_name=linux-cloud-tools-$(abi_release)
6cc28377
LO
180
181# The general flavour specific image package.
182do_flavour_image_package=true
183
184# The general flavour specific header package.
185do_flavour_header_package=true
186
fbe45706
AW
187# DTBs
188do_dtbs=false
189
6cc28377
LO
190# Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008)
191#
192# These 2 environment variables set the -j value of the kernel build. For example,
193# CONCURRENCY_LEVEL=16 fakeroot $(DEBIAN)/rules binary-debs
194# or
195# DEB_BUILD_OPTIONS=parallel=16 fakeroot $(DEBIAN)/rules binary-debs
196#
197# The default is to use the number of CPUs.
198#
199COMMA=,
200DEB_BUILD_OPTIONS_PARA = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
201ifneq (,$(DEB_BUILD_OPTIONS_PARA))
202 CONCURRENCY_LEVEL := $(DEB_BUILD_OPTIONS_PARA)
203endif
204
205ifeq ($(CONCURRENCY_LEVEL),)
206 # Check the environment
207 CONCURRENCY_LEVEL := $(shell echo $$CONCURRENCY_LEVEL)
208 # No? Then build with the number of CPUs on the host.
209 ifeq ($(CONCURRENCY_LEVEL),)
210 CONCURRENCY_LEVEL := $(shell expr `getconf _NPROCESSORS_ONLN` \* 1)
211 endif
212 # Oh hell, give 'em one
213 ifeq ($(CONCURRENCY_LEVEL),)
214 CONCURRENCY_LEVEL := 1
215 endif
216endif
217
218conc_level = -j$(CONCURRENCY_LEVEL)
219
220# target_flavour is filled in for each step
221kmake = make ARCH=$(build_arch) \
222 CROSS_COMPILE=$(CROSS_COMPILE) \
223 KERNELVERSION=$(abi_release)-$(target_flavour) \
224 CONFIG_DEBUG_SECTION_MISMATCH=y \
225 KBUILD_BUILD_VERSION="$(uploadnum)" \
87aacaf2
TG
226 LOCALVERSION= localver-extra= \
227 CFLAGS_MODULE="-DPKG_ABI=$(abinum)"
6cc28377
LO
228ifneq ($(LOCAL_ENV_CC),)
229kmake += CC=$(LOCAL_ENV_CC) DISTCC_HOSTS=$(LOCAL_ENV_DISTCC_HOSTS)
230endif
231
232# Locking is required in parallel builds to prevent loss of contents
233# of the debian/files.
234lockme_file = $(CURDIR)/debian/.LOCK
235lockme_cmd = flock -w 60
236lockme = $(lockme_cmd) $(lockme_file)
0a84cf89 237
ffb89852
TG
238# Don't fail if a link already exists.
239LN = ln -sf
240
0a84cf89
BC
241# Checks if a var is overriden by the custom rules. Called with var and
242# flavour as arguments.
243custom_override = \
244 $(shell if [ -n "$($(1)_$(2))" ]; then echo "$($(1)_$(2))"; else echo "$($(1))"; fi)