blob: edd98e7297721af99703859d72759fcb020c566d [file] [log] [blame]
#!/usr/bin/env bash
set -eu
set -o pipefail
LLCPP_TEST_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
FUCHSIA_DIR="$( echo ${LLCPP_TEST_DIR} | sed -e 's,zircon/system/utest.*$,,' )"
if [ -z ${FUCHSIA_BUILD_DIR+x} ]; then
echo "please use fx exec to run this script" 1>&2
exit 1
fi
FIDLC=${FUCHSIA_BUILD_DIR}/host_x64/fidlc
FIDLGEN=${FUCHSIA_BUILD_DIR}/host_x64/fidlgen_llcpp
if [ ! -x "${FIDLC}" ]; then
echo "error: fidlc missing; did you fx clean-build?" 1>&2
exit 1
fi
if [ ! -x "${FIDLGEN}" ]; then
echo "error: fidlgen_llcpp missing; did you fx clean-build?" 1>&2
exit 1
fi
cd ${FUCHSIA_DIR}
for src_path in `find "${LLCPP_TEST_DIR}" -name '*.fidl'`; do
src_name="$( basename "${src_path}" .fidl )"
json_name=${src_name}.json
# generate the json IR
cd ${LLCPP_TEST_DIR}
${FIDLC} --json /tmp/${json_name} \
--files ${src_path}
# generate llcpp bindings
${FIDLGEN} -json /tmp/${json_name} \
-header fidl_llcpp_${src_name}.h \
-source fidl_llcpp_${src_name}.cc \
-include-base .
# move bindings to the `generated` directory
mv fidl_llcpp_${src_name}.h ${LLCPP_TEST_DIR}/generated
mv fidl_llcpp_${src_name}.cc ${LLCPP_TEST_DIR}/generated
# cleanup
rm /tmp/${json_name}
done