Add useful XCC targets to top level makefile
authorKevin Klues <klueska@cs.berkeley.edu>
Wed, 15 Jul 2015 01:00:53 +0000 (18:00 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Wed, 15 Jul 2015 22:20:48 +0000 (15:20 -0700)
commitbb9b78eeb24aa3ebdd8a72eb825fc21bad8b3697
treedb0ad9a0a340b207b016fe63a0cc5ba170e589d1
parent0773cfc6671f440b4d4a40ad2a545c7de2288c47
Add useful XCC targets to top level makefile

All of the valid XCC subcmd and clean targets are automatically made
available for the current ARCH via calls to 'make xcc-*'. Tab complete
them out to see the full list.  The standalone 'xcc' target will build
the cross compiler for the configured architecture and install it (e.g.
the same as running 'make x86_64', etc. down in the xcc directory as we
used to have to do).

One thing to point out here is the settings we have to mess with for the
environment passed to our recursive make calls. All of the exports in
the top level Makefile, mess with the settings of the xcc Makefile (and
busybox's Makefile) when we do a recursive make.  The two lines:

export_parent_env := $(shell export | sed 's/$$/;/')
clear_current_env := for c in $$(env | cut -d '=' -f 1); do unset $$c; done;

make it so that later on I can just clear out the current environment
and restore the environment of the parent just before making my
recursive make calls. It's easier than manually going through and
'unexporting' everything that the Makefile exported. It also keeps us
from having to keep these exports in sync with unexporting them
somewhere else.  At the end of the day, it boils down to the fact that
our xcc make wants the environment set up in our shell, not the one set
up in the top level makefile. Having these commands available makes it
easier to set this up.

I have also added a 'make_as_parent' define so that we can more easily
execute local make targets as if they were invoked from the parent.
Makefile