1# $NetBSD: bsd.lib.mk,v 1.68 1996/09/05 19:12:33 cgd Exp $ 2# @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 3 4.if exists(${.CURDIR}/../Makefile.inc) 5.include "${.CURDIR}/../Makefile.inc" 6.endif 7 8.include <bsd.own.mk> # for 'NOPIC' definition 9 10.if exists(${.CURDIR}/shlib_version) 11SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 12SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 13.endif 14 15.MAIN: all 16 17# prefer .S to a .c, add .po, remove stuff not used in the BSD libraries. 18# .so used for PIC object files. .ln used for lint output files. 19.SUFFIXES: 20.SUFFIXES: .out .o .po .so .S .s .c .cc .C .f .y .l .ln .m4 21 22.c.o: 23 @echo "${COMPILE.c} ${.IMPSRC}" 24 @${COMPILE.c} ${.IMPSRC} -o ${.TARGET}.o 25 @${LD} -x -r ${.TARGET}.o -o ${.TARGET} 26 @rm -f ${.TARGET}.o 27 28.c.po: 29 @echo "${COMPILE.c} -pg ${.IMPSRC} -o ${.TARGET}" 30 @${COMPILE.c} -pg ${.IMPSRC} -o ${.TARGET}.o 31 @${LD} -X -r ${.TARGET}.o -o ${.TARGET} 32 @rm -f ${.TARGET}.o 33 34.c.so: 35 @echo "${COMPILE.c} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}" 36 @${COMPILE.c} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}.o 37 @${LD} -x -r ${.TARGET}.o -o ${.TARGET} 38 @rm -f ${.TARGET}.o 39 40.c.ln: 41 ${LINT} ${LINTFLAGS} ${CFLAGS:M-[IDU]*} -i ${.IMPSRC} 42 43.cc.o .C.o: 44 @echo "${COMPILE.cc} ${.IMPSRC}" 45 @${COMPILE.cc} ${.IMPSRC} -o ${.TARGET}.o 46 @${LD} -x -r ${.TARGET}.o -o ${.TARGET} 47 @rm -f ${.TARGET}.o 48 49.cc.po .C.po: 50 @echo "${COMPILE.cc} -pg ${.IMPSRC} -o ${.TARGET}" 51 @${COMPILE.cc} -pg ${.IMPSRC} -o ${.TARGET}.o 52 @${LD} -X -r ${.TARGET}.o -o ${.TARGET} 53 @rm -f ${.TARGET}.o 54 55.cc.so .C.so: 56 @echo "${COMPILE.cc} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}" 57 @${COMPILE.cc} ${PICFLAG} -DPIC ${.IMPSRC} -o ${.TARGET}.o 58 @${LD} -x -r ${.TARGET}.o -o ${.TARGET} 59 @rm -f ${.TARGET}.o 60 61.S.o .s.o: 62 @echo "${CPP} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 63 ${AS} -o ${.TARGET}" 64 @${CPP} ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 65 ${AS} -o ${.TARGET}.o 66 @${LD} -x -r ${.TARGET}.o -o ${.TARGET} 67 @rm -f ${.TARGET}.o 68 69.S.po .s.po: 70 @echo "${CPP} -DPROF ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} |\ 71 ${AS} -o ${.TARGET}" 72 @${CPP} -DPROF ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 73 ${AS} -o ${.TARGET}.o 74 @${LD} -X -r ${.TARGET}.o -o ${.TARGET} 75 @rm -f ${.TARGET}.o 76 77.S.so .s.so: 78 @echo "${CPP} -DPIC ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 79 ${AS} -k -o ${.TARGET}" 80 @${CPP} -DPIC ${CPPFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 81 ${AS} -k -o ${.TARGET}.o 82 @${LD} -x -r ${.TARGET}.o -o ${.TARGET} 83 @rm -f ${.TARGET}.o 84 85.if !defined(PICFLAG) 86PICFLAG=-fpic 87.endif 88 89.if !defined(NOPROFILE) 90_LIBS=lib${LIB}.a lib${LIB}_p.a 91.else 92_LIBS=lib${LIB}.a 93.endif 94 95.if !defined(NOPIC) 96_LIBS+=lib${LIB}_pic.a 97.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 98_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 99.endif 100.endif 101 102.if !defined(NOLINT) 103_LIBS+=llib-l${LIB}.ln 104.endif 105 106all: ${_LIBS} _SUBDIRUSE 107 108OBJS+= ${SRCS:N*.h:R:S/$/.o/g} 109 110lib${LIB}.a:: ${OBJS} 111 @echo building standard ${LIB} library 112 @rm -f lib${LIB}.a 113 @${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` 114 ${RANLIB} lib${LIB}.a 115 116POBJS+= ${OBJS:.o=.po} 117lib${LIB}_p.a:: ${POBJS} 118 @echo building profiled ${LIB} library 119 @rm -f lib${LIB}_p.a 120 @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` 121 ${RANLIB} lib${LIB}_p.a 122 123SOBJS+= ${OBJS:.o=.so} 124lib${LIB}_pic.a:: ${SOBJS} 125 @echo building shared object ${LIB} library 126 @rm -f lib${LIB}_pic.a 127 @${AR} cq lib${LIB}_pic.a `lorder ${SOBJS} | tsort -q` 128 ${RANLIB} lib${LIB}_pic.a 129 130lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: lib${LIB}_pic.a ${DPADD} 131 @echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) 132 @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 133 $(LD) -x -Bshareable -Bforcearchive \ 134 -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} lib${LIB}_pic.a ${LDADD} 135 136LOBJS+= ${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln} 137# the following looks XXX to me... -- cgd 138LLIBS?= -lc 139llib-l${LIB}.ln: ${LOBJS} 140 @echo building llib-l${LIB}.ln 141 @rm -f llib-l${LIB}.ln 142 @${LINT} -C${LIB} ${LOBJS} ${LLIBS} 143 144.if !target(clean) 145clean: _SUBDIRUSE 146 rm -f a.out [Ee]rrs mklog core *.core ${CLEANFILES} 147 rm -f lib${LIB}.a ${OBJS} 148 rm -f lib${LIB}_p.a ${POBJS} 149 rm -f lib${LIB}_pic.a lib${LIB}.so.*.* ${SOBJS} 150 rm -f llib-l${LIB}.ln ${LOBJS} 151.endif 152 153cleandir: _SUBDIRUSE clean 154 155.if defined(SRCS) 156afterdepend: .depend 157 @(TMP=/tmp/_depend$$$$; \ 158 sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' \ 159 < .depend > $$TMP; \ 160 mv $$TMP .depend) 161.endif 162 163.if !target(install) 164.if !target(beforeinstall) 165beforeinstall: 166.endif 167 168realinstall: 169# ranlib lib${LIB}.a 170 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 lib${LIB}.a \ 171 ${DESTDIR}${LIBDIR} 172 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a 173 chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a 174.if !defined(NOPROFILE) 175# ranlib lib${LIB}_p.a 176 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \ 177 lib${LIB}_p.a ${DESTDIR}${LIBDIR} 178 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 179 chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 180.endif 181.if !defined(NOPIC) 182# ranlib lib${LIB}_pic.a 183 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \ 184 lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 185 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 186 chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 187.endif 188.if !defined(NOPIC) && defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 189 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 190 lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} ${DESTDIR}${LIBDIR} 191.endif 192.if !defined(NOLINT) 193 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 194 llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR} 195.endif 196.if defined(LINKS) && !empty(LINKS) 197 @set ${LINKS}; \ 198 while test $$# -ge 2; do \ 199 l=${DESTDIR}$$1; \ 200 shift; \ 201 t=${DESTDIR}$$1; \ 202 shift; \ 203 echo $$t -\> $$l; \ 204 rm -f $$t; \ 205 ln $$l $$t; \ 206 done; true 207.endif 208 209install: maninstall _SUBDIRUSE 210maninstall: afterinstall 211afterinstall: realinstall 212realinstall: beforeinstall 213.endif 214 215.if !defined(NOMAN) 216.include <bsd.man.mk> 217.endif 218 219.if !defined(NONLS) 220.include <bsd.nls.mk> 221.endif 222 223.include <bsd.obj.mk> 224.include <bsd.dep.mk> 225.include <bsd.subdir.mk> 226.include <bsd.sys.mk> 227