]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/loongarch/genopts/genstr.sh
Update copyright years.
[thirdparty/gcc.git] / gcc / config / loongarch / genopts / genstr.sh
1 #!/bin/sh
2 # A simple script that generates loongarch-str.h and loongarch.opt
3 # from genopt/loongarch-optstr.
4 #
5 # Copyright (C) 2021-2023 Free Software Foundation, Inc.
6 #
7 # This file is part of GCC.
8 #
9 # GCC is free software; you can redistribute it and/or modify it under
10 # the terms of the GNU General Public License as published by the Free
11 # Software Foundation; either version 3, or (at your option) any later
12 # version.
13 #
14 # GCC is distributed in the hope that it will be useful, but WITHOUT
15 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 # License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with GCC; see the file COPYING3. If not see
21 # <http://www.gnu.org/licenses/>.
22
23 cd "$(dirname "$0")"
24
25 # Generate a header containing definitions from the string table.
26 gen_defines() {
27 cat <<EOF
28 /* Generated automatically by "genstr" from "loongarch-strings".
29 Please do not edit this file directly.
30
31 Copyright (C) 2021-2023 Free Software Foundation, Inc.
32 Contributed by Loongson Ltd.
33
34 This file is part of GCC.
35
36 GCC is free software; you can redistribute it and/or modify
37 it under the terms of the GNU General Public License as published by
38 the Free Software Foundation; either version 3, or (at your option)
39 any later version.
40
41 GCC is distributed in the hope that it will be useful,
42 but WITHOUT ANY WARRANTY; without even the implied warranty of
43 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44 GNU General Public License for more details.
45
46 You should have received a copy of the GNU General Public License
47 along with GCC; see the file COPYING3. If not see
48 <http://www.gnu.org/licenses/>. */
49
50 #ifndef LOONGARCH_STR_H
51 #define LOONGARCH_STR_H
52 EOF
53
54 sed -e '/^$/n' -e 's@#.*$@@' -e '/^$/d' \
55 -e 's@^\([^ \t]\+\)[ \t]*\([^ \t]*\)@#define \1 "\2"@' \
56 loongarch-strings
57
58 echo
59 echo "#endif /* LOONGARCH_STR_H */"
60 }
61
62
63 # Substitute all "@@<KEY>@@" to "<VALUE>" in loongarch.opt.in
64 # according to the key-value pairs defined in loongarch-strings.
65
66 gen_options() {
67
68 sed -e '/^$/n' -e 's@#.*$@@' -e '/^$/d' \
69 -e 's@^\([^ \t]\+\)[ \t]*\([^ \t]*\)@\1="\2"@' \
70 loongarch-strings | { \
71
72 # read the definitions
73 while read -r line; do
74 eval "$line"
75 done
76
77 # print a header
78 cat << EOF
79 ; Generated by "genstr" from the template "loongarch.opt.in"
80 ; and definitions from "loongarch-strings".
81 ;
82 ; Please do not edit this file directly.
83 ; It will be automatically updated during a gcc build
84 ; if you change "loongarch.opt.in" or "loongarch-strings".
85 ;
86 EOF
87
88 # make the substitutions
89 sed -e 's@"@\\"@g' -e 's/@@\([^@]\+\)@@/${\1}/g' loongarch.opt.in | \
90 while read -r line; do
91 eval "echo \"$line\""
92 done
93 }
94 }
95
96 main() {
97 case "$1" in
98 header) gen_defines;;
99 opt) gen_options;;
100 *) echo "Unknown Command: \"$1\". Available: header, opt"; exit 1;;
101 esac
102 }
103
104 main "$@"