On Mon, Mar 18, 2013 at 11:10:08AM +0100, Martin Jansa wrote: > * original implementation by Antti Harju
Nobody using external TC, interested in icecc? > Signed-off-by: Martin Jansa <martin.ja...@gmail.com> > --- > meta/classes/icecc.bbclass | 37 +++++++++++++++++++++++++++++++++---- > 1 file changed, 33 insertions(+), 4 deletions(-) > > diff --git a/meta/classes/icecc.bbclass b/meta/classes/icecc.bbclass > index f3e89a9..cf3f23d 100644 > --- a/meta/classes/icecc.bbclass > +++ b/meta/classes/icecc.bbclass > @@ -47,6 +47,9 @@ def get_cross_kernel_cc(bb,d): > kernel_cc = kernel_cc.strip() > return kernel_cc > > +def get_icecc(d): > + return d.getVar('ICECC_PATH') or os.popen("which icecc").read()[:-1] > + > def create_path(compilers, bb, d): > """ > Create Symlinks for the icecc in the staging directory > @@ -56,7 +59,7 @@ def create_path(compilers, bb, d): > staging += "-kernel" > > #check if the icecc path is set by the user > - icecc = d.getVar('ICECC_PATH') or os.popen("which icecc").read()[:-1] > + icecc = get_icecc(d) > > # Create the dir if necessary > try: > @@ -151,6 +154,11 @@ def icc_path(bb,d): > prefix = d.expand('${HOST_PREFIX}') > return create_path( [prefix+"gcc", prefix+"g++"], bb, d) > > +def icc_get_external_tool(bb, d, tool): > + external_toolchain_bindir = > d.expand('${EXTERNAL_TOOLCHAIN}${bindir_cross}') > + target_prefix = d.expand('${TARGET_PREFIX}') > + return os.path.join(external_toolchain_bindir, '%s%s' % (target_prefix, > tool)) > + > def icc_get_tool(bb, d, tool): > if icc_is_native(bb, d): > return os.popen("which %s" % tool).read()[:-1] > @@ -159,7 +167,26 @@ def icc_get_tool(bb, d, tool): > else: > ice_dir = d.expand('${STAGING_BINDIR_TOOLCHAIN}') > target_sys = d.expand('${TARGET_SYS}') > - return os.path.join(ice_dir, "%s-%s" % (target_sys, tool)) > + tool_bin = os.path.join(ice_dir, "%s-%s" % (target_sys, tool)) > + if os.path.isfile(tool_bin): > + return tool_bin > + else: > + external_tool_bin = icc_get_external_tool(bb, d, tool) > + if os.path.isfile(external_tool_bin): > + return external_tool_bin > + else: > + return "" > + > +def icc_get_and_check_tool(bb, d, tool): > + # Check that g++ or gcc is not a symbolic link to icecc binary in > + # PATH or icecc-create-env script will silently create an invalid > + # compiler environment package. > + t = icc_get_tool(bb, d, tool) > + if t and os.popen("readlink -f %s" % t).read()[:-1] == get_icecc(d): > + bb.error("%s is a symlink to %s in PATH and this prevents icecc from > working" % (t, get_icecc(d))) > + return "" > + else: > + return t > > set_icecc_env() { > if [ "x${ICECC_DISABLED}" != "x" ] > @@ -178,8 +205,8 @@ set_icecc_env() { > return > fi > > - ICECC_CC="${@icc_get_tool(bb,d, "gcc")}" > - ICECC_CXX="${@icc_get_tool(bb,d, "g++")}" > + ICECC_CC="${@icc_get_and_check_tool(bb, d, "gcc")}" > + ICECC_CXX="${@icc_get_and_check_tool(bb, d, "g++")}" > if [ ! -x "${ICECC_CC}" -o ! -x "${ICECC_CXX}" ] > then > return > @@ -207,6 +234,8 @@ set_icecc_env() { > export ICECC_VERSION ICECC_CC ICECC_CXX > export PATH="$ICE_PATH:$PATH" > export CCACHE_PATH="$PATH" > + > + bbnote "Using icecc" > } > > do_configure_prepend() { > -- > 1.8.1.5 > -- Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com
signature.asc
Description: Digital signature
_______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core