llvm/mlir/tools/mlir-linalg-ods-gen/update_core_linalg_named_ops.sh.in

#!/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."