Fix bsd.lib.mk so that sh args are not overflowed
[unix-history] / usr / src / share / mk / bsd.lib.mk
CommitLineData
2a317ca2 1# @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
0c7e5c52
RG
2#
3# PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
4# -------------------- ----- ----------------------
5# CURRENT PATCH LEVEL: 1 00157
6# -------------------- ----- ----------------------
7#
8# 27 Apr 93 Rodney W. Grimes Break up cleandir so that we do not
9# overflow shell args
2a317ca2
AV
10
11.if exists(${.CURDIR}/../Makefile.inc)
12.include "${.CURDIR}/../Makefile.inc"
13.endif
14
15LIBDIR?= /usr/lib
16LINTLIBDIR?= /usr/libdata/lint
17LIBGRP?= bin
18LIBOWN?= bin
19LIBMODE?= 444
20
21STRIP?= -s
22
23BINGRP?= bin
24BINOWN?= bin
25BINMODE?= 555
26
27.MAIN: all
28
29# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
30.SUFFIXES:
31.SUFFIXES: .out .o .po .s .c .f .y .l .8 .7 .6 .5 .4 .3 .2 .1 .0
32
33.8.0 .7.0 .6.0 .5.0 .4.0 .3.0 .2.0 .1.0:
34 nroff -mandoc ${.IMPSRC} > ${.TARGET}
35
36.c.o:
37 ${CC} ${CFLAGS} -c ${.IMPSRC}
38 @${LD} -x -r ${.TARGET}
39 @mv a.out ${.TARGET}
40
41.c.po:
42 ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
43 @${LD} -X -r ${.TARGET}
44 @mv a.out ${.TARGET}
45
46.s.o:
47 ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
48 ${AS} -o ${.TARGET}
49 @${LD} -x -r ${.TARGET}
50 @mv a.out ${.TARGET}
51
52.s.po:
53 ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
54 ${AS} -o ${.TARGET}
55 @${LD} -X -r ${.TARGET}
56 @mv a.out ${.TARGET}
57
58MANALL= ${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8}
59
60.if !defined(NOPROFILE)
61_LIBS=lib${LIB}.a lib${LIB}_p.a
62.else
63_LIBS=lib${LIB}.a
64.endif
65
66all: ${_LIBS} ${MANALL}# llib-l${LIB}.ln
67
68OBJS+= ${SRCS:R:S/$/.o/g}
69
70lib${LIB}.a:: ${OBJS}
71 @echo building standard ${LIB} library
72 @rm -f lib${LIB}.a
73 @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${LDADD}
74 ranlib lib${LIB}.a
75
76POBJS+= ${OBJS:.o=.po}
77lib${LIB}_p.a:: ${POBJS}
78 @echo building profiled ${LIB} library
79 @rm -f lib${LIB}_p.a
80 @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD}
81 ranlib lib${LIB}_p.a
82
83llib-l${LIB}.ln: ${SRCS}
84 ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
85
86.if !target(clean)
87clean:
88 rm -f a.out Errs errs mklog core ${CLEANFILES} ${OBJS} ${POBJS} \
89 ${MANALL} profiled/*.o lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln
90.endif
91
92.if !target(cleandir)
93cleandir:
0c7e5c52
RG
94 rm -f a.out Errs errs mklog core ${CLEANFILES} ${OBJS} \
95 lib${LIB}.a llib-l${LIB}.ln \
2a317ca2 96 ${MANALL} ${.CURDIR}/tags .depend
0c7e5c52 97 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
2a317ca2
AV
98 cd ${.CURDIR}; rm -rf obj;
99.endif
100
101.if !target(depend)
102depend: .depend
103.depend: ${SRCS}
104 mkdep ${CFLAGS:M-[ID+]*} ${AINC} ${.ALLSRC}
105 @(TMP=/tmp/_depend$$$$; \
106 sed -e 's/^\([^\.]*\).o:/\1.o \1.po:/' < .depend > $$TMP; \
107 mv $$TMP .depend)
108.endif
109
110.if !target(install)
111.if !target(beforeinstall)
112beforeinstall:
113.endif
114
115realinstall: beforeinstall
116 ranlib lib${LIB}.a
117 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \
118 ${DESTDIR}${LIBDIR}
119 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
120.if !defined(NOPROFILE)
121 ranlib lib${LIB}_p.a
122 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
123 lib${LIB}_p.a ${DESTDIR}${LIBDIR}
124 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
125.endif
126# install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
127# llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}
128.if defined(LINKS) && !empty(LINKS)
129 @set ${LINKS}; \
130 while test $$# -ge 2; do \
131 l=${DESTDIR}$$1; \
132 shift; \
133 t=${DESTDIR}$$1; \
134 shift; \
135 echo $$t -\> $$l; \
136 rm -f $$t; \
137 ln $$l $$t; \
138 done; true
139.endif
140
141install: afterinstall
142afterinstall: realinstall maninstall
143.endif
144
145.if !target(lint)
146lint:
147.endif
148
149.if !target(tags)
150tags: ${SRCS}
151 -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
152 sed "s;\${.CURDIR}/;;" > tags
153.endif
154
155.include <bsd.man.mk>
156.if !target(obj)
157.if defined(NOOBJ)
158obj:
159.else
160obj:
161 @cd ${.CURDIR}; rm -rf obj; \
162 here=`pwd`; dest=/usr/obj/`echo $$here | sed 's,/usr/src/,,'`; \
163 echo "$$here -> $$dest"; ln -s $$dest obj; \
164 if test -d /usr/obj -a ! -d $$dest; then \
165 mkdir -p $$dest; \
166 else \
167 true; \
168 fi;
169.endif
170.endif