debian/rules honors CC and CXX

Goal description

This goal aims to make sure that any package in the archive could be rebuild with the command CC=foo CXX=bar dpkg-buildpackage

This might be an important step for an other release goal Clang as secondary compiler.

Current status

In some packages, there is an assumption that the compiler is always gcc/g++. This blocks any initiative to rebuild the archive with an other compiler or with some analyzer tools.

A study of the percentage of failure is on-going.

Caveats

This release goal conflicts with ReleaseGoals/CrossBuildableBase. For cross building the host compiler must be distinguished from the build compiler. Typically this is done by using $(DEB_HOST_GNU_TYPE)-gcc. By changing such an invocation to use $(CC) instead, the cross compilation goal is broken. This issue only affects packages transitively (build-)depended upon by build-essential and essential packages. There are no plans to implement cross compilation for packages outside this set. Therefore do not change such invocations to use $(CC). As a long term solution it might be possible to use $(HOSTCC) and $(BUILDCC), but these variables are currently not set by default.

How to help

Advocates

Volunteers