blob: 5c37b29207a36f005b101904c406e224cb4bbf61 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#! /bin/sh
prog=`basename $0 .sh`
die() {
echo "$prog failure: $*"
kill -TERM $progpid
sleep 1
exit 1
}
init() {
PS4='>tpc-${FUNCNAME}> '
set -e
progpid=$$
prog=`basename $0`
progdir=`\cd \`dirname $0\` >/dev/null ; pwd`
readonly progpid progdir prog
for d in top_srcdir srcdir top_builddir builddir
do
eval v=\${$d}
test -d "$v" || die "$d does not reference a directory"
v=`cd $v >/dev/null && pwd`
eval ${d}=${v}
done
. ${top_builddir}/config/shdefs
}
collect_src() {
exec 8>&1 1>&2
cd ${builddir}
sentinel_file=${1} ; shift
cat 1>&8 <<- _EOF_
#define AUTOOPTS_INTERNAL 1
#include "autoopts/project.h"
#define LOCAL static
#include "ao-strs.h"
_EOF_
for f in "$@"
do test "X$f" = "Xproject.h" || \
printf '#include "%s"\n' $f
done 1>&8
}
extension_defines() {
cd ${builddir}/tpl
test -f tpl-config.tlib || die "tpl-config.tlib not configured"
test -f ${top_builddir}/config.h || die "config.h missing"
${GREP} 'extension-defines' tpl-config.tlib >/dev/null && return
txt=`sed -n '/POSIX.*SOURCE/,/does not conform to ANSI C/{
/^#/p
}
/does not conform to ANSI C/q' ${top_builddir}/config.h`
{
sed '/define *top-build-dir/d;/^;;;/d' tpl-config.tlib
cat <<- _EOF_
(define top-build-dir "`cd ${top_builddir} >/dev/null
pwd`")
(define top-src-dir "`cd ${top_srcdir} >/dev/null
pwd`")
(define extension-defines
"${txt}") \\=]
_EOF_
} > tpl-config.$$
mv -f tpl-config.$$ tpl-config.tlib
}
set_shell_prog() {
case `uname -s` in
SunOS )
while : ; do
POSIX_SHELL=`which bash`
test -x "${POSIX_SHELL}" && break
POSIX_SHELL=/usr/xpg4/bin/sh
test -x "${POSIX_SHELL}" && break
die "You are hosed. You are on Solaris and have no usable shell."
done
;;
esac
for f in ${srcdir}/tpl/*.sh ${srcdir}/tpl/*.pl
do
d=`basename $f | sed 's/\.[sp][hl]$//'`
st=`sed 1q $f`
case "$st" in
*perl ) echo '#!' `which perl`
sed 1d $f
;;
*/sh ) echo '#!' ${POSIX_SHELL}
sed 1d $f
;;
* ) die "Invalid script type: $st"
;;
esac > $d
chmod 755 $d
done
}
set_cat_prog() {
while :
do
\unalias -a
unset -f command cat which
POSIX_CAT=`which cat`
test -x "$POSIX_CAT" && break
POSIX_CAT=`
PATH=\`command -p getconf CS_PATH\`
command -v cat `
test -x "${POSIX_CAT}" && break
die "cannot locate 'cat' command"
done
formats='man mdoc texi'
for f in $formats
do
for g in $formats
do
test -f ${f}2${g} || {
printf "#! ${POSIX_SHELL}\nexec ${POSIX_CAT} "'${1+"$@"}\n' \
> ${f}2${g}
chmod 755 ${f}2${g}
}
done
done
}
init
collect_src "$@" > ${builddir}/libopts.c
extension_defines
set_shell_prog
set_cat_prog
touch ${sentinel_file}
|