1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 3 4TOOL=$(dirname $(realpath $0))/ynl-gen-c.py 5 6force= 7search= 8 9while [ ! -z "$1" ]; do 10 case "$1" in 11 -f ) force=yes; shift ;; 12 -p ) search=$2; shift 2 ;; 13 * ) echo "Unrecognized option '$1'"; exit 1 ;; 14 esac 15done 16 17KDIR=$(dirname $(dirname $(dirname $(dirname $(realpath $0))))) 18pushd ${search:-$KDIR} >>/dev/null 19 20files=$(git grep --files-with-matches '^/\* YNL-GEN \(kernel\|uapi\|user\)') 21for f in $files; do 22 # params: 0 1 2 3 23 # $YAML YNL-GEN kernel $mode 24 params=( $(git grep -B1 -h '/\* YNL-GEN' $f | sed 's@/\*\(.*\)\*/@\1@') ) 25 args=$(sed -n 's@/\* YNL-ARG \(.*\) \*/@\1@p' $f) 26 27 if [ $f -nt ${params[0]} -a -z "$force" ]; then 28 echo -e "\tSKIP $f" 29 continue 30 fi 31 32 echo -e "\tGEN ${params[2]}\t$f" 33 $TOOL --mode ${params[2]} --${params[3]} --spec $KDIR/${params[0]} \ 34 $args -o $f 35done 36 37popd >>/dev/null 38