]>
Commit | Line | Data |
---|---|---|
dd3b648e RP |
1 | #!/bin/sh |
2 | ||
3 | # create an initialization procedure from a list of .o files | |
4 | ||
5 | echo '/* Do not modify this file. It is created automatically by "munch". */' | |
6 | echo 'void initialize_all_files () {' | |
7 | ||
faaaea3c SG |
8 | NMOPT="" |
9 | case $1 in | |
44f0c5db JG |
10 | MUNCH_NM=*) |
11 | MUNCH_NM=`echo $1 | sed 's/MUNCH_NM=//'`; shift ;; | |
12 | -*) | |
13 | NMOPT=$1; shift ;; | |
faaaea3c SG |
14 | esac |
15 | ||
dd3b648e | 16 | # make it easy to use a different nm, e.g. for cross-developing |
faaaea3c | 17 | |
44f0c5db | 18 | MUNCH_NM="${MUNCH_NM-nm} $NMOPT" |
cb17dfb1 FF |
19 | if test "`$MUNCH_NM main.o | egrep main | egrep FUNC | egrep GLOB`" != "" ; then |
20 | # System V Release 4 style nm | |
21 | $MUNCH_NM $* | egrep '|__?initialize_' | egrep FUNC | \ | |
22 | sed -e 's/^.*\(_initialize_[a-zA-Z0-9_]*\).*$/ {extern void \1 (); \1 ();}/' | |
23 | elif test "`$MUNCH_NM main.o | egrep 'T _?main$'`" = "" ; then | |
dd3b648e RP |
24 | # System V style nm |
25 | shift; | |
26 | $MUNCH_NM $* | egrep '^(.*[^a-zA-Z_]_|_)_?initialize_.*\.text' | \ | |
27 | sed -e 's/^.*\(_initialize_[a-zA-Z0-9_]*\)[^a-zA-Z0-9_].*$/ {extern void \1 (); \1 ();}/' | |
28 | else | |
29 | # BSD style nm | |
44f0c5db JG |
30 | # We now accept either text or data symbols, since the RT/PC uses data. |
31 | $MUNCH_NM -p $* | egrep '[TD] *_?_initialize_' | \ | |
32 | sed -e 's/^.*[TD] *_*\(.*\)/ {extern void _\1 (); _\1 ();}/' | |
dd3b648e RP |
33 | fi |
34 | ||
35 | echo '}' |