bsd.lib.mk revision 3859
1# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 2# $Id: bsd.lib.mk,v 1.9 1994/09/18 22:22:32 wollman 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) || defined(INTERNALSTATICLIB) 123.if !defined(NOPROFILE) && !defined(INTERNALLIB) 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 153.if !defined(NOPROFILE) 154POBJS+= ${OBJS:.o=.po} 155lib${LIB}_p.a:: ${POBJS} 156 @${ECHO} building profiled ${LIB} library 157 @rm -f lib${LIB}_p.a 158 @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD} 159 ${RANLIB} lib${LIB}_p.a 160.endif 161 162.if defined(DESTDIR) 163LDDESTDIR?= -L${DESTDIR}/usr/lib 164.endif 165 166.if !defined(NOPIC) 167.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir) 168SOBJS+= ${DESTDIR}/usr/lib/c++rt0.o 169.endif 170 171SOBJS+= ${OBJS:.o=.so} 172lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} 173 @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) 174 @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 175 @${LD} -Bshareable \ 176 -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 177 ${SOBJS} ${LDDESTDIR} ${LDADD} 178 179lib${LIB}_pic.a:: ${SOBJS} 180 @${ECHO} building special pic ${LIB} library 181 @rm -f lib${LIB}_pic.a 182 @${AR} cTq lib${LIB}_pic.a ${SOBJS} ${ARADD} 183 ${RANLIB} lib${LIB}_pic.a 184.endif 185 186llib-l${LIB}.ln: ${SRCS} 187 ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 188 189.if !target(clean) 190clean: 191 rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} 192 rm -f lib${LIB}.a llib-l${LIB}.ln 193 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a 194 rm -f ${SOBJS} shared/*.o 195 rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 196.endif 197 198.if !target(cleandir) 199cleandir: 200 rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} 201 rm -f lib${LIB}.a llib-l${LIB}.ln 202 rm -f ${.CURDIR}/tags .depend 203 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a 204 rm -f ${SOBJS} shared/*.o 205 rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 206 cd ${.CURDIR}; rm -rf obj; 207.endif 208 209.if defined(SRCS) 210afterdepend: 211 @(TMP=/tmp/_depend$$$$; \ 212 sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \ 213 mv $$TMP .depend) 214.endif 215 216.if !target(install) 217.if !target(beforeinstall) 218beforeinstall: 219.endif 220 221.if defined(PRECIOUSLIB) 222SHLINSTALLFLAGS+= -fschg 223.endif 224 225realinstall: beforeinstall 226.if !defined(INTERNALLIB) 227 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 228 ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 229 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a 230.if !defined(NOPROFILE) 231 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 232 ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 233 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 234.endif 235.endif 236.if !defined(NOPIC) 237.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 238 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 239 ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 240 lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 241 ${DESTDIR}${LIBDIR} 242.endif 243.if defined(INSTALL_PIC_ARCHIVE) 244 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 245 ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 246 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 247.endif 248.endif 249.if defined(LINKS) && !empty(LINKS) 250 @set ${LINKS}; \ 251 while test $$# -ge 2; do \ 252 l=${DESTDIR}$$1; \ 253 shift; \ 254 t=${DESTDIR}$$1; \ 255 shift; \ 256 ${ECHO} $$t -\> $$l; \ 257 rm -f $$t; \ 258 ln $$l $$t; \ 259 done; true 260.endif 261 262install: afterinstall 263.if !defined(NOMAN) 264afterinstall: realinstall maninstall 265.else 266afterinstall: realinstall 267.endif 268.endif 269 270.if !target(lint) 271lint: 272.endif 273 274.if !target(tags) 275tags: ${SRCS} 276 -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \ 277 sed "s;\${.CURDIR}/;;" > tags 278.endif 279 280.if !defined(NOMAN) 281.include <bsd.man.mk> 282.elif !target(maninstall) 283maninstall: 284.endif 285 286.if !target(obj) 287.if defined(NOOBJ) 288obj: 289.else 290obj: 291 @cd ${.CURDIR}; rm -rf obj; \ 292 here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \ 293 ${ECHO} "$$here -> $$dest"; ln -s $$dest obj; \ 294 if test -d /usr/obj -a ! -d $$dest; then \ 295 mkdir -p $$dest; \ 296 else \ 297 true; \ 298 fi; 299.endif 300.endif 301 302.include <bsd.dep.mk> 303