bsd.lib.mk revision 2868
1117397Skan# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 2117397Skan# $Id: bsd.lib.mk,v 1.7 1994/09/16 14:30:20 jkh Exp $ 3117397Skan# 4117397Skan 5117397Skan.if exists(${.CURDIR}/../Makefile.inc) 6117397Skan.include "${.CURDIR}/../Makefile.inc" 7117397Skan.endif 8117397Skan 9117397Skan.if exists(${.CURDIR}/shlib_version) 10117397SkanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 11117397SkanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 12117397Skan.endif 13117397Skan 14117397Skan.if defined(DESTDIR) 15117397SkanCFLAGS+= -I${DESTDIR}/usr/include 16117397SkanCXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX} 17117397Skan.endif 18169691Skan 19117397Skan.if defined(DEBUG_FLAGS) 20117397SkanCFLAGS+= ${DEBUG_FLAGS} 21117397Skan.endif 22117397Skan 23117397SkanINSTALL?= install 24117397SkanLIBDIR?= /usr/lib 25117397SkanLINTLIBDIR?= /usr/libdata/lint 26117397SkanLIBGRP?= bin 27117397SkanLIBOWN?= bin 28117397SkanLIBMODE?= 444 29169691Skan 30169691Skan.if !defined(DEBUG_FLAGS) 31169691SkanSTRIP?= -s 32169691Skan.endif 33169691Skan 34117397SkanBINGRP?= bin 35117397SkanBINOWN?= bin 36117397SkanBINMODE?= 555 37117397Skan 38169691Skan.MAIN: all 39117397Skan 40117397Skan# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 41117397Skan# .so used for PIC object files 42169691Skan.SUFFIXES: 43169691Skan.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l 44117397Skan 45117397Skan.c.o: 46117397Skan ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 47117397Skan @${LD} -x -r ${.TARGET} 48117397Skan @mv a.out ${.TARGET} 49117397Skan 50117397Skan.c.po: 51117397Skan ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 52117397Skan @${LD} -X -r ${.TARGET} 53117397Skan @mv a.out ${.TARGET} 54117397Skan 55117397Skan.c.so: 56117397Skan ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 57117397Skan 58117397Skan.cc.o .cxx.o .C.o: 59117397Skan ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 60117397Skan @${LD} -x -r ${.TARGET} 61117397Skan @mv a.out ${.TARGET} 62117397Skan 63117397Skan.cc.po .C.po .cxx.o: 64117397Skan ${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 65117397Skan @${LD} -X -r ${.TARGET} 66117397Skan @mv a.out ${.TARGET} 67117397Skan 68117397Skan.cc.so .C.so: 69117397Skan ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 70117397Skan 71117397Skan.f.o: 72117397Skan ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 73117397Skan @${LD} -x -r ${.TARGET} 74117397Skan @mv a.out ${.TARGET} 75117397Skan 76117397Skan.f.po: 77169691Skan ${FC} -p ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 78169691Skan @${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(NOPROFILE) && !defined(INTERNALLIB) 123_LIBS=lib${LIB}.a lib${LIB}_p.a 124.else 125_LIBS=lib${LIB}.a 126.endif 127 128.if !defined(NOPIC) 129.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 130_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 131.endif 132.if defined(INSTALL_PIC_ARCHIVE) 133_LIBS+=lib${LIB}_pic.a 134.endif 135.endif 136 137.if !defined(PICFLAG) 138PICFLAG=-fpic 139.endif 140 141all: ${_LIBS} # llib-l${LIB}.ln 142 143OBJS+= ${SRCS:N*.h:R:S/$/.o/g} 144 145lib${LIB}.a:: ${OBJS} 146 @${ECHO} building standard ${LIB} library 147 @rm -f lib${LIB}.a 148 @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${ARADD} 149 ${RANLIB} lib${LIB}.a 150 151POBJS+= ${OBJS:.o=.po} 152lib${LIB}_p.a:: ${POBJS} 153 @${ECHO} building profiled ${LIB} library 154 @rm -f lib${LIB}_p.a 155 @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD} 156 ${RANLIB} lib${LIB}_p.a 157 158.if defined(DESTDIR) 159LDDESTDIR?= -L${DESTDIR}/usr/lib 160.endif 161 162.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir) 163SOBJS+= ${DESTDIR}/usr/lib/c++rt0.o 164.endif 165 166SOBJS+= ${OBJS:.o=.so} 167lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} 168 @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) 169 @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 170 @${LD} -Bshareable \ 171 -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 172 ${SOBJS} ${LDDESTDIR} ${LDADD} 173 174lib${LIB}_pic.a:: ${SOBJS} 175 @${ECHO} building special pic ${LIB} library 176 @rm -f lib${LIB}_pic.a 177 @${AR} cTq lib${LIB}_pic.a ${SOBJS} ${ARADD} 178 ${RANLIB} lib${LIB}_pic.a 179 180llib-l${LIB}.ln: ${SRCS} 181 ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 182 183.if !target(clean) 184clean: 185 rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} 186 rm -f lib${LIB}.a llib-l${LIB}.ln 187 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a 188 rm -f ${SOBJS} shared/*.o 189 rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 190.endif 191 192.if !target(cleandir) 193cleandir: 194 rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} 195 rm -f lib${LIB}.a llib-l${LIB}.ln 196 rm -f ${.CURDIR}/tags .depend 197 rm -f ${POBJS} profiled/*.o lib${LIB}_p.a 198 rm -f ${SOBJS} shared/*.o 199 rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 200 cd ${.CURDIR}; rm -rf obj; 201.endif 202 203.if defined(SRCS) 204afterdepend: 205 @(TMP=/tmp/_depend$$$$; \ 206 sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \ 207 mv $$TMP .depend) 208.endif 209 210.if !target(install) 211.if !target(beforeinstall) 212beforeinstall: 213.endif 214 215.if defined(PRECIOUSLIB) 216SHLINSTALLFLAGS+= -fschg 217.endif 218 219realinstall: beforeinstall 220.if !defined(INTERNALLIB) 221 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 222 ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 223 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a 224.if !defined(NOPROFILE) 225 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 226 ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 227 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 228.endif 229.endif 230.if !defined(NOPIC) 231.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 232 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 233 ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 234 lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 235 ${DESTDIR}${LIBDIR} 236.endif 237.if defined(INSTALL_PIC_ARCHIVE) 238 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 239 ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 240 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 241.endif 242.endif 243.if defined(LINKS) && !empty(LINKS) 244 @set ${LINKS}; \ 245 while test $$# -ge 2; do \ 246 l=${DESTDIR}$$1; \ 247 shift; \ 248 t=${DESTDIR}$$1; \ 249 shift; \ 250 ${ECHO} $$t -\> $$l; \ 251 rm -f $$t; \ 252 ln $$l $$t; \ 253 done; true 254.endif 255 256install: afterinstall 257.if !defined(NOMAN) 258afterinstall: realinstall maninstall 259.else 260afterinstall: realinstall 261.endif 262.endif 263 264.if !target(lint) 265lint: 266.endif 267 268.if !target(tags) 269tags: ${SRCS} 270 -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \ 271 sed "s;\${.CURDIR}/;;" > tags 272.endif 273 274.if !defined(NOMAN) 275.include <bsd.man.mk> 276.elif !target(maninstall) 277maninstall: 278.endif 279 280.if !target(obj) 281.if defined(NOOBJ) 282obj: 283.else 284obj: 285 @cd ${.CURDIR}; rm -rf obj; \ 286 here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \ 287 ${ECHO} "$$here -> $$dest"; ln -s $$dest obj; \ 288 if test -d /usr/obj -a ! -d $$dest; then \ 289 mkdir -p $$dest; \ 290 else \ 291 true; \ 292 fi; 293.endif 294.endif 295 296.include <bsd.dep.mk> 297