Deleted Added
full compact
1# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
2# $Id: bsd.lib.mk,v 1.5 1994/08/26 18:58:10 wollman Exp $
2# $Id: bsd.lib.mk,v 1.6 1994/08/28 15:37:39 bde Exp $
3#
4
5.if exists(${.CURDIR}/../Makefile.inc)
6.include "${.CURDIR}/../Makefile.inc"
7.endif
8
9.if exists(${.CURDIR}/shlib_version)
10SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
11SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
12.endif
13
14.if defined(DESTDIR)
15CFLAGS+= -I${DESTDIR}/usr/include
16CXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
17.endif
18
19.if defined(DEBUG_FLAGS)
20CFLAGS+= ${DEBUG_FLAGS}
21.endif
22
23INSTALL?= install
24LIBDIR?= /usr/lib
25LINTLIBDIR?= /usr/libdata/lint
26LIBGRP?= bin
27LIBOWN?= bin
28LIBMODE?= 444
29
30.if !defined(DEBUG_FLAGS)
31STRIP?= -s
32.endif
33
34BINGRP?= bin
35BINOWN?= bin
36BINMODE?= 555
37
38.MAIN: all
39
40# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
41# .so used for PIC object files
42.SUFFIXES:
43.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
44
45.c.o:
46 ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
47 @${LD} -x -r ${.TARGET}
48 @mv a.out ${.TARGET}
49
50.c.po:
51 ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
52 @${LD} -X -r ${.TARGET}
53 @mv a.out ${.TARGET}
54
55.c.so:
56 ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
57
58.cc.o .cxx.o .C.o:
59 ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
60 @${LD} -x -r ${.TARGET}
61 @mv a.out ${.TARGET}
62
63.cc.po .C.po .cxx.o:
64 ${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
65 @${LD} -X -r ${.TARGET}
66 @mv a.out ${.TARGET}
67
68.cc.so .C.so:
69 ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
70
71.f.o:
72 ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
73 @${LD} -x -r ${.TARGET}
74 @mv a.out ${.TARGET}
75
76.f.po:
77 ${FC} -p ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
78 @${LD} -X -r ${.TARGET}
79 @mv a.out ${.TARGET}
80
81.f.so:
82 ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
83
84.s.o:
85 ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
86 ${AS} -o ${.TARGET}
87 @${LD} -x -r ${.TARGET}
88 @mv a.out ${.TARGET}
89
90.s.po:
91 ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
92 ${AS} -o ${.TARGET}
93 @${LD} -X -r ${.TARGET}
94 @mv a.out ${.TARGET}
95
96.s.so:
97 ${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
98 ${AS} -k -o ${.TARGET}
99
100.S.o:
101 ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
102 ${AS} -o ${.TARGET}
103
104.S.po:
105 ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
106 ${AS} -o ${.TARGET}
107
108.S.so:
109 ${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
110 ${AS} -k -o ${.TARGET}
111
112.m.po:
113 ${CC} ${CFLAGS} -p -c ${.IMPSRC} -o ${.TARGET}
114 @${LD} -X -r ${.TARGET}
115 @mv a.out ${.TARGET}
116
117.m.o:
118 ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
119 @${LD} -X -r ${.TARGET}
120 @mv a.out ${.TARGET}
121
122.if !defined(INTERNALLIB)
123.if !defined(NOPROFILE)
124_LIBS=lib${LIB}.a lib${LIB}_p.a
125.else
126_LIBS=lib${LIB}.a
127.endif
128.endif
129
130.if !defined(NOPIC)
131.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
132_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
133.endif
134.if defined(INSTALL_PIC_ARCHIVE)
135_LIBS+=lib${LIB}_pic.a
136.endif
137.endif
138
139.if !defined(PICFLAG)
140PICFLAG=-fpic
141.endif
142
143all: ${_LIBS} # llib-l${LIB}.ln
144
145OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
146
147lib${LIB}.a:: ${OBJS}
148 @${ECHO} building standard ${LIB} library
149 @rm -f lib${LIB}.a
150 @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${ARADD}
151 ${RANLIB} lib${LIB}.a
152
153POBJS+= ${OBJS:.o=.po}
154lib${LIB}_p.a:: ${POBJS}
155 @${ECHO} building profiled ${LIB} library
156 @rm -f lib${LIB}_p.a
157 @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD}
158 ${RANLIB} lib${LIB}_p.a
159
160.if defined(DESTDIR)
161LDDESTDIR?= -L${DESTDIR}/usr/lib
162.endif
163
164.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir)
165SOBJS+= ${DESTDIR}/usr/lib/c++rt0.o
166.endif
167
168SOBJS+= ${OBJS:.o=.so}
169lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
170 @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
171 @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
172 @${LD} -Bshareable \
173 -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
174 ${SOBJS} ${LDDESTDIR} ${LDADD}
175
176lib${LIB}_pic.a:: ${SOBJS}
177 @${ECHO} building special pic ${LIB} library
178 @rm -f lib${LIB}_pic.a
179 @${AR} cTq lib${LIB}_pic.a ${SOBJS} ${ARADD}
180 ${RANLIB} lib${LIB}_pic.a
181
182llib-l${LIB}.ln: ${SRCS}
183 ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
184
185.if !target(clean)
186clean:
187 rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
188 rm -f lib${LIB}.a llib-l${LIB}.ln
189 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
190 rm -f ${SOBJS} shared/*.o
191 rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
192.endif
193
194.if !target(cleandir)
195cleandir:
196 rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
197 rm -f lib${LIB}.a llib-l${LIB}.ln
198 rm -f ${.CURDIR}/tags .depend
199 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
200 rm -f ${SOBJS} shared/*.o
201 rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
202 cd ${.CURDIR}; rm -rf obj;
203.endif
204
205.if defined(SRCS)
206afterdepend:
207 @(TMP=/tmp/_depend$$$$; \
208 sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \
209 mv $$TMP .depend)
210.endif
211
212.if !target(install)
213.if !target(beforeinstall)
214beforeinstall:
215.endif
216
217.if defined(PRECIOUSLIB)
218SHLINSTALLFLAGS+= -fschg
219.endif
220
221realinstall: beforeinstall
222.if !defined(INTERNALLIB)
223 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
224 ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
225 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
226.if !defined(NOPROFILE)
227 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
228 ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
229 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
230.endif
231.endif
232.if !defined(NOPIC)
233.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
234 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
235 ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
236 lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
237 ${DESTDIR}${LIBDIR}
238.endif
239.if defined(INSTALL_PIC_ARCHIVE)
240 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
241 ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
242 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
243.endif
244.endif
245.if defined(LINKS) && !empty(LINKS)
246 @set ${LINKS}; \
247 while test $$# -ge 2; do \
248 l=${DESTDIR}$$1; \
249 shift; \
250 t=${DESTDIR}$$1; \
251 shift; \
252 ${ECHO} $$t -\> $$l; \
253 rm -f $$t; \
254 ln $$l $$t; \
255 done; true
256.endif
257
258install: afterinstall
259.if !defined(NOMAN)
260afterinstall: realinstall maninstall
261.else
262afterinstall: realinstall
263.endif
264.endif
265
266.if !target(lint)
267lint:
268.endif
269
270.if !target(tags)
271tags: ${SRCS}
272 -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
273 sed "s;\${.CURDIR}/;;" > tags
274.endif
275
276.if !defined(NOMAN)
277.include <bsd.man.mk>
278.elif !target(maninstall)
279maninstall:
280.endif
281
282.if !target(obj)
283.if defined(NOOBJ)
284obj:
285.else
286obj:
287 @cd ${.CURDIR}; rm -rf obj; \
288 here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
289 ${ECHO} "$$here -> $$dest"; ln -s $$dest obj; \
290 if test -d /usr/obj -a ! -d $$dest; then \
291 mkdir -p $$dest; \
292 else \
293 true; \
294 fi;
295.endif
296.endif
297
298.include <bsd.dep.mk>