| #!/usr/bin/env bash |
| |
| # TODO(pascallouis): better automate this. |
| |
| set -euxo pipefail |
| |
| if [[ ! -d "${FUCHSIA_DIR}" ]]; then |
| echo "FUCHSIA_DIR environment variable not a directory" |
| exit 1 |
| fi |
| |
| pushd $FUCHSIA_DIR |
| |
| ./scripts/fx build garnet/go/src/fidl |
| |
| tmpout=$(mktemp -d 2>/dev/null || mktemp -d -t 'tmpout') |
| ir_file="${tmpout}/out.json" |
| |
| trap 'rm -rf -- "${tmpout}" && popd > /dev/null' EXIT |
| |
| # Parameters: |
| # $1 = directory where fidl file is found. |
| # $2 = output of subdirectory of syscall/zx |
| # $3..n = additional fidl dependencies needed to generate this target. |
| function generate_file { |
| local source_dir=$1 |
| shift |
| local package_dir=$1 |
| shift |
| local additional_files="" |
| while (( "$#" )); do |
| additional_files+="--files $1" |
| shift |
| done |
| out_file=third_party/go/src/syscall/zx/"${package_dir}"/impl.go |
| copyright_line=$(grep -E "^// Copyright [0-9]+" "${out_file}" || \ |
| echo "// Copyright $(date +%Y) The Fuchsia Authors. All rights reserved.") |
| ./out/x64/host_x64/fidlc \ |
| --json "${ir_file}" \ |
| ${additional_files} \ |
| --files "${source_dir}"/*.fidl |
| ./out/x64/host_x64/fidlgen \ |
| --json "${ir_file}" \ |
| --generators go \ |
| --include-base notused \ |
| --output-base "${tmpout}" |
| |
| tmpfile=$(mktemp ${tmpout}/tmp.XXXXXXXX) |
| echo "${copyright_line}" > "${tmpfile}" |
| cat << EOF >> "${tmpfile}" |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // GENERATED FILE: Do not edit! |
| // |
| // To rebuild this file, invoke third_party/go/regen-fidl. |
| |
| // +build fuchsia |
| EOF |
| cat "${tmpout}"/impl.go >> "${tmpfile}" |
| perl -pi -e 's|^// WARNING: This file is machine generated by fidlgen.\n$||' "${tmpfile}" |
| perl -pi -e 's|fidl/fuchsia/mem|syscall/zx/mem|' "${tmpfile}" |
| ./out/x64/tools/goroot/bin/gofmt -s -w "${tmpfile}" |
| mv -- "${tmpfile}" "${out_file}" |
| } |
| |
| generate_file third_party/go/src/syscall/zx/fidl/bindingstest/ fidl/bindingstest |
| generate_file zircon/system/fidl/fuchsia-net net |
| generate_file zircon/system/fidl/fuchsia-mem mem |
| generate_file zircon/system/fidl/fuchsia-io io \ |
| zircon/system/fidl/fuchsia-mem/*.fidl |