]>
Commit | Line | Data |
---|---|---|
6a161fa9 | 1 | #! /bin/sh |
2 | # | |
f36cc108 | 3 | # Copyright (C) 2002,2006,2007,2008 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 | ||
26887f22 | 16 | : ${srcdir=@srcdir@} |
0dd1e0dd | 17 | : ${CC=@TARGET_CC@} |
7b455f4d | 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 |
f36cc108 | 24 | * Copyright (C) 2002,2006,2007,2008 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 | ||
26887f22 | 48 | #define COMPILE_TIME_ASSERT(cond) switch (0) { case 1: case !(cond): ; } |
49 | ||
6a161fa9 | 50 | void |
4b13b216 | 51 | grub_register_exported_symbols (void) |
6a161fa9 | 52 | { |
53 | EOF | |
54 | ||
55 | cat <<EOF | |
56 | struct symtab { const char *name; void *addr; }; | |
57 | struct symtab *p; | |
58 | static struct symtab tab[] = | |
59 | { | |
60 | EOF | |
61 | ||
f84b481b | 62 | $CC @TARGET_CFLAGS@ -DGRUB_SYMBOL_GENERATOR=1 -E -I. -Iinclude -I"$srcdir/include" $* \ |
7b455f4d | 63 | | grep -v '^#' \ |
64 | | sed -n \ | |
65 | -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/ {"\1", \1},/;p;}' \ | |
66 | -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/ {"\1", \&\1},/;p;}' \ | |
67 | | sort -u | |
6a161fa9 | 68 | |
69 | cat <<EOF | |
70 | {0, 0} | |
71 | }; | |
72 | ||
26887f22 | 73 | COMPILE_TIME_ASSERT (sizeof (tab) > sizeof (tab[0])); |
6a161fa9 | 74 | for (p = tab; p->name; p++) |
4b13b216 | 75 | grub_dl_register_symbol (p->name, p->addr, 0); |
6a161fa9 | 76 | } |
77 | EOF |