Annotation of src/share/mk/bsd.lib.mk, Revision 1.58
1.58 ! miod 1: # $OpenBSD: bsd.lib.mk,v 1.57 2007/01/04 11:51:26 otto Exp $
1.5 mickey 2: # $NetBSD: bsd.lib.mk,v 1.67 1996/01/17 20:39:26 mycroft Exp $
1.1 deraadt 3: # @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
4:
1.25 mickey 5: .include <bsd.own.mk> # for 'NOPIC' definition
6:
1.1 deraadt 7: .if exists(${.CURDIR}/../Makefile.inc)
8: .include "${.CURDIR}/../Makefile.inc"
9: .endif
10:
11: .if exists(${.CURDIR}/shlib_version)
1.33 espie 12: .include "${.CURDIR}/shlib_version"
1.55 bernd 13: .if defined(LIB) && defined(LIB${LIB}_VERSION)
14: SHLIB_MAJOR=${LIB${LIB}_VERSION:R}
15: SHLIB_MINOR=${LIB${LIB}_VERSION:E}
1.52 espie 16: .else
1.34 espie 17: SHLIB_MAJOR=${major}
18: SHLIB_MINOR=${minor}
1.52 espie 19: .endif
1.1 deraadt 20: .endif
21:
22: .MAIN: all
23:
24: # prefer .S to a .c, add .po, remove stuff not used in the BSD libraries.
25: # .so used for PIC object files. .ln used for lint output files.
1.20 espie 26: # .m for objective c files.
1.1 deraadt 27: .SUFFIXES:
1.21 niklas 28: .SUFFIXES: .out .o .go .po .so .S .s .c .cc .C .cxx .f .y .l .ln .m4 .m
1.1 deraadt 29:
30: .c.o:
1.57 otto 31: @echo "${COMPILE.c} ${.IMPSRC} -o ${.TARGET}"
1.49 kettenis 32: @${COMPILE.c} ${.IMPSRC} -o ${.TARGET}.o
33: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.1 deraadt 34: @rm -f ${.TARGET}.o
35:
1.21 niklas 36: .c.go:
37: @echo "${COMPILE.c} -g ${.IMPSRC} -o ${.TARGET}"
38: @${COMPILE.c} -g ${.IMPSRC} -o ${.TARGET}.o
39: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
40: @rm -f ${.TARGET}.o
41:
1.1 deraadt 42: .c.po:
1.49 kettenis 43: @echo "${COMPILE.c} -p ${.IMPSRC} -o ${.TARGET}"
44: @${COMPILE.c} -p ${.IMPSRC} -o ${.TARGET}.o
1.1 deraadt 45: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
46: @rm -f ${.TARGET}.o
47:
48: .c.so:
1.49 kettenis 49: @echo "${COMPILE.c} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}"
50: @${COMPILE.c} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}.o
51: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.1 deraadt 52: @rm -f ${.TARGET}.o
53:
54: .c.ln:
1.43 espie 55: ${LINT} ${LINTFLAGS} ${CFLAGS:M-[IDU]*} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
1.1 deraadt 56:
1.16 deraadt 57: .cc.o .C.o .cxx.o:
1.49 kettenis 58: @echo "${COMPILE.cc} ${.IMPSRC} -o ${.TARGET}"
59: @${COMPILE.cc} ${.IMPSRC} -o ${.TARGET}.o
60: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.1 deraadt 61: @rm -f ${.TARGET}.o
62:
1.21 niklas 63: .cc.go .C.go .cxx.go:
64: @echo "${COMPILE.cc} -g ${.IMPSRC} -o ${.TARGET}"
65: @${COMPILE.cc} -g ${.IMPSRC} -o ${.TARGET}.o
66: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
67: @rm -f ${.TARGET}.o
68:
1.16 deraadt 69: .cc.po .C.po .cxx.po:
1.51 kettenis 70: @echo "${COMPILE.cc} -p ${.IMPSRC} -o ${.TARGET}"
1.49 kettenis 71: @${COMPILE.cc} -p ${.IMPSRC} -o ${.TARGET}.o
1.1 deraadt 72: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
73: @rm -f ${.TARGET}.o
74:
1.16 deraadt 75: .cc.so .C.so .cxx.so:
1.49 kettenis 76: @echo "${COMPILE.cc} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}"
77: @${COMPILE.cc} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}.o
78: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.46 steven 79: @rm -f ${.TARGET}.o
80:
81: # Fortran 77
82: .f.o:
1.49 kettenis 83: @echo "${COMPILE.f} ${.IMPSRC} -o ${.TARGET}"
84: @${COMPILE.f} ${.IMPSRC} -o ${.TARGET}.o
85: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.46 steven 86: @rm -f ${.TARGET}.o
87:
88: .f.go:
89: @echo "${COMPILE.f} -g ${.IMPSRC} -o ${.TARGET}"
90: @${COMPILE.f} -g ${.IMPSRC} -o ${.TARGET}.o
91: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
92: @rm -f ${.TARGET}.o
93:
94: .f.po:
1.49 kettenis 95: @echo "${COMPILE.f} -p ${.IMPSRC} -o ${.TARGET}"
96: @${COMPILE.f} -p ${.IMPSRC} -o ${.TARGET}.o
1.46 steven 97: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
98: @rm -f ${.TARGET}.o
99:
100: .f.so:
1.49 kettenis 101: @echo "${COMPILE.f} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}"
102: @${COMPILE.f} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}.o
103: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.1 deraadt 104: @rm -f ${.TARGET}.o
105:
106: .S.o .s.o:
1.37 drahn 107: .if (${MACHINE_ARCH} == "arm")
1.41 deraadt 108: @echo ${COMPILE.S:Q} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC}
1.37 drahn 109: @${COMPILE.S} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
110: .else
1.1 deraadt 111: @echo "${CPP} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
112: ${AS} -o ${.TARGET}"
113: @${CPP} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
114: ${AS} -o ${.TARGET}.o
1.37 drahn 115: .endif
1.49 kettenis 116: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.1 deraadt 117: @rm -f ${.TARGET}.o
118:
1.21 niklas 119: .S.go .s.go:
120: @echo "${CPP} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} |\
121: ${AS} -o ${.TARGET}"
122: @${CPP} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
123: ${AS} -o ${.TARGET}.o
124: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
125: @rm -f ${.TARGET}.o
126:
1.1 deraadt 127: .S.po .s.po:
128: @echo "${CPP} -DPROF ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} |\
129: ${AS} -o ${.TARGET}"
130: @${CPP} -DPROF ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
131: ${AS} -o ${.TARGET}.o
132: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
133: @rm -f ${.TARGET}.o
134:
135: .S.so .s.so:
136: @echo "${CPP} -DPIC ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
1.36 drahn 137: ${AS} ${ASPICFLAG} -o ${.TARGET}"
1.1 deraadt 138: @${CPP} -DPIC ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
1.36 drahn 139: ${AS} ${ASPICFLAG} -o ${.TARGET}.o
1.49 kettenis 140: @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
1.1 deraadt 141: @rm -f ${.TARGET}.o
1.7 deraadt 142:
1.30 espie 143: .if ${WARNINGS:L} == "yes"
144: CFLAGS+= ${CDIAGFLAGS}
145: CXXFLAGS+= ${CXXDIAGFLAGS}
146: .endif
1.18 millert 147: CFLAGS+= ${COPTS}
1.30 espie 148: CXXFLAGS+= ${CXXOPTS}
1.47 kettenis 149:
1.58 ! miod 150: .if ${MACHINE} != "zaurus"
1.49 kettenis 151: DEBUG?= -g
1.50 deraadt 152: .endif
1.39 pvalchev 153:
1.21 niklas 154: _LIBS=lib${LIB}.a
1.24 espie 155: .if (${DEBUGLIBS:L} == "yes")
1.21 niklas 156: _LIBS+=lib${LIB}_g.a
157: .endif
1.1 deraadt 158: .if !defined(NOPROFILE)
1.21 niklas 159: _LIBS+=lib${LIB}_p.a
1.1 deraadt 160: .endif
161:
162: .if !defined(NOPIC)
1.42 deraadt 163: .if (${MACHINE_ARCH} != "mips64")
1.1 deraadt 164: _LIBS+=lib${LIB}_pic.a
1.6 pefo 165: .endif
1.35 espie 166: .if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
167: _LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1.1 deraadt 168: .endif
169: .endif
170:
1.53 grange 171: .if defined(WANTLINT) && ${WANTLINT:L} != "no"
1.1 deraadt 172: _LIBS+=llib-l${LIB}.ln
173: .endif
174:
175: all: ${_LIBS} _SUBDIRUSE
176:
177: OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
178:
179: lib${LIB}.a:: ${OBJS}
180: @echo building standard ${LIB} library
181: @rm -f lib${LIB}.a
1.12 niklas 182: @${AR} cq lib${LIB}.a `${LORDER} ${OBJS} | tsort -q`
1.1 deraadt 183: ${RANLIB} lib${LIB}.a
184:
1.21 niklas 185: GOBJS+= ${OBJS:.o=.go}
186: lib${LIB}_g.a:: ${GOBJS}
187: @echo building debugging ${LIB} library
188: @rm -f lib${LIB}_g.a
189: @${AR} cq lib${LIB}_g.a `${LORDER} ${GOBJS} | tsort -q`
190: ${RANLIB} lib${LIB}_g.a
191:
1.1 deraadt 192: POBJS+= ${OBJS:.o=.po}
193: lib${LIB}_p.a:: ${POBJS}
194: @echo building profiled ${LIB} library
195: @rm -f lib${LIB}_p.a
1.12 niklas 196: @${AR} cq lib${LIB}_p.a `${LORDER} ${POBJS} | tsort -q`
1.1 deraadt 197: ${RANLIB} lib${LIB}_p.a
198:
199: SOBJS+= ${OBJS:.o=.so}
200: lib${LIB}_pic.a:: ${SOBJS}
201: @echo building shared object ${LIB} library
202: @rm -f lib${LIB}_pic.a
1.12 niklas 203: @${AR} cq lib${LIB}_pic.a `${LORDER} ${SOBJS} | tsort -q`
1.1 deraadt 204: ${RANLIB} lib${LIB}_pic.a
205:
1.35 espie 206: lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} ${DPADD}
207: @echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
208: @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1.27 brad 209: ${CC} -shared ${PICFLAG} \
1.35 espie 210: -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
1.26 espie 211: `${LORDER} ${SOBJS}|tsort -q` ${LDADD}
1.1 deraadt 212:
213: LOBJS+= ${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
214: LLIBS?= -lc
215: llib-l${LIB}.ln: ${LOBJS}
216: @echo building llib-l${LIB}.ln
217: @rm -f llib-l${LIB}.ln
218: @${LINT} -C${LIB} ${LOBJS} ${LLIBS}
219:
220: .if !target(clean)
221: clean: _SUBDIRUSE
222: rm -f a.out [Ee]rrs mklog core *.core ${CLEANFILES}
223: rm -f lib${LIB}.a ${OBJS}
1.21 niklas 224: rm -f lib${LIB}_g.a ${GOBJS}
1.1 deraadt 225: rm -f lib${LIB}_p.a ${POBJS}
226: rm -f lib${LIB}_pic.a lib${LIB}.so.*.* ${SOBJS}
227: rm -f llib-l${LIB}.ln ${LOBJS}
228: .endif
229:
230: cleandir: _SUBDIRUSE clean
231:
232: .if defined(SRCS)
233: afterdepend: .depend
1.11 deraadt 234: @(TMP=`mktemp -q /tmp/_dependXXXXXXXXXX`; \
235: if [ $$? -ne 0 ]; then \
236: echo "$$0: cannot create temp file, exiting..."; \
237: exit 1; \
238: fi; \
239: sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' \
1.1 deraadt 240: < .depend > $$TMP; \
1.11 deraadt 241: mv $$TMP .depend)
1.1 deraadt 242: .endif
243:
244: .if !target(install)
245: .if !target(beforeinstall)
246: beforeinstall:
247: .endif
248:
249: realinstall:
250: # ranlib lib${LIB}.a
1.13 millert 251: ${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 lib${LIB}.a \
1.44 espie 252: ${DESTDIR}${LIBDIR}/lib${LIB}.a
1.13 millert 253: .if (${INSTALL_COPY} != "-p")
1.1 deraadt 254: ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
1.8 millert 255: .endif
1.1 deraadt 256: chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
1.24 espie 257: .if (${DEBUGLIBS:L} == "yes")
1.21 niklas 258: # ranlib lib${LIB}_g.a
259: ${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
260: lib${LIB}_g.a ${DESTDIR}${LIBDIR}/debug/lib${LIB}.a
261: .if (${INSTALL_COPY} != "-p")
262: ${RANLIB} -t ${DESTDIR}${LIBDIR}/debug/lib${LIB}.a
263: .endif
264: chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/debug/lib${LIB}.a
265: .endif
1.1 deraadt 266: .if !defined(NOPROFILE)
267: # ranlib lib${LIB}_p.a
1.13 millert 268: ${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
1.1 deraadt 269: lib${LIB}_p.a ${DESTDIR}${LIBDIR}
1.13 millert 270: .if (${INSTALL_COPY} != "-p")
1.1 deraadt 271: ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
1.8 millert 272: .endif
1.1 deraadt 273: chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
274: .endif
1.42 deraadt 275: .if !defined(NOPIC) && (${MACHINE_ARCH} != "mips64")
1.1 deraadt 276: # ranlib lib${LIB}_pic.a
1.13 millert 277: ${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
1.1 deraadt 278: lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
1.13 millert 279: .if (${INSTALL_COPY} != "-p")
1.1 deraadt 280: ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
1.8 millert 281: .endif
1.1 deraadt 282: chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
283: .endif
1.35 espie 284: .if !defined(NOPIC) && defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
1.13 millert 285: ${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
1.35 espie 286: lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} ${DESTDIR}${LIBDIR}
1.1 deraadt 287: .endif
1.53 grange 288: .if defined(WANTLINT) && ${WANTLINT:L} != "no"
1.13 millert 289: ${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
1.1 deraadt 290: llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}
291: .endif
292: .if defined(LINKS) && !empty(LINKS)
1.33 espie 293: . for lnk file in ${LINKS}
294: @l=${DESTDIR}${lnk}; \
295: t=${DESTDIR}${file}; \
296: echo $$t -\> $$l; \
297: rm -f $$t; ln $$l $$t
298: . endfor
1.1 deraadt 299: .endif
300:
301: install: maninstall _SUBDIRUSE
302: maninstall: afterinstall
303: afterinstall: realinstall
304: realinstall: beforeinstall
305: .endif
306:
307: .if !defined(NOMAN)
308: .include <bsd.man.mk>
309: .endif
310:
311: .if !defined(NONLS)
312: .include <bsd.nls.mk>
313: .endif
314:
315: .include <bsd.obj.mk>
316: .include <bsd.dep.mk>
317: .include <bsd.subdir.mk>
1.2 deraadt 318: .include <bsd.sys.mk>