1# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 |
2# $FreeBSD: head/share/mk/bsd.lib.mk 96512 2002-05-13 10:53:24Z ru $ |
3# 4 5.include <bsd.init.mk> 6 |
7# Set up the variables controlling shared libraries. After this section, 8# SHLIB_NAME will be defined only if we are to create a shared library. 9# SHLIB_LINK will be defined only if we are to create a link to it. 10# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 11.if defined(NOPIC) 12.undef SHLIB_NAME 13.undef INSTALL_PIC_ARCHIVE 14.else --- 22 unchanged lines hidden (view full) --- 37.include <bsd.libnames.mk> 38.endif 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 .asm .c .cc .cpp .cxx .m .C .f .y .l .ln 44 |
45.if !defined(PICFLAG) 46.if ${MACHINE_ARCH} == "sparc64" 47PICFLAG=-fPIC 48.else 49PICFLAG=-fpic 50.endif 51.endif 52 |
53.c.ln: 54 ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 55 touch ${.TARGET} 56 57.cc.ln .C.ln .cpp.ln .cxx.ln: 58 ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 59 touch ${.TARGET} 60 --- 86 unchanged lines hidden (view full) --- 147 @mv ${.TARGET}.tmp ${.TARGET} 148 149.S.So: 150 ${CC} ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} \ 151 -o ${.TARGET} 152 @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 153 @mv ${.TARGET}.tmp ${.TARGET} 154 |
155all: objwarn |
156 |
157.if defined(LIB) && !empty(LIB) 158_LIBS= lib${LIB}.a 159OBJS+= ${SRCS:N*.h:R:S/$/.o/} |
160 |
161lib${LIB}.a: ${OBJS} ${STATICOBJS} 162 @${ECHO} building static ${LIB} library 163 @rm -f ${.TARGET} 164 @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 165 ${RANLIB} ${.TARGET} |
166 |
167CLEANFILES+= a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} |
168 |
169.if !defined(INTERNALLIB) |
170 |
171.if !defined(NOPROFILE) |
172_LIBS+= lib${LIB}_p.a 173POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 174 175lib${LIB}_p.a: ${POBJS} |
176 @${ECHO} building profiled ${LIB} library |
177 @rm -f ${.TARGET} 178 @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 179 ${RANLIB} ${.TARGET} 180 181CLEANFILES+= ${POBJS} ${POBJS:S/$/.tmp/} |
182.endif 183 |
184SOBJS+= ${OBJS:.o=.So} |
185 |
186CLEANFILES+= ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 187 |
188.if defined(SHLIB_NAME) |
189_LIBS+= ${SHLIB_NAME} 190 |
191${SHLIB_NAME}: ${SOBJS} 192 @${ECHO} building shared library ${SHLIB_NAME} |
193 @rm -f ${.TARGET} ${SHLIB_LINK} |
194.if defined(SHLIB_LINK) |
195 @ln -fs ${.TARGET} ${SHLIB_LINK} |
196.endif 197.if ${OBJFORMAT} == aout 198 @${CC} -shared -Wl,-x,-assert,pure-text \ |
199 -o ${.TARGET} \ |
200 `lorder ${SOBJS} | tsort -q` ${LDADD} 201.else 202 @${CC} ${LDFLAGS} -shared -Wl,-x \ |
203 -o ${.TARGET} -Wl,-soname,${SONAME} \ |
204 `lorder ${SOBJS} | tsort -q` ${LDADD} 205.endif |
206 207CLEANFILES+= ${SHLIB_LINK} lib${LIB}.so.* lib${LIB}.so |
208.endif 209 210.if defined(INSTALL_PIC_ARCHIVE) |
211_LIBS+= lib${LIB}_pic.a 212 213lib${LIB}_pic.a: ${SOBJS} |
214 @${ECHO} building special pic ${LIB} library |
215 @rm -f ${.TARGET} 216 @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 217 ${RANLIB} ${.TARGET} |
218.endif 219 |
220.if defined(WANT_LINT) 221LINTLIB= llib-l${LIB}.ln 222_LIBS+= ${LINTLIB} 223LINTOBJS+= ${SRCS:M*.c:.c=.ln} 224 |
225${LINTLIB}: ${LINTOBJS} |
226 @${ECHO} building lint library ${.TARGET} 227 @rm -f ${.TARGET} |
228 ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} |
229 230CLEANFILES+= ${LINTOBJS} |
231.endif 232 |
233.endif !defined(INTERNALLIB) 234 235all: ${_LIBS} 236 237CLEANFILES+= ${_LIBS} 238.endif defined(LIB) && !empty(LIB) 239 240.if !defined(NOMAN) 241all: _manpages |
242.endif |
243 244_EXTRADEPEND: 245 @TMP=_depend$$$$; \ 246 sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 247 > $$TMP; \ 248 mv $$TMP ${DEPENDFILE} 249.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 250.if ${OBJFORMAT} == aout --- 17 unchanged lines hidden (view full) --- 268.for ie in ${INSTALLFLAGS_EDIT} 269_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 270.endfor 271_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 272.for ie in ${INSTALLFLAGS_EDIT} 273_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 274.endfor 275 |
276.if defined(LIB) && !empty(LIB) && !defined(INTERNALLIB) |
277realinstall: _libinstall 278_libinstall: |
279.if !defined(NOINSTALLLIB) |
280 ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 281 ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} |
282.endif |
283.if !defined(NOPROFILE) 284 ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 285 ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 286.endif |
287.if defined(SHLIB_NAME) 288 ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 289 ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 290 ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 291.if defined(SHLIB_LINK) |
292 ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} |
293.endif 294.endif 295.if defined(INSTALL_PIC_ARCHIVE) 296 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 297 ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 298.endif |
299.if defined(WANT_LINT) |
300 ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 301 ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 302.endif |
303.endif defined(LIB) && !empty(LIB) && !defined(INTERNALLIB) |
304 305realinstall: 306.if defined(LINKS) && !empty(LINKS) 307 @set ${LINKS}; \ 308 while test $$# -ge 2; do \ 309 l=${DESTDIR}$$1; \ 310 shift; \ 311 t=${DESTDIR}$$1; \ --- 30 unchanged lines hidden (view full) --- 342.include <bsd.incs.mk> 343 344.if !defined(NOMAN) 345.include <bsd.man.mk> 346.endif 347 348.include <bsd.dep.mk> 349 |
350.if defined(LIB) && !empty(LIB) |
351.if !exists(${.OBJDIR}/${DEPENDFILE}) 352${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 353.endif |
354.endif |
355 356.include <bsd.obj.mk> 357 358.include <bsd.sys.mk> |