cross compilation of kernel does not need tools to be built
Marcin Juszkiewicz
marcin.juszkiewicz at linaro.org
Fri Mar 16 11:40:15 UTC 2012
W dniu 16.03.2012 12:06, Andy Whitcroft pisze:
> On Thu, Mar 15, 2012 at 08:26:58PM +0100, Marcin Juszkiewicz wrote:
>>
>> At Linaro we want to be able to cross compile as much as we can. One of
>> most popular targets for people (inside or outside) is kernel.
>>
>> Today we are not able to cross build it due to linux-tools-VER package
>> as it requires libdw-dev which requires binutils-dev which is not
>> possible to install for other architecture then host one.
>>
>> So solution which I want to propose is simple: disable build of tools/
>> when we cross compile:
>>
>> diff -Naru linux-3.2.0/debian/rules.d/0-common-vars.mk
>> linux-3.2.0-hrw/debian/rules.d/0-common-vars.mk
>> --- linux-3.2.0/debian/rules.d/0-common-vars.mk 2012-03-15
>> 17:31:25.000000000 +0000
>> +++ linux-3.2.0-hrw/debian/rules.d/0-common-vars.mk 2012-03-15
>> 17:25:47.665905092 +0000
>> @@ -170,6 +170,9 @@
>> else
>> do_tools?=false
>> endif
>> +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
>> +do_tools=false
>> +endif
>> tools_pkg_name=$(src_pkg_name)-tools-$(abi_release)
>> tools_common_pkg_name=$(src_pkg_name)-tools-common
>>
>>
>> Other thing which I found during my work was wrong use of
>> $(CROSS_COMPILE) during build of tools:
>>
>> diff -Naru linux-3.2.0/debian/rules.d/2-binary-arch.mk
>> linux-3.2.0-hrw/debian/rules.d/2-binary-arch.mk
>> --- linux-3.2.0/debian/rules.d/2-binary-arch.mk 2012-03-15
>> 17:31:25.000000000 +0000
>> +++ linux-3.2.0-hrw/debian/rules.d/2-binary-arch.mk 2012-03-15
>> 16:44:31.545858606 +0000
>> @@ -397,7 +397,7 @@
>> $(stampdir)/stamp-build-perarch: $(stampdir)/stamp-prepare-perarch
>> ifeq ($(do_tools),true)
>> cd $(builddir)/tools/tools/perf && \
>> - make HAVE_CPLUS_DEMANGLE=1 $(CROSS_COMPILE) $(conc_level)
>> + $(kmake) HAVE_CPLUS_DEMANGLE=1 $(conc_level)
>> if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \
>> cd $(builddir)/tools/tools/power/x86/x86_energy_perf_policy && make
>> $(CROSS_COMPILE); \
>> cd $(builddir)/tools/tools/power/x86/turbostat && make
>> $(CROSS_COMPILE); \
>>
>>
>> With my change $(CROSS_COMPILE) is used properly here.
>>
>> Share opinion and please remember that I am not subscribed to this ML.
> There is some reason we cannot use this second part of the fix. This
> breaks builds somewhere else like on buildds or something. Tim you and
> I looked at this before when someone proposed exactly this second fix;
> Loic perhaps -- can you remember?
Ok, what about s/$(CROSS_COMPILE)/CROSS_COMPILE=$(CROSS_COMPILE)/ then -
it will also solve problem as current version is just broken for cross.
> As for the first change, I am not opposed to it, but would like to ask
> why you cannot use the do_tools=false override; this is what I use when
> cross building.
If you mean "do_tools=false dpkg-buildpackage -b -armhf" call then think
how many people will know about it? Doing it automatically makes life
easier - especially when we are not able to cross compile tools.
More information about the kernel-team
mailing list