]>
Commit | Line | Data |
---|---|---|
9e8dfa05 | 1 | #!/bin/sh |
f39632d9 | 2 | |
1d506c26 | 3 | # Copyright (C) 2013-2024 Free Software Foundation, Inc. |
f39632d9 SM |
4 | # |
5 | # This file is part of GDB. | |
6 | # | |
7 | # This program is free software; you can redistribute it and/or modify | |
8 | # it under the terms of the GNU General Public License as published by | |
9 | # the Free Software Foundation; either version 3 of the License, or | |
10 | # (at your option) any later version. | |
11 | # | |
12 | # This program is distributed in the hope that it will be useful, | |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | # GNU General Public License for more details. | |
16 | # | |
17 | # You should have received a copy of the GNU General Public License | |
18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 | ||
20 | # Generate the init.c source file. | |
21 | # | |
22 | # Usage: | |
23 | # | |
24 | # ./make-init-c source-files > init.c-tmp | |
25 | # | |
26 | # Where SOURCE-FILES is the list of source files to extract init functions from. | |
27 | # | |
28 | # Formatting conventions: The name of the initialization routines must begin | |
29 | # with `_initialize_`, must start in column zero, and be followed with exactly | |
30 | # ` ()`. For example: | |
31 | # | |
32 | # void | |
33 | # _initialize_foo () | |
34 | # { | |
35 | # ... | |
36 | # } | |
37 | # | |
38 | ||
39 | # Abort on command error. | |
40 | set -e | |
41 | ||
42 | echo "/* Do not modify this file. */" | |
43 | echo "/* It is created automatically by the Makefile. */" | |
44 | echo "#include \"defs.h\" /* For initialize_file_ftype. */" | |
d5a6313e | 45 | echo "#include <algorithm>" |
f39632d9 SM |
46 | echo "" |
47 | sed -n -e 's/^\(_initialize_[a-zA-Z0-9_]*\) ()$/\1/p' "$@" | while read -r name; do | |
48 | echo "extern initialize_file_ftype $name;" | |
49 | done | |
50 | echo "" | |
51 | echo "void initialize_all_files ();" | |
52 | echo "void" | |
53 | echo "initialize_all_files ()" | |
54 | echo "{" | |
d5a6313e SM |
55 | echo " std::vector<initialize_file_ftype *> functions =" |
56 | echo " {" | |
f39632d9 | 57 | sed -n -e 's/^\(_initialize_[a-zA-Z0-9_]*\) ()$/\1/p' "$@" | while read -r name; do |
d5a6313e | 58 | echo " $name," |
f39632d9 | 59 | done |
d5a6313e SM |
60 | echo " };" |
61 | echo "" | |
62 | echo " /* If GDB_REVERSE_INIT_FUNCTIONS is set (any value), reverse the" | |
63 | echo " order in which initialization functions are called. This is" | |
64 | echo " used by the testsuite. */" | |
65 | echo " if (getenv (\"GDB_REVERSE_INIT_FUNCTIONS\") != nullptr)" | |
66 | echo " std::reverse (functions.begin (), functions.end ());" | |
67 | echo "" | |
68 | echo " for (initialize_file_ftype *function : functions)" | |
69 | echo " function ();" | |
f39632d9 | 70 | echo "}" |