Merge from vendor branch GCC:
[dragonfly.git] / tools / tools / tcl_bmake / mkMakefile.sh
1 #! /bin/sh
2 # $FreeBSD: src/tools/tools/tcl_bmake/mkMakefile.sh,v 1.30 1999/08/28 00:54:33 peter Exp $
3 # $DragonFly: src/tools/tools/tcl_bmake/Attic/mkMakefile.sh,v 1.2 2003/06/17 04:29:11 dillon Exp $
4 #
5 # This script generates a bmake Makefile for src/lib/libtcl
6 #
7
8 set -e
9
10 # SETME: what versions the  shared library should have.
11 SHLIB_MAJOR=80
12 SHLIB_MINOR=4
13
14 # SETME: where is the tcl stuff relative to this script
15 SRCDIR=../../../contrib/tcl
16
17 # SETME: where is the tcl stuff relative to src/lib/libtcl
18 LIBTCL=../../../lib/libtcl/
19
20 mkdir -p ${LIBTCL}
21
22 (cd ${SRCDIR}/unix ; sh configure --enable-shared --prefix=/usr) || true
23
24 echo "include ${SRCDIR}/unix/Makefile" > m.x
25 echo '
26 foo:
27         @echo ${OBJS}
28 bar:
29         @echo ${AC_FLAGS} -DTCL_SHLIB_EXT=\\\"${SHLIB_SUFFIX}\\\"
30 ' >> m.x
31
32 # Put a RCS Id  in the file, but not the one from this file :-)
33 if [ -f ${LIBTCL}Makefile ]; then
34   rcsid=`head -1 ${LIBTCL}Makefile`
35   echo "${rcsid}" > ${LIBTCL}Makefile
36 else
37   echo -n '# $' > ${LIBTCL}Makefile
38   echo -n 'Id' >> ${LIBTCL}Makefile
39   echo '$' >> ${LIBTCL}Makefile
40 fi
41
42 # Tell 'em !
43 echo '#
44 # This file is generated automatically, do not edit it here!
45 #
46 # Please change src/tools/tools/tcl_bmake/mkMakefile.sh instead
47 #
48 # Generated by src/tools/tools/tcl_bmake/mkMakefile.sh version:
49 # $FreeBSD: src/tools/tools/tcl_bmake/mkMakefile.sh,v 1.30 1999/08/28 00:54:33 peter Exp $
50 #
51 ' | tr -d '$' >> ${LIBTCL}Makefile
52
53 # Tell make(1) to pick up stuff from here
54 echo 'TCLDIST=${.CURDIR}/../../contrib/tcl' >> ${LIBTCL}Makefile
55
56 echo  >> ${LIBTCL}Makefile
57
58 echo '.PATH: ${TCLDIST}/generic' >> ${LIBTCL}Makefile
59 echo '.PATH: ${TCLDIST}/unix' >> ${LIBTCL}Makefile
60 echo '.PATH: ${TCLDIST}/doc' >> ${LIBTCL}Makefile
61
62 echo  >> ${LIBTCL}Makefile
63
64 # Tell cpp(1) to pick up stuff from here
65 echo 'CFLAGS+=  -I${TCLDIST}/generic' >> ${LIBTCL}Makefile
66 echo 'CFLAGS+=  -I${TCLDIST}/unix' >> ${LIBTCL}Makefile
67
68 echo  >> ${LIBTCL}Makefile
69
70 # Pick up some more global info
71 echo "TCL_LIBRARY=      /usr/libdata/tcl" >> ${LIBTCL}Makefile
72 echo "SHLIB_MAJOR=      ${SHLIB_MAJOR}"     >> ${LIBTCL}Makefile
73 echo "SHLIB_MINOR=      ${SHLIB_MINOR}"     >> ${LIBTCL}Makefile
74
75 # Set the name of the library
76 echo '
77 LIB=    tcl
78 ' >> ${LIBTCL}Makefile
79
80 # some needed CFLAGS
81 echo "CFLAGS+=" `make -f m.x bar` >> ${LIBTCL}Makefile
82
83 # some more needed CFLAGS
84 echo "CFLAGS+=  -DTCL_LIBRARY=\\\"\${TCL_LIBRARY}\\\"" >> ${LIBTCL}Makefile
85 echo "CFLAGS+=  -DTCL_PACKAGE_PATH=\\\"/usr/libdata/tcl\\\"" >> ${LIBTCL}Makefile
86
87 echo '
88 LDADD+= -lm
89 DPADD+= ${LIBM}
90 ' >>  ${LIBTCL}Makefile
91
92 # The sources
93 make -f m.x foo | fmt 60 65 | sed '
94 s/^/    /
95 s/$/ \\/
96 s/\.o/.c/g
97 1s/     /SRCS=  /
98 $s/ \\$//
99 ' >> ${LIBTCL}Makefile
100
101 echo '
102 beforeinstall: installhdrs
103         ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
104                 ${TCLDIST}/library/tclIndex ${DESTDIR}${TCL_LIBRARY} 
105         ( cd ${TCLDIST}/library && \
106         for e in . http1.0 ; do \
107         ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
108                 $$e/*.tcl ${DESTDIR}${TCL_LIBRARY}/$$e ; \
109         done )
110         ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
111                 ${TCLDIST}/doc/man.macros ${DESTDIR}/usr/share/tmac/tcl.macros
112
113 installhdrs:
114         ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
115                 ${TCLDIST}/generic/tcl.h ${DESTDIR}/usr/include/tcl
116         ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
117                 ${TCLDIST}/unix/tclAppInit.c ${DESTDIR}${TCL_LIBRARY}
118
119 MANFILTER=sed "/\.so *man.macros/s;.*;.so /usr/share/tmac/tcl.macros;"
120 ' >> ${LIBTCL}Makefile
121
122 # The (n) manpages
123 (cd ${SRCDIR}/doc; echo *.n) | fmt 60 65 | sed '
124 s/^/    /
125 s/$/ \\/
126 1s/     /MANn+= /
127 $s/ \\$//
128 ' >> ${LIBTCL}Makefile
129
130 echo  >>  ${LIBTCL}Makefile
131
132 # The (3) manpages
133 for i in ${SRCDIR}/doc/*.3
134 do
135         sed '
136         1,/^.SH NAME/d
137         /^.SH SYNOPSIS/,$d
138         ' $i | sed -n '
139         1s/[, \\].*/.3/p
140         '
141 done | fmt 60 65 | sed '
142 s/^/    /
143 s/$/ \\/
144 1s/     /MAN3+= /
145 $s/ \\$//
146 ' >> ${LIBTCL}Makefile
147
148 echo  >>  ${LIBTCL}Makefile
149
150 for i in ${SRCDIR}/doc/*.3
151 do
152         sed '
153         1,/^.SH NAME/d
154         /^.SH SYNOPSIS/,$d
155         s/,//g
156         ' $i | sed -n '
157         1s/\\-.*//p
158         ' | awk '
159                 {
160                 for (i = 2 ; i <= NF ; i++)
161                         print "MLINKS+= " $1 ".3 " $i ".3 "
162                 }
163         ' >> ${LIBTCL}Makefile
164 done
165
166 echo '
167 # Ugly, I know, but what else can I do?!?' >> ${LIBTCL}Makefile
168
169 for i in ${SRCDIR}/doc/*.3
170 do
171         sed '
172         1,/^.SH NAME/d
173         /^.SH SYNOPSIS/,$d
174         s/,//g
175         ' $i | sed -n '
176         1s/\\-.*//p
177         ' | awk '{ print "TCLMAN+= " $1 ".3 " B  ".3" }' B=`basename $i .3` 
178 done >> ${LIBTCL}Makefile
179
180 cat << 'EOF' >> ${LIBTCL}Makefile
181
182 _tcltmp=
183 _tclprev=
184 .for _tclpage in ${TCLMAN}
185 .if !empty(_tclprev)
186 _tcltmp:= ${_tcltmp} ${_tclprev}        # assign with expansion
187 ${_tclprev}: ${TCLDIST}/doc/${_tclpage}
188         cp -f ${.ALLSRC} ${.TARGET}
189 _tclprev=
190 .else
191 _tclprev=${_tclpage}
192 .endif
193 .endfor
194 CLEANFILES+= ${_tcltmp}
195
196 .include <bsd.lib.mk>
197 EOF
198
199 rm -f m.x ${SRCDIR}/unix/config.log ${SRCDIR}/unix/Makefile \
200         ${SRCDIR}/unix/config.cache ${SRCDIR}/unix/config.status \
201         ${SRCDIR}/unix/tclConfig.sh