#!/bin/bash # Copyright 2021 Benjamin Barenblat # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. set -eu -o pipefail res=() for f in "$@"; do f="${f//./_}" res+=("${f//\//_}") done cat < #include "third_party/abseil/absl/strings/string_view.h" #include "third_party/abseil/absl/types/span.h" extern "C" { EOF for symbol in "${res[@]}"; do echo "extern const char _binary_${symbol}_start;" echo "extern const char _binary_${symbol}_end;" echo done cat < $function_name() {" echo ' return absl::MakeConstSpan(' echo " reinterpret_cast(&_binary_${symbol}_start)," echo " reinterpret_cast(&_binary_${symbol}_end));" echo '}' ;; *) echo "inline absl::string_view $function_name() {" echo " return absl::string_view(&_binary_${symbol}_start," echo " &_binary_${symbol}_end);" echo '}' ;; esac echo done cat <