Files
MapLibreParticleLab/rustutils/generate.sh
Bart Louwers 527e70b6fa Allow compiling with Rust code (#3137)
Co-authored-by: Yuri Astrakhan <YuriAstrakhan@gmail.com>
Co-authored-by: Ian Wagner <ianwagner+github@switzerlandmail.ch>
2025-01-16 16:01:11 +01:00

35 lines
955 B
Bash
Executable File

#!/bin/bash
# Run this script from the repository root
# Install cxxbridge with:
# $ cargo install cxxbridge-cmd
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