45f7f888bb
Makefiles. DANGER WILL ROBINSON! This will cause repeat installs of certain programs, such as `init' and `rcp', to fail unless one of the two conditions is met: 1) You are in single-user mode. 2) Your security level is set to 0 or -1. If you have compiled a kernel from the latest sources, your kernel security level is set to -1 by default, which will keep `init' from fiddling with it. You can increase it, but not decrease it, from the command line with the command `sysctl -w kern.securelevel=<new value>'. I believe that -1 is the most appropriate value to use while we are still developing the code, although when we ship it should be changed back to 0. See init(8) for more information.
283 lines
6.3 KiB
Makefile
283 lines
6.3 KiB
Makefile
# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
|
|
# $Id: bsd.lib.mk,v 1.3 1994/08/08 15:45:55 wollman Exp $
|
|
#
|
|
|
|
.if exists(${.CURDIR}/../Makefile.inc)
|
|
.include "${.CURDIR}/../Makefile.inc"
|
|
.endif
|
|
|
|
.if exists(${.CURDIR}/shlib_version)
|
|
SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
|
|
SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
|
|
.endif
|
|
|
|
.if defined(DESTDIR)
|
|
CFLAGS+= -I${DESTDIR}/usr/include
|
|
CXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
|
|
.endif
|
|
INSTALL?= install
|
|
LIBDIR?= /usr/lib
|
|
LINTLIBDIR?= /usr/libdata/lint
|
|
LIBGRP?= bin
|
|
LIBOWN?= bin
|
|
LIBMODE?= 444
|
|
|
|
STRIP?= -s
|
|
|
|
BINGRP?= bin
|
|
BINOWN?= bin
|
|
BINMODE?= 555
|
|
|
|
.MAIN: all
|
|
|
|
# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
|
|
# .so used for PIC object files
|
|
.SUFFIXES:
|
|
.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
|
|
|
|
.c.o:
|
|
${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
@${LD} -x -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.c.po:
|
|
${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
@${LD} -X -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.c.so:
|
|
${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
|
|
.cc.o .cxx.o .C.o:
|
|
${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
@${LD} -x -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.cc.po .C.po .cxx.o:
|
|
${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
@${LD} -X -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.cc.so .C.so:
|
|
${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
|
|
.f.o:
|
|
${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
|
|
@${LD} -x -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.f.po:
|
|
${FC} -p ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
|
|
@${LD} -X -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.f.so:
|
|
${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
|
|
|
|
.s.o:
|
|
${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
|
|
${AS} -o ${.TARGET}
|
|
@${LD} -x -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.s.po:
|
|
${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
|
|
${AS} -o ${.TARGET}
|
|
@${LD} -X -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.s.so:
|
|
${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
|
|
${AS} -k -o ${.TARGET}
|
|
|
|
.S.o:
|
|
${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
|
|
${AS} -o ${.TARGET}
|
|
|
|
.S.po:
|
|
${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
|
|
${AS} -o ${.TARGET}
|
|
|
|
.S.so:
|
|
${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
|
|
${AS} -k -o ${.TARGET}
|
|
|
|
.m.po:
|
|
${CC} ${CFLAGS} -p -c ${.IMPSRC} -o ${.TARGET}
|
|
@${LD} -X -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.m.o:
|
|
${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
|
@${LD} -X -r ${.TARGET}
|
|
@mv a.out ${.TARGET}
|
|
|
|
.if !defined(NOPROFILE)
|
|
_LIBS=lib${LIB}.a lib${LIB}_p.a
|
|
.else
|
|
_LIBS=lib${LIB}.a
|
|
.endif
|
|
|
|
.if !defined(NOPIC)
|
|
.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
|
|
_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
|
|
.endif
|
|
.if defined(INSTALL_PIC_ARCHIVE)
|
|
_LIBS+=lib${LIB}_pic.a
|
|
.endif
|
|
.endif
|
|
|
|
.if !defined(PICFLAG)
|
|
PICFLAG=-fpic
|
|
.endif
|
|
|
|
all: ${_LIBS} # llib-l${LIB}.ln
|
|
|
|
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
|
|
|
|
lib${LIB}.a:: ${OBJS}
|
|
@echo building standard ${LIB} library
|
|
@rm -f lib${LIB}.a
|
|
@${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${ARADD}
|
|
${RANLIB} lib${LIB}.a
|
|
|
|
POBJS+= ${OBJS:.o=.po}
|
|
lib${LIB}_p.a:: ${POBJS}
|
|
@echo building profiled ${LIB} library
|
|
@rm -f lib${LIB}_p.a
|
|
@${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD}
|
|
${RANLIB} lib${LIB}_p.a
|
|
|
|
.if defined(DESTDIR)
|
|
LDDESTDIR?= -L${DESTDIR}/usr/lib
|
|
.endif
|
|
|
|
.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir)
|
|
SOBJS+= ${DESTDIR}/usr/lib/c++rt0.o
|
|
.endif
|
|
|
|
SOBJS+= ${OBJS:.o=.so}
|
|
lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
|
|
@echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
|
|
@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
|
|
@$(LD) -Bshareable \
|
|
-o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
|
|
${SOBJS} ${LDDESTDIR} ${LDADD}
|
|
|
|
lib${LIB}_pic.a:: ${SOBJS}
|
|
@echo building special pic ${LIB} library
|
|
@rm -f lib${LIB}_pic.a
|
|
@${AR} cTq lib${LIB}_pic.a ${SOBJS} ${ARADD}
|
|
${RANLIB} lib${LIB}_pic.a
|
|
|
|
llib-l${LIB}.ln: ${SRCS}
|
|
${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
|
|
|
|
.if !target(clean)
|
|
clean:
|
|
rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
|
|
rm -f lib${LIB}.a llib-l${LIB}.ln
|
|
rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
|
|
rm -f ${SOBJS} shared/*.o
|
|
rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
|
|
.endif
|
|
|
|
.if !target(cleandir)
|
|
cleandir:
|
|
rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
|
|
rm -f lib${LIB}.a llib-l${LIB}.ln
|
|
rm -f ${.CURDIR}/tags .depend
|
|
rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
|
|
rm -f ${SOBJS} shared/*.o
|
|
rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
|
|
cd ${.CURDIR}; rm -rf obj;
|
|
.endif
|
|
|
|
.if defined(SRCS)
|
|
afterdepend:
|
|
@(TMP=/tmp/_depend$$$$; \
|
|
sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \
|
|
mv $$TMP .depend)
|
|
.endif
|
|
|
|
.if !target(install)
|
|
.if !target(beforeinstall)
|
|
beforeinstall:
|
|
.endif
|
|
|
|
realinstall: beforeinstall
|
|
${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
|
${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
|
|
${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
|
|
.if !defined(NOPROFILE)
|
|
${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
|
${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
|
|
${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
|
|
.endif
|
|
.if !defined(NOPIC)
|
|
.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
|
|
${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
|
${INSTALLFLAGS} lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
|
|
${DESTDIR}${LIBDIR}
|
|
.endif
|
|
.if defined(INSTALL_PIC_ARCHIVE)
|
|
${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
|
${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
|
|
${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
|
|
.endif
|
|
.endif
|
|
.if defined(LINKS) && !empty(LINKS)
|
|
@set ${LINKS}; \
|
|
while test $$# -ge 2; do \
|
|
l=${DESTDIR}$$1; \
|
|
shift; \
|
|
t=${DESTDIR}$$1; \
|
|
shift; \
|
|
echo $$t -\> $$l; \
|
|
rm -f $$t; \
|
|
ln $$l $$t; \
|
|
done; true
|
|
.endif
|
|
|
|
install: afterinstall
|
|
.if !defined(NOMAN)
|
|
afterinstall: realinstall maninstall
|
|
.else
|
|
afterinstall: realinstall
|
|
.endif
|
|
.endif
|
|
|
|
.if !target(lint)
|
|
lint:
|
|
.endif
|
|
|
|
.if !target(tags)
|
|
tags: ${SRCS}
|
|
-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
|
|
sed "s;\${.CURDIR}/;;" > tags
|
|
.endif
|
|
|
|
.if !defined(NOMAN)
|
|
.include <bsd.man.mk>
|
|
.elif !target(maninstall)
|
|
maninstall:
|
|
.endif
|
|
|
|
.if !target(obj)
|
|
.if defined(NOOBJ)
|
|
obj:
|
|
.else
|
|
obj:
|
|
@cd ${.CURDIR}; rm -rf obj; \
|
|
here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
|
|
echo "$$here -> $$dest"; ln -s $$dest obj; \
|
|
if test -d /usr/obj -a ! -d $$dest; then \
|
|
mkdir -p $$dest; \
|
|
else \
|
|
true; \
|
|
fi;
|
|
.endif
|
|
.endif
|
|
|
|
.include <bsd.dep.mk>
|