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>
|