Good Evening Sports Fans, Have we got a match for you tonight!
In this corner, ccache. Loved for it speed and hackery, hated for its invasive corruptibility. In the other corner, we have vppapigen, loved tool of the single-source definitions for all things yet hated as the monster that will not die! Tonight we bring them together in the top-level Makefile, in a clause that might leave a few, myself included, mystified: ifeq ("$(wildcard /usr/bin/ccache )","") @echo "WARNING: Please install ccache AYEC and re-run this script" else @rm -rf $(BR)/tools/ccache-bin @mkdir -p $(BR)/tools/ccache-bin @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/gcc @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/g++ @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/clang @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/clang++ mkdir -p $(BR)/tools/bin rm -f $(BR)/tools/bin/vppapigen ln -s $(WS_ROOT)/src/tools/vppapigen/vppapigen \ $(BR)/tools/bin/vppapigen ls -lsa $(BR)/tools/bin endif @touch $@ You might recognize that as part of the $(BR)/.bootstrap.ok target! It is! You could win! But first, let's see what happens when ccache is NOt installed on the build machine! Yep, you get that warning: @echo "WARNING: Please install ccache AYEC and re-run this script" Naturally, that is lost way, way, back at the beginning of the scroll-back. Twenty minutes of scroll-back. Unless.... Yes, in just under 2 minutes, the build fails! Quizically like this: APIGEN vlibmemory/memclnt.api.h JSON API vlibmemory/memclnt.api.json /bin/sh: line 2: vppapigen: command not found /bin/sh: line 2: vppapigen: command not found So, yeah, installing ccache clears all that up. And since using vppapigen is sort of necessary for the whole build here, using ccache is not really an optional build-time dependency anymore. If you're cools with that, I'm cool with that, but we should list it as a build-time requirement for all build hosts including CentOS: $ git grep ccache Makefile Makefile:CCACHE_DIR?=$(BR)/.ccache Makefile:DEB_DEPENDS = curl build-essential autoconf automake ccache Makefile:RPM_SUSE_BUILDTOOLS_DEPS = autoconf automake ccache check-devel chrpath If no one beats me to it, I might submit a patch to help the situation. So it's a tie! jdl