bsd.lib.mk revision 1.30 1 # from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
2 # $Id: bsd.lib.mk,v 1.30 1993/10/07 01:34:07 cgd Exp $
3
4 .if exists(${.CURDIR}/../Makefile.inc)
5 .include "${.CURDIR}/../Makefile.inc"
6 .endif
7
8 .MAIN: all
9
10 # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
11 # .so used for PIC object files
12 .SUFFIXES:
13 .SUFFIXES: .out .o .po .so .s .c .cc .C .f .y .l .0 .1 .2 .3 .4 .5 .6 .7 .8
14
15 .c.o:
16 ${CC} ${CFLAGS} -c ${.IMPSRC}
17 @${LD} -x -r ${.TARGET}
18 @mv a.out ${.TARGET}
19
20 .c.po:
21 ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
22 @${LD} -X -r ${.TARGET}
23 @mv a.out ${.TARGET}
24
25 .c.so:
26 ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
27
28 .cc.o .C.o:
29 ${CXX} ${CXXFLAGS} -c ${.IMPSRC}
30 @${LD} -x -r ${.TARGET}
31 @mv a.out ${.TARGET}
32
33 .cc.po .C.po:
34 ${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
35 @${LD} -X -r ${.TARGET}
36 @mv a.out ${.TARGET}
37
38 .cc.so .C.so:
39 ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
40 @${LD} -X -r ${.TARGET}
41 @mv a.out ${.TARGET}
42
43 .s.o:
44 ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
45 ${AS} -o ${.TARGET}
46 @${LD} -x -r ${.TARGET}
47 @mv a.out ${.TARGET}
48
49 .s.po:
50 ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
51 ${AS} -o ${.TARGET}
52 @${LD} -X -r ${.TARGET}
53 @mv a.out ${.TARGET}
54
55 .s.so:
56 ${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
57 ${AS} -k -o ${.TARGET}
58
59 .if !defined(NOPROFILE)
60 _LIBS=lib${LIB}.a lib${LIB}_p.a
61 .else
62 _LIBS=lib${LIB}.a
63 .endif
64
65 .if !defined(NOPIC)
66 _LIBS+=lib${LIB}_pic.a
67 .endif
68
69 .if !defined(PICFLAG)
70 PICFLAG=-fpic
71 .endif
72
73 all: ${_LIBS} # llib-l${LIB}.ln
74
75 OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
76
77 lib${LIB}.a:: ${OBJS}
78 @echo building standard ${LIB} library
79 @rm -f lib${LIB}.a
80 @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${LDADD}
81 ${RANLIB} lib${LIB}.a
82
83 POBJS+= ${OBJS:.o=.po}
84 lib${LIB}_p.a:: ${POBJS}
85 @echo building profiled ${LIB} library
86 @rm -f lib${LIB}_p.a
87 @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD}
88 ${RANLIB} lib${LIB}_p.a
89
90 SOBJS+= ${OBJS:.o=.so}
91 lib${LIB}_pic.a:: ${SOBJS}
92 @echo building shared object ${LIB} library
93 @rm -f lib${LIB}_pic.a
94 @${AR} cTq lib${LIB}_pic.a `lorder ${SOBJS} | tsort` ${LDADD}
95 ${RANLIB} lib${LIB}_pic.a
96
97 llib-l${LIB}.ln: ${SRCS}
98 ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
99
100 .if !target(clean)
101 clean:
102 rm -f a.out Errs errs mklog core ${CLEANFILES}
103 rm -f ${OBJS}
104 rm -f ${POBJS} profiled/*.o
105 rm -f ${SOBJS} shared/*.o
106 rm -f lib${LIB}.a lib${LIB}_p.a lib${LIB}_pic.a llib-l${LIB}.ln
107 .endif
108
109 cleandir: clean
110
111 .if defined(SRCS)
112 afterdepend:
113 @(TMP=/tmp/_depend$$$$; \
114 sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \
115 mv $$TMP .depend)
116 .endif
117
118 .if !target(install)
119 .if !target(beforeinstall)
120 beforeinstall:
121 @install -d -o root -g wheel -m 755 ${DESTDIR}${LIBDIR}
122 .endif
123
124 realinstall:
125 # ranlib lib${LIB}.a
126 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \
127 ${DESTDIR}${LIBDIR}
128 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
129 .if !defined(NOPROFILE)
130 # ranlib lib${LIB}_p.a
131 install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
132 lib${LIB}_p.a ${DESTDIR}${LIBDIR}
133 ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
134 .endif
135 # install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
136 # llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}
137 .if defined(LINKS) && !empty(LINKS)
138 @set ${LINKS}; \
139 while test $$# -ge 2; do \
140 l=${DESTDIR}$$1; \
141 shift; \
142 t=${DESTDIR}$$1; \
143 shift; \
144 echo $$t -\> $$l; \
145 rm -f $$t; \
146 ln $$l $$t; \
147 done; true
148 .endif
149
150 install: maninstall
151 maninstall: afterinstall
152 afterinstall: realinstall
153 realinstall: beforeinstall
154 .endif
155
156 .if !defined(NOMAN)
157 .include <bsd.man.mk>
158 .endif
159
160 .include <bsd.obj.mk>
161 .include <bsd.dep.mk>
162