Files
MapLibreParticleLab/rustutils/generate.sh
2025-04-17 23:32:15 +00:00

36 lines
973 B
Bash
Executable File

#!/bin/bash
# Run this script from the repository root
# Install cxxbridge with:
# $ cargo install cxxbridge-cmd@1.0.154 --locked
set -e
if [ "$#" -lt 2 ]; then
echo "Error: output_dir and at least one input file are required." >&2
echo "Usage: $0 <output_dir> <input_file1> [input_file2 ...]" >&2
exit 1
fi
# Use CXXBRIDGE_CMD environment variable if set, otherwise fallback to "cxxbridge"
CXXBRIDGE_CMD="${CXXBRIDGE_CMD:-cxxbridge}"
output_dir="$1"
shift
for input_file in "$@"; do
if [[ "$input_file" != *.rs ]]; then
echo "Error: All input files must have a .rs extension. Invalid file: $input_file" >&2
exit 1
fi
done
mkdir -p "$output_dir/cpp/include/rustutils"
mkdir -p "$output_dir/cpp/src"
for input_file in "$@"; do
base_name=$(basename "$input_file" .rs)
"$CXXBRIDGE_CMD" "$input_file" --header > "$output_dir/cpp/include/rustutils/${base_name}.hpp"
"$CXXBRIDGE_CMD" "$input_file" > "$output_dir/cpp/src/${base_name}.rs.cpp"
done