LIBEXEC_CC:= $(subst ${BRSOURCEDIR},${BRLIBEXECDEST},${CC})
LIBEXEC_CXX:= $(subst ${BRSOURCEDIR},${BRLIBEXECDEST},${CXX})
LIBEXEC_OBJCOPY:= ${BRLIBEXECDEST}/${MACHINE_GNU_PLATFORM}-objcopy
+LIBEXEC_READELF:= ${BRLIBEXECDEST}/${MACHINE_GNU_PLATFORM}-readelf
TOOLS_CC := ${RRDEST}/bin/$(TOOLTUPLE)-${_CCVARIANT}
TOOLS_CXX := ${RRDEST}/bin/$(TOOLTUPLE)-${_CXXVARIANT}
-e 's#!LIBEXEC_CC!#$(LIBEXEC_CC)#g;' \
-e 's#!LIBEXEC_CXX!#$(LIBEXEC_CXX)#g;' \
-e 's#!LIBEXEC_OBJCOPY!#$(LIBEXEC_OBJCOPY)#g;' \
+ -e 's#!LIBEXEC_READELF!#$(LIBEXEC_READELF)#g;' \
-e 's#!TOOLS_CC!#$(TOOLS_CC)#g;' \
-e 's#!TOOLS_CXX!#$(TOOLS_CXX)#g;' \
-e 's#!MACHINE_GNU_ARCH!#$(MACHINE_GNU_ARCH)#g;' \
# rumprun-bake: script for final stage linking ("baking") of a unikernel image
#
-: ${READELF:=readelf}
unset runcmd
if [ "$(basename $0)" = "rumpbake" ]; then
unset tmp
notesect=.note.rumprun.bakerecipe
- tmp="$(${READELF} -p ${notesect} ${bin} 2>/dev/null \
+ tmp="$(!LIBEXEC_READELF! -p ${notesect} ${bin} 2>/dev/null \
| sed -n '/.*rumprun_'"${var}"': /p')"
[ -n "${tmp}" ] \
|| _die "Could not extract \"${var}\" from ${bin}. Not rumprun bin?"
[ $# -gt 2 ] || _usage
shift 2
-# We need readelf to extract the ELF note with the baking recipe.
-# Just any readelf will do, but we need one.
-type ${READELF} >/dev/null 2>&1 \
- || _die 'Cannot find ${READELF}. Set $READELF env variable'
unset RUMPBAKE_BACKINGCC
unset RUMPBAKE_TUPLE
unset RUMPBAKE_CFLAGS