]>
Commit | Line | Data |
---|---|---|
6a161fa9 | 1 | #! /bin/sh |
2 | # | |
5a79f472 | 3 | # Copyright (C) 2002,2006,2007 Free Software Foundation, Inc. |
6a161fa9 | 4 | # |
7b455f4d | 5 | # This gensymlist.sh.in is free software; the author |
6a161fa9 | 6 | # gives unlimited permission to copy and/or distribute it, |
7 | # with or without modifications, as long as this notice is preserved. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY, to the extent permitted by law; without | |
11 | # even the implied warranty of MERCHANTABILITY or FITNESS FOR A | |
12 | # PARTICULAR PURPOSE. | |
13 | ||
7b455f4d | 14 | ### The configure script will replace these variables. |
15 | ||
16 | srcdir=@srcdir@ | |
17 | CC=@CC@ | |
18 | ||
19 | ||
6a161fa9 | 20 | cat <<EOF |
21 | /* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */ | |
22 | /* | |
4b13b216 | 23 | * GRUB -- GRand Unified Bootloader |
5a79f472 | 24 | * Copyright (C) 2002,2006,2007 Free Software Foundation, Inc. |
6a161fa9 | 25 | * |
5a79f472 | 26 | * GRUB is free software: you can redistribute it and/or modify |
6a161fa9 | 27 | * it under the terms of the GNU General Public License as published by |
5a79f472 | 28 | * the Free Software Foundation, either version 3 of the License, or |
6a161fa9 | 29 | * (at your option) any later version. |
30 | * | |
5a79f472 | 31 | * GRUB is distributed in the hope that it will be useful, |
6a161fa9 | 32 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
33 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
34 | * GNU General Public License for more details. | |
35 | * | |
36 | * You should have received a copy of the GNU General Public License | |
5a79f472 | 37 | * along with GRUB. If not, see <http://www.gnu.org/licenses/>. |
6a161fa9 | 38 | */ |
39 | ||
40 | EOF | |
41 | ||
42 | for i in $*; do | |
43 | echo "#include <$i>" | |
44 | done | |
45 | ||
46 | cat <<EOF | |
47 | ||
48 | void | |
4b13b216 | 49 | grub_register_exported_symbols (void) |
6a161fa9 | 50 | { |
51 | EOF | |
52 | ||
53 | cat <<EOF | |
54 | struct symtab { const char *name; void *addr; }; | |
55 | struct symtab *p; | |
56 | static struct symtab tab[] = | |
57 | { | |
58 | EOF | |
59 | ||
7b455f4d | 60 | $CC -DGRUB_SYMBOL_GENERATOR=1 -E -I. -Iinclude -I$srcdir/include $* \ |
61 | | grep -v '^#' \ | |
62 | | sed -n \ | |
63 | -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/ {"\1", \1},/;p;}' \ | |
64 | -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/ {"\1", \&\1},/;p;}' \ | |
65 | | sort -u | |
6a161fa9 | 66 | |
67 | cat <<EOF | |
68 | {0, 0} | |
69 | }; | |
70 | ||
71 | for (p = tab; p->name; p++) | |
4b13b216 | 72 | grub_dl_register_symbol (p->name, p->addr, 0); |
6a161fa9 | 73 | } |
74 | EOF |