bsd.lib.mk revision 49328
1150861Scognet# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 2150861Scognet# $Id: bsd.lib.mk,v 1.87 1999/06/24 22:50:19 jmg Exp $ 3150861Scognet# 4150861Scognet 5150861Scognet.if !target(__initialized__) 6150861Scognet__initialized__: 7150861Scognet.if exists(${.CURDIR}/../Makefile.inc) 8150861Scognet.include "${.CURDIR}/../Makefile.inc" 9150861Scognet.endif 10150861Scognet.endif 11150861Scognet 12150861Scognet.if exists(${.CURDIR}/shlib_version) 13150861ScognetSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 14150861Scognet.if ${OBJFORMAT} == aout 15150861ScognetSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 16150861Scognet.endif 17150861Scognet.endif 18150861Scognet 19150861Scognet# Set up the variables controlling shared libraries. After this section, 20150861Scognet# SHLIB_NAME will be defined only if we are to create a shared library. 21150861Scognet# SHLIB_LINK will be defined only if we are to create a link to it. 22150861Scognet# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 23150861Scognet.if defined(NOPIC) 24150861Scognet.undef SHLIB_NAME 25150861Scognet.undef INSTALL_PIC_ARCHIVE 26150861Scognet.else 27150861Scognet.if ${OBJFORMAT} == elf 28163871Scognet.if !defined(SHLIB_NAME) && defined(SHLIB_MAJOR) 29150861ScognetSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 30153112ScognetSHLIB_LINK?= lib${LIB}.so 31150861Scognet.endif 32154561ScognetSONAME?= ${SHLIB_NAME} 33159084Scognet.else 34159557Scognet.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 35154561ScognetSHLIB_NAME?= lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 36150861Scognet.endif 37150861Scognet.endif 38161334Simp.endif 39161334Simp 40161334Simp.if defined(DESTDIR) 41161334SimpCFLAGS+= -I${DESTDIR}/usr/include 42150861ScognetCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 43153112Scognet.endif 44150861Scognet 45150861Scognet.if defined(DEBUG_FLAGS) 46150861ScognetCFLAGS+= ${DEBUG_FLAGS} 47150861Scognet.endif 48159557Scognet 49159557Scognet.if !defined(DEBUG_FLAGS) 50152743ScognetSTRIP?= -s 51152743Scognet.endif 52153112Scognet 53152743Scognet.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 54159084Scognet.include <bsd.libnames.mk> 55159084Scognet.endif 56159084Scognet 57159084Scognet.MAIN: all 58159084Scognet 59159557Scognet# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 60159084Scognet# .So used for PIC object files 61159084Scognet.SUFFIXES: 62159084Scognet.SUFFIXES: .out .o .po .So .s .S .c .cc .cpp .cxx .m .C .f .y .l 63159084Scognet 64159084Scognet.c.o: 65159084Scognet ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 66161592Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 67161592Scognet @mv ${.TARGET}.tmp ${.TARGET} 68159084Scognet 69159084Scognet.c.po: 70159557Scognet ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 71159758Scognet @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 72159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 73159557Scognet 74159557Scognet.c.So: 75159557Scognet ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 76159557Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 77159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 78159557Scognet 79159557Scognet.cc.o .C.o .cpp.o .cxx.o: 80159557Scognet ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 81159557Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 82159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 83159557Scognet 84159557Scognet.cc.po .C.po .cpp.po .cxx.po: 85159557Scognet ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 86159557Scognet @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 87159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 88159557Scognet 89159557Scognet.cc.So .C.So .cpp.So .cxx.So: 90159557Scognet ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 91159557Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 92159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 93159084Scognet 94159557Scognet.f.o: 95159557Scognet ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 96159557Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 97159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 98159084Scognet 99150861Scognet.f.po: 100150861Scognet ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 101150861Scognet @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 102150861Scognet @mv ${.TARGET}.tmp ${.TARGET} 103150861Scognet 104153549Scognet.f.So: 105153112Scognet ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 106159758Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 107153549Scognet @mv ${.TARGET}.tmp ${.TARGET} 108153112Scognet 109153112Scognet.m.o: 110153112Scognet ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 111153112Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 112153112Scognet @mv ${.TARGET}.tmp ${.TARGET} 113153112Scognet 114153112Scognet.m.po: 115153112Scognet ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 116150861Scognet @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 117150861Scognet @mv ${.TARGET}.tmp ${.TARGET} 118150861Scognet 119150861Scognet.m.So: 120150861Scognet ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 121153112Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 122150861Scognet @mv ${.TARGET}.tmp ${.TARGET} 123153112Scognet 124153112Scognet.s.o: 125150861Scognet ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ 126153112Scognet ${.IMPSRC} -o ${.TARGET} 127153112Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 128153112Scognet @mv ${.TARGET}.tmp ${.TARGET} 129153112Scognet 130153112Scognet.s.po: 131153112Scognet ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ 132153112Scognet ${.IMPSRC} -o ${.TARGET} 133153112Scognet @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 134153112Scognet @mv ${.TARGET}.tmp ${.TARGET} 135150861Scognet 136150861Scognet.s.So: 137150861Scognet ${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \ 138159900Scognet ${.IMPSRC} -o ${.TARGET} 139159900Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 140153112Scognet @mv ${.TARGET}.tmp ${.TARGET} 141153112Scognet 142153112Scognet.S.o: 143153549Scognet ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 144153549Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 145159758Scognet @mv ${.TARGET}.tmp ${.TARGET} 146159557Scognet 147159557Scognet.S.po: 148159557Scognet ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 149159557Scognet @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 150159557Scognet @mv ${.TARGET}.tmp ${.TARGET} 151159557Scognet 152153549Scognet.S.So: 153153549Scognet ${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 154153549Scognet @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 155153549Scognet @mv ${.TARGET}.tmp ${.TARGET} 156153549Scognet 157153549Scognet.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) 158153549Scognet.if !defined(NOPROFILE) && !defined(INTERNALLIB) 159153549Scognet_LIBS=lib${LIB}.a lib${LIB}_p.a 160153549Scognet.else 161153549Scognet_LIBS=lib${LIB}.a 162153549Scognet.endif 163153549Scognet.endif 164153549Scognet 165153549Scognet.if defined(SHLIB_NAME) 166153549Scognet_LIBS+=${SHLIB_NAME} 167153549Scognet.endif 168153549Scognet.if defined(INSTALL_PIC_ARCHIVE) 169153549Scognet_LIBS+=lib${LIB}_pic.a 170159557Scognet.endif 171159557Scognet 172159758Scognet.if !defined(PICFLAG) 173159758ScognetPICFLAG=-fpic 174159758Scognet.endif 175159758Scognet 176159758Scognetall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln 177159758Scognet 178159758ScognetOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 179159758Scognet 180153112Scognetlib${LIB}.a:: ${OBJS} ${STATICOBJS} 181153112Scognet @${ECHO} building standard ${LIB} library 182153112Scognet @rm -f lib${LIB}.a 183159557Scognet @${AR} cq lib${LIB}.a `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 184159557Scognet ${RANLIB} lib${LIB}.a 185159557Scognet 186159557ScognetPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 187159557Scognet.if !defined(NOPROFILE) 188159557Scognetlib${LIB}_p.a:: ${POBJS} 189159557Scognet @${ECHO} building profiled ${LIB} library 190159557Scognet @rm -f lib${LIB}_p.a 191159557Scognet @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} 192159557Scognet ${RANLIB} lib${LIB}_p.a 193159557Scognet.endif 194159557Scognet 195159557Scognet.if defined(DESTDIR) 196159557ScognetLDDESTDIRENV?= LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}${LIBDIR} 197159557Scognet.endif 198159557Scognet 199159557ScognetSOBJS+= ${OBJS:.o=.So} 200159557Scognet 201159557Scognet.if defined(SHLIB_NAME) 202159557Scognet${SHLIB_NAME}: ${SOBJS} 203159557Scognet @${ECHO} building shared library ${SHLIB_NAME} 204159557Scognet @rm -f ${SHLIB_NAME} ${SHLIB_LINK} 205159557Scognet.if defined(SHLIB_LINK) 206159557Scognet @ln -sf ${SHLIB_NAME} ${SHLIB_LINK} 207159557Scognet.endif 208159557Scognet.if ${OBJFORMAT} == aout 209159557Scognet @${LDDESTDIRENV} ${CC} -shared -Wl,-x,-assert,pure-text \ 210159557Scognet -o ${SHLIB_NAME} \ 211159557Scognet `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 212159557Scognet.else 213159557Scognet @${LDDESTDIRENV} ${CC} -shared -Wl,-x \ 214159557Scognet -o ${SHLIB_NAME} -Wl,-soname,${SONAME} \ 215159557Scognet `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 216159557Scognet.endif 217159557Scognet.endif 218159557Scognet 219159557Scognet.if defined(INSTALL_PIC_ARCHIVE) 220159557Scognetlib${LIB}_pic.a:: ${SOBJS} 221159557Scognet @${ECHO} building special pic ${LIB} library 222159557Scognet @rm -f lib${LIB}_pic.a 223159557Scognet @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} 224159557Scognet ${RANLIB} lib${LIB}_pic.a 225159557Scognet.endif 226159557Scognet 227159557Scognetllib-l${LIB}.ln: ${SRCS} 228159557Scognet ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 229159557Scognet 230159557Scognet.if !target(clean) 231159557Scognetclean: _SUBDIR 232159557Scognet rm -f a.out ${OBJS} ${STATICOBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES} 233159557Scognet rm -f lib${LIB}.a # llib-l${LIB}.ln 234159557Scognet rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a 235159557Scognet rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} \ 236159557Scognet ${SHLIB_NAME} ${SHLIB_LINK} \ 237159557Scognet lib${LIB}.so.* lib${LIB}.so lib${LIB}_pic.a 238159557Scognet.if defined(CLEANDIRS) && !empty(CLEANDIRS) 239159557Scognet rm -rf ${CLEANDIRS} 240159557Scognet.endif 241159557Scognet.endif 242159557Scognet 243159557Scognet_EXTRADEPEND: 244159557Scognet @TMP=_depend$$$$; \ 245159557Scognet sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 246159557Scognet > $$TMP; \ 247159557Scognet mv $$TMP ${DEPENDFILE} 248159557Scognet.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 249159557Scognet.if ${OBJFORMAT} == aout 250159557Scognet echo ${SHLIB_NAME}: \ 251159557Scognet `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \ 252159557Scognet >> ${DEPENDFILE} 253159557Scognet.else 254159557Scognet.if defined(DPADD) && !empty(DPADD) 255159557Scognet echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 256159557Scognet.endif 257159557Scognet.endif 258159557Scognet.endif 259159557Scognet 260159557Scognet.if !target(install) 261159557Scognet.if !target(beforeinstall) 262159557Scognetbeforeinstall: 263159868Scognet.endif 264153112Scognet 265153112Scognet.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 266153112ScognetSHLINSTALLFLAGS+= -fschg 267153112Scognet.endif 268153112Scognet 269153112Scognet_INSTALLFLAGS:= ${INSTALLFLAGS} 270153112Scognet.for ie in ${INSTALLFLAGS_EDIT} 271153112Scognet_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 272153112Scognet.endfor 273153112Scognet_SHLINSTALLFLAGS:= ${INSTALLFLAGS} 274153112Scognet.for ie in ${INSTALLFLAGS_EDIT} 275153112Scognet_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 276153112Scognet.endfor 277153112Scognet 278153112Scognetrealinstall: beforeinstall 279153112Scognet.if !defined(INTERNALLIB) 280153112Scognet ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 281153112Scognet ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 282153112Scognet.if !defined(NOPROFILE) 283153112Scognet ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 284153112Scognet ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 285153112Scognet.endif 286153112Scognet.endif 287153112Scognet.if defined(SHLIB_NAME) 288153112Scognet ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 289153112Scognet ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 290153112Scognet ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 291153112Scognet.if defined(SHLIB_LINK) 292153112Scognet ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 293153112Scognet.endif 294153112Scognet.endif 295153112Scognet.if defined(INSTALL_PIC_ARCHIVE) 296153112Scognet ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 297153112Scognet ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 298153112Scognet.endif 299153112Scognet.if defined(LINKS) && !empty(LINKS) 300153112Scognet @set ${LINKS}; \ 301153112Scognet while test $$# -ge 2; do \ 302153112Scognet l=${DESTDIR}$$1; \ 303153112Scognet shift; \ 304153112Scognet t=${DESTDIR}$$1; \ 305153112Scognet shift; \ 306153112Scognet ${ECHO} $$t -\> $$l; \ 307153112Scognet ln -f $$l $$t; \ 308153112Scognet done; true 309153112Scognet.endif 310153112Scognet.if defined(SYMLINKS) && !empty(SYMLINKS) 311159084Scognet @set ${SYMLINKS}; \ 312153112Scognet while test $$# -ge 2; do \ 313153112Scognet l=$$1; \ 314153112Scognet shift; \ 315153112Scognet t=${DESTDIR}$$1; \ 316153112Scognet shift; \ 317153112Scognet ${ECHO} $$t -\> $$l; \ 318153112Scognet ln -fs $$l $$t; \ 319153112Scognet done; true 320153112Scognet.endif 321159758Scognet 322153112Scognetinstall: afterinstall _SUBDIR 323153112Scognet.if !defined(NOMAN) 324153112Scognetafterinstall: realinstall maninstall 325153112Scognet.else 326153112Scognetafterinstall: realinstall 327153112Scognet.endif 328153112Scognet.endif 329153112Scognet 330153112Scognet.if !target(regress) 331153112Scognetregress: 332153112Scognet.endif 333153112Scognet 334153549ScognetDISTRIBUTION?= bin 335153112Scognet.if !target(distribute) 336153112Scognetdistribute: _SUBDIR 337153112Scognet.for dist in ${DISTRIBUTION} 338153112Scognet cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 339153112Scognet.endfor 340153112Scognet.endif 341153112Scognet 342153112Scognet.if !target(lint) 343153112Scognetlint: 344153112Scognet.endif 345153112Scognet 346153112Scognet.if !defined(NOMAN) 347153112Scognet.include <bsd.man.mk> 348153112Scognet.elif !target(maninstall) 349153112Scognetmaninstall: 350153112Scognetall-man: 351153112Scognet.endif 352150861Scognet 353153112Scognet.include <bsd.dep.mk> 354153112Scognet 355150861Scognet.if !exists(${DEPENDFILE}) 356150861Scognet${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 357159901Scognet.endif 358159901Scognet 359150861Scognet.include <bsd.obj.mk> 360150861Scognet