#!/usr/bin/env bash
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# Updates the LinalgStructuredOps.yaml file based on the
# core_named_ops.py source of truth.

set -eu -o errtrace
shopt -s inherit_errexit

mlir_source_dir="@MLIR_SOURCE_DIR@"
python_exe="@Python3_EXECUTABLE@"
mlir_binary_dir="@MLIR_BINARY_DIR@"
python_package_dir="$mlir_binary_dir/python_packages/mlir_core"

if ! [[ -d "$python_package_dir" ]]; then
  echo "ERROR: Python bindings not found. Build with -DMLIR_ENABLE_BINDINGS_PYTHON=ON"
  exit 1
fi

dest_file="$mlir_source_dir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml"
echo "Updating ops in $dest_file"

export PYTHONPATH="$python_package_dir"
OUTPUT="$(
  echo "### AUTOGENERATED from core_named_ops.py" && \
  echo "### To regenerate, run: bin/update_core_linalg_named_ops.sh" && \
  "$python_exe" -m mlir.dialects.linalg.opdsl.dump_oplib .ops.core_named_ops \
)"
echo "$OUTPUT" > "$dest_file"
echo "Success."
