Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 1 | #!/bin/bash |
Jakub Kicinski | 37d9df2 | 2023-03-06 12:04:57 -0800 | [diff] [blame] | 2 | # SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 3 | |
| 4 | TOOL=$(dirname $(realpath $0))/ynl-gen-c.py |
| 5 | |
| 6 | force= |
Stanislav Fomichev | 25b5a2a | 2023-07-27 09:30:00 -0700 | [diff] [blame] | 7 | search= |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 8 | |
| 9 | while [ ! -z "$1" ]; do |
| 10 | case "$1" in |
| 11 | -f ) force=yes; shift ;; |
Stanislav Fomichev | 25b5a2a | 2023-07-27 09:30:00 -0700 | [diff] [blame] | 12 | -p ) search=$2; shift 2 ;; |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 13 | * ) echo "Unrecognized option '$1'"; exit 1 ;; |
| 14 | esac |
| 15 | done |
| 16 | |
| 17 | KDIR=$(dirname $(dirname $(dirname $(dirname $(realpath $0))))) |
Stanislav Fomichev | 25b5a2a | 2023-07-27 09:30:00 -0700 | [diff] [blame] | 18 | pushd ${search:-$KDIR} >>/dev/null |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 19 | |
Jakub Kicinski | 86878f1 | 2023-06-05 12:01:06 -0700 | [diff] [blame] | 20 | files=$(git grep --files-with-matches '^/\* YNL-GEN \(kernel\|uapi\|user\)') |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 21 | for 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@') ) |
Jakub Kicinski | 33eedb0 | 2023-06-09 14:43:36 -0700 | [diff] [blame] | 25 | args=$(sed -n 's@/\* YNL-ARG \(.*\) \*/@\1@p' $f) |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 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" |
Jakub Kicinski | 33eedb0 | 2023-06-09 14:43:36 -0700 | [diff] [blame] | 33 | $TOOL --mode ${params[2]} --${params[3]} --spec $KDIR/${params[0]} \ |
| 34 | $args -o $f |
Jakub Kicinski | be5bea1 | 2023-01-20 09:50:36 -0800 | [diff] [blame] | 35 | done |
Stanislav Fomichev | 25b5a2a | 2023-07-27 09:30:00 -0700 | [diff] [blame] | 36 | |
| 37 | popd >>/dev/null |