1# $MirOS: src/share/mk/bsd.lib.mk,v 1.85 2013/03/18 19:14:50 tg Exp $
2# $OpenBSD: bsd.lib.mk,v 1.43 2004/09/20 18:52:38 espie Exp $
3# $NetBSD: bsd.lib.mk,v 1.67 1996/01/17 20:39:26 mycroft Exp $
4# @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
5
6.if !defined(BSD_LIB_MK)
7BSD_LIB_MK=1
8
9.if exists(${.CURDIR}/../Makefile.inc)
10.  include "${.CURDIR}/../Makefile.inc"
11.endif
12
13.if !defined(BSD_OWN_MK)
14.  include <bsd.own.mk>
15.endif
16
17.if ${LTMIRMAKE:L} == "yes"
18.  include <bsd.lt.mk>
19.endif
20
21.if defined(SHLIB_MAJOR) && !empty(SHLIB_MAJOR) \
22    && defined(SHLIB_MINOR) && !empty(SHLIB_MINOR)
23SHLIB_VERSION=	${SHLIB_MAJOR}.${SHLIB_MINOR}
24.elif exists(${.CURDIR}/shlib_version)
25.  include "${.CURDIR}/shlib_version"
26SHLIB_VERSION?=	${major}.${minor}
27.endif
28
29SHLIB_TYPE?=	DLL
30.ifdef SHLIB_VERSION
31.  if empty(SHLIB_VERSION) || (${SHLIB_VERSION} == ".")
32.    undef SHLIB_VERSION
33.  endif
34.endif
35.ifndef SHLIB_VERSION
36SHLIB_TYPE=	none
37.endif
38
39.if defined(SHLIB_VERSION) && ${NOPIC:L} == "no"
40.  if ${RTLD_TYPE} == "dyld"
41.    if ${SHLIB_TYPE:L} == "plugin"
42_OSX_TYPE=	-bundle -undefined dynamic_lookup
43.      if ${SHLIB_VERSION} == "-"
44# DyLD, unversioned plugin
45SHLIB_SONAME?=	lib${LIB}.bundle
46.      else
47# DyLD, versioned plugin
48SHLIB_SONAME?=	lib${LIB}.${SHLIB_VERSION}.0.bundle
49.      endif
50.    else
51_OSX_TYPE=	-dynamiclib -undefined error
52.      if ${SHLIB_VERSION} == "-"
53# DyLD, unversioned DLL
54SHLIB_SONAME?=	lib${LIB}.dylib
55.      else
56# DyLD, versioned DLL
57SHLIB_SONAME?=	lib${LIB}.${SHLIB_VERSION}.0.dylib
58SHLIB_LINKS?=	lib${LIB}.${SHLIB_VERSION:R}.dylib lib${LIB}.dylib
59.      endif
60.    endif
61.  elif ${RTLD_TYPE} == "GNU"
62.    if (${SHLIB_VERSION} == "-") && ((${SHLIB_TYPE:L} == "plugin") || (${SHLIB_TYPE:L} == "extension"))
63SHLIB_SONAME?=	lib${LIB}.so
64.    else
65SHLIB_SONAME?=	lib${LIB}.so.${SHLIB_VERSION}.0
66.    endif
67.    if ${SHLIB_TYPE:U} == "DLL"
68SHLIB_LINKS?=	lib${LIB}.so.${SHLIB_VERSION:R} lib${LIB}.so
69.    endif
70.  else
71.    if (${SHLIB_VERSION} == "-") && ((${SHLIB_TYPE:L} == "plugin") || (${SHLIB_TYPE:L} == "extension"))
72SHLIB_SONAME?=	lib${LIB}.so
73.    else
74SHLIB_SONAME?=	lib${LIB}.so.${SHLIB_VERSION}
75.    endif
76.  endif
77.  if ${OBJECT_FMT} == "PE"
78.    if ${SHLIB_TYPE:U} == "DLL"
79SHLIB_FLAGS?=	-Wl,--image-base,$$((RANDOM % 0x1000 / 4 * 0x40000 + 0x40000000))
80.    else
81.      warning I do not know how to do extensions or plugins on Interix
82.    endif
83.  else
84SHLIB_FLAGS?=	${PICFLAG}
85.  endif
86.  if (${SHLIB_TYPE:U} == "DLL") && (${RTLD_TYPE} != "dyld") && \
87    (${LTMIRMAKE:L} != "yes") && !defined(BSD_LIB_MK__nodefs)
88# GNU or BSD, DLL
89SHLIB_FLAGS+=	-Wl,--no-undefined
90.    if ${LIB} != "c"
91#XXX this should eventually go away
92LDADD+=		-lc
93.    endif
94.  endif
95.  if (${SHLIB_TYPE:L} == "extension") && (${RTLD_TYPE} != "dyld") && \
96    (${LTMIRMAKE:L} != "yes")
97# GNU or BSD, extension (in between DLL and plugin: for dlopen, no -lc,
98#XXX (not yet: no -lc)
99# no static/lint libs, no undefined symbols, uses DT_NEEDED records)
100SHLIB_FLAGS+=	-Wl,--no-undefined
101.    if ${LIB} != "c"
102#XXX this should eventually go away
103LDADD+=		-Wl,--as-needed -lc
104.    endif
105.  endif
106SHLIB_FLAGS+=	${LDFLAGS}
107.  if ${LTMIRMAKE:L} == "yes"
108SHLIB_SONAME=	lib${LIB}.la
109SHLIB_FLAGS+=	-rpath ${LIBDIR}
110.  elif (${OBJECT_FMT} == "ELF") || (${OBJECT_FMT} == "PE")
111SHLIB_FLAGS+=	-Wl,-rpath,${LIBDIR} -Wl,-rpath-link,${DESTDIR}${LIBDIR}
112.  endif
113.endif
114SHLIB_LINKS?=
115
116.if !empty(SRCS:M*.cc) || !empty(SRCS:M*.C) || \
117    !empty(SRCS:M*.cxx) || !empty(SRCS:M*.cpp)
118.  if ${LTMIRMAKE:L} == "yes"
119LINKER?=	${LIBTOOL} --tag=CXX --mode=link ${CXX}
120.  else
121LINKER?=	${CXX}
122.  endif
123.elif !empty(SRCS:M*.F) || !empty(SRCS:M*.f)
124.  if ${LTMIRMAKE:L} == "yes"
125LINKER?=	${LIBTOOL} --tag=CC --mode=link ${FC}
126.  else
127LINKER?=	${FC}
128.  endif
129.else
130.  if ${LTMIRMAKE:L} == "yes"
131LINKER?=	${LIBTOOL} --tag=CC --mode=link ${CC}
132.  else
133LINKER?=	${CC}
134.  endif
135.endif
136
137.if (${SHLIB_TYPE:L} == "plugin") || (${SHLIB_TYPE:L} == "extension")
138_LIBS_STATIC=	No
139NOLINT=		Yes
140.else
141_LIBS_STATIC?=	Yes
142.endif
143.if ${NOPIC:L} == "no"
144_LIBS_SHARED?=	Yes
145.else
146_LIBS_SHARED=	No
147.endif
148
149.if (${_LIBS_SHARED:L} != "yes") || (!defined(SHLIB_SONAME)) || \
150    (defined(SHLIB_SONAME) && empty(SHLIB_SONAME))
151.  undef SHLIB_SONAME
152.  undef SHLIB_LINKS
153.elif !defined(SHLIB_VERSION) || empty(SHLIB_VERSION)
154.  error SHLIB_SONAME (${SHLIB_SONAME}) set, but SHLIB_VERSION unset
155.elif ${LTMIRMAKE:L} == "yes"
156.  if (${SHLIB_TYPE:L} == "plugin") || (${SHLIB_TYPE:L} == "extension")
157.    warning I do not know how to do plugins or extensions with LTMIRMAKE
158.  endif
159.  if ${SHLIB_VERSION} == "-"
160# Libtool, unversioned DLLs
161SHLIB_FLAGS+=	-avoid-version
162.  else
163# Libtool, versioned DLLs
164# slow
165#lt_current!=	print $$((${SHLIB_VERSION:R} + ${SHLIB_VERSION:E}))
166lt_revision?=	0
167#lt_age=	${SHLIB_VERSION:E}
168#SHLIB_FLAGS+=	-version-info ${lt_current}:${lt_revision}:${lt_age}
169SHLIB_FLAGS+=	-version-number ${SHLIB_VERSION:R}:${SHLIB_VERSION:E}:${lt_revision}
170.  endif
171.elif ${RTLD_TYPE} == "dyld"
172.  if ${SHLIB_VERSION} == "-"
173# DyLD, unversioned DLLs and plugins
174LINK.shlib?=	${LINKER} ${CFLAGS:M*} ${SHLIB_FLAGS} ${_OSX_TYPE} \
175		$$(${LORDER} ${SOBJS}|tsort -q) ${LDADD}
176.  else
177# DyLD, versioned DLLs and plugins
178LINK.shlib?=	${LINKER} ${CFLAGS:M*} ${SHLIB_FLAGS} ${_OSX_TYPE} \
179		$$(${LORDER} ${SOBJS}|tsort -q) ${LDADD} \
180		-compatibility_version ${SHLIB_VERSION:R}.0 \
181		-current_version ${SHLIB_VERSION}
182.  endif
183.elif ${RTLD_TYPE} == "GNU"
184.  if ${SHLIB_VERSION} == "-"
185# GNU, unversioned DLL or plugin
186LINK.shlib?=	${LINKER} ${CFLAGS:M*} ${SHLIB_FLAGS} -shared \
187		$$(${LORDER} ${SOBJS}|tsort -q) \
188		-Wl,--start-group ${LDADD} -Wl,--end-group \
189		-Wl,-soname,lib${LIB}.so
190.  else
191# GNU, versioned DLL or plugin
192LINK.shlib?=	${LINKER} ${CFLAGS:M*} ${SHLIB_FLAGS} -shared \
193		$$(${LORDER} ${SOBJS}|tsort -q) \
194		-Wl,--start-group ${LDADD} -Wl,--end-group \
195		-Wl,-soname,lib${LIB}.so.${SHLIB_VERSION:R}
196.  endif
197.else
198# BSD, DLL or plugin
199LINK.shlib?=	${LINKER} ${CFLAGS:M*} ${SHLIB_FLAGS} -shared \
200		$$(${LORDER} ${SOBJS}|tsort -q) \
201		-Wl,--start-group ${LDADD} -Wl,--end-group
202.endif
203
204.MAIN: all
205
206# prefer .S to a .c, remove stuff not used in the BSD libraries.
207# .so used for PIC object files.  .ln used for lint output files.
208# .m for objective c files.
209.SUFFIXES:
210.SUFFIXES:	.out .o .so .lo .S .s .c .m .cc .C .cxx .cpp .y .l .i .ln .m4
211
212.if (${SHLIB_TYPE:L} == "plugin") || (${SHLIB_TYPE:L} == "extension")
213.c.o .m.o:
214	${COMPILE.c} ${CFLAGS_${.TARGET}:M*} -DPIC ${PICFLAG} -o $@ $<
215
216.cc.o .C.o .cxx.o .cpp.o:
217	${COMPILE.cc} ${CXXFLAGS_${.TARGET}:M*} -DPIC ${PICFLAG} -o $@ $<
218
219.S.o .s.o:
220	${COMPILE.S} ${AFLAGS_${.TARGET}:M*} -DPIC \
221	    ${ASPICFLAG:S/^/-Wa,/} ${CFLAGS:M-[ID]*} ${AINC} -o $@ $<
222.else
223.c.o .m.o:
224	@print -r -- ${COMPILE.c:Q} \
225	    ${CFLAGS_${.TARGET:C/\.(g|s)o$/.o/}:M*:Q} ${.IMPSRC:Q} -o '$@'
226	@${COMPILE.c} ${CFLAGS_${.TARGET:C/\.(g|s)o$/.o/}:M*} \
227	    ${.IMPSRC} -o $@.o
228	@${LD} ${_DISCARD} -r $@.o -o $@
229	@rm -f $@.o
230
231.c.so .m.so:
232	${COMPILE.c} ${CFLAGS_${.TARGET:.so=.o}:M*} -DPIC ${PICFLAG} -o $@ $<
233
234.c.ln:
235	env CC=${_ORIG_CC:Q} ${LINT} ${LINTFLAGS} ${CFLAGS:M-[IDU]*} \
236	    ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
237
238.cc.o .C.o .cxx.o .cpp.o:
239	@print -r -- ${COMPILE.cc:Q} \
240	    ${CXXFLAGS_${.TARGET:C/\.(g|s)o$/.o/}:M*:Q} ${.IMPSRC:Q} -o '$@'
241	@${COMPILE.cc} ${CXXFLAGS_${.TARGET:C/\.(g|s)o$/.o/}:M*} \
242	    ${.IMPSRC} -o $@.o
243	@${LD} ${_DISCARD} -r $@.o -o $@
244	@rm -f $@.o
245
246.cc.so .C.so .cxx.so .cpp.so:
247	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.so=.o}:M*} -DPIC ${PICFLAG} -o $@ $<
248
249.S.o .s.o:
250	@print -r -- ${COMPILE.S:Q} \
251	    ${AFLAGS_${.TARGET:C/\.(g|s)o$/.o/}:M*:Q} ${CFLAGS:M-[ID]*:Q} \
252	    ${AINC} ${.IMPSRC} -o '$@'
253	@${COMPILE.S} ${AFLAGS_${.TARGET:C/\.(g|s)o$/.o/}:M*} \
254	    ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o $@.o
255	@${LD} ${_DISCARD} -r $@.o -o $@
256	@rm -f $@.o
257
258.S.so .s.so:
259	${COMPILE.S} ${AFLAGS_${.TARGET:.so=.o}:M*} -DPIC \
260	    ${ASPICFLAG:S/^/-Wa,/} ${CFLAGS:M-[ID]*} ${AINC} -o $@ $<
261.endif
262
263.if ${WARNINGS:L} == "yes"
264CFLAGS+=	${CDIAGFLAGS}
265CXXFLAGS+=	${CXXDIAGFLAGS}
266.endif
267.if !${COPTS:M-fhonour-copts} || !${CFLAGS:M-fhonour-copts}
268CFLAGS+=	${COPTS}
269.endif
270CXXFLAGS+=	${CXXOPTS} -fno-omit-frame-pointer
271HOSTCFLAGS?=	${CFLAGS}
272
273.if ${DEBUGLIBS:L} == "yes"
274.  if !${CFLAGS:M-g*}
275CFLAGS+=	-g1 -fno-omit-frame-pointer
276CXXFLAGS+=	-g1
277.  endif
278DEBUG?=		-g
279_DISCARD=	-X
280_SODISCARD=	-X
281.elif ${RTLD_TYPE} == "dyld"
282_DISCARD=	-X
283_SODISCARD=	-X
284.else
285_DISCARD=	-x
286_SODISCARD=	-g -x
287.endif
288
289_LIBS=
290.if ${LTMIRMAKE:L} == "yes"
291_LIBS+=		lib${LIB}.la
292.else
293.  if ${_LIBS_STATIC:L} == "yes"
294_LIBS+=		lib${LIB}.a
295.  endif
296.  if ${_LIBS_SHARED:L} == "yes"
297_LIBS+=		lib${LIB}_pic.a ${SHLIB_SONAME}
298.  endif
299.endif
300.if ${NOLINT:L} == "no"
301_LIBS+=		llib-l${LIB}.ln
302.endif
303
304all: ${_LIBS} _SUBDIRUSE
305
306.if ${LTMIRMAKE:L} == "yes"
307OBJS+=		${SRCS:N*.h:R:S/$/.lo/g}
308.elif (${SHLIB_TYPE:L} != "plugin") && (${SHLIB_TYPE:L} != "extension")
309OBJS+=		${SRCS:N*.h:R:S/$/.o/g}
310.endif
311CLEANFILES+=	${SHLIB_LINKS}
312
313.if ${LTMIRMAKE:L} == "yes"
314lib${LIB}.la:: ${OBJS}
315.  if defined(SHLIB_VERSION) && (${SHLIB_VERSION} != "-")
316	@print -r building libtool ${LIB} library \(version ${SHLIB_VERSION}\)
317.  else
318	@print -r building libtool ${LIB} library
319.  endif
320	@rm -f lib${LIB}.la
321	${LINKER} ${CFLAGS:M*} ${SHLIB_FLAGS} ${OBJS} ${LDADD} -o $@
322.endif
323
324.if (${SHLIB_TYPE:L} != "plugin") && (${SHLIB_TYPE:L} != "extension")
325lib${LIB}.a:: ${OBJS}
326	@print -r building standard ${LIB} library
327	@rm -f lib${LIB}.a
328	@${AR} cq lib${LIB}.a $$(${LORDER} ${OBJS} | tsort -q)
329.  if ${OBJECT_FMT} == "Mach-O"
330	@${RANLIB} lib${LIB}.a
331.  endif
332.endif
333
334# If new-style debugging libraries are in effect, libFOO_pic.a
335# contains debugging information - this is actually wanted.
336.if (${SHLIB_TYPE:L} == "plugin") || (${SHLIB_TYPE:L} == "extension")
337SOBJS+=		${SRCS:N*.h:R:S/$/.o/g}
338.else
339SOBJS+=		${OBJS:.o=.so}
340.endif
341lib${LIB}_pic.a:: ${SOBJS}
342	@print -r building shared object ${LIB} library
343	@rm -f lib${LIB}_pic.a
344	@${AR} cq lib${LIB}_pic.a $$(${LORDER} ${SOBJS} | tsort -q)
345.if ${OBJECT_FMT} == "Mach-O"
346	@${RANLIB} lib${LIB}_pic.a
347.endif
348
349.if ${LTMIRMAKE:L} != "yes"
350${SHLIB_SONAME}: ${CRTI} ${CRTBEGIN} ${SOBJS} ${DPADD} ${CRTEND} ${CRTN}
351.  if defined(SHLIB_VERSION) && (${SHLIB_VERSION} != "-")
352	@print -r building ${SHLIB_TYPE} ${LIB} \(version ${SHLIB_VERSION}\)
353.  else
354	@print -r building unversioned ${SHLIB_TYPE} ${SHLIB_SONAME}
355.  endif
356	@rm -f ${SHLIB_SONAME}
357	${LINK.shlib} -o $@
358.  for _i in ${SHLIB_LINKS}
359	@rm -f ${_i}
360	ln -s ${SHLIB_SONAME} ${_i} || cp ${SHLIB_SONAME} ${_i}
361.  endfor
362.endif
363
364LOBJS+=		${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln} \
365		${SRCS:M*.l:.l=.ln} ${SRCS:M*.y:.y=.ln}
366LLIBS?=		-lc
367llib-l${LIB}.ln: ${LOBJS}
368	@print -r building llib-l${LIB}.ln
369	@rm -f llib-l${LIB}.ln
370	@env CC=${_ORIG_CC:Q} ${LINT} -C${LIB} ${LOBJS} ${LLIBS}
371
372.for _i in ${SRCS:M*.l} ${SRCS:M*.y}
373CLEANFILES+=	${_i:R}.c
374.endfor
375.if ${YFLAGS:M-d}
376.  for _i in ${SRCS:M*.y}
377CLEANFILES+=	${_i:R}.h
378.  endfor
379.endif
380
381.if !target(clean)
382clean: _SUBDIRUSE
383.  if ${LTMIRMAKE:L} == "yes"
384	-${LIBTOOL} --mode=clean rm *.la *.lo
385.  endif
386	rm -f a.out [Ee]rrs mklog core *.core ${CLEANFILES}
387	rm -f lib${LIB}.a ${OBJS}
388	rm -f lib${LIB}_pic.a lib${LIB}.so.*.* lib${LIB}{,.*}.dylib ${SOBJS}
389	rm -f llib-l${LIB}.ln ${LOBJS}
390.endif
391
392cleandir: _SUBDIRUSE clean
393
394.if defined(SRCS)
395afterdepend: .depend
396.  if ${LTMIRMAKE:L} == "yes"
397	@print ',g/^\([^\.]*\).o[ ]*:/s//\1.o \1.lo:/\nwq' | ed -s .depend
398.  else
399	@print ',g/^\([^\.]*\).o[ ]*:/s//\1.o \1.so:/\nwq' | ed -s .depend
400.  endif
401.endif
402
403.if !target(install)
404.  if !target(beforeinstall)
405beforeinstall:
406.  endif
407
408realinstall:
409.  if ${LTMIRMAKE:L} == "yes"
410	${LIBTOOL} --mode=install ${INSTALL} ${INSTALL_COPY} -m ${LIBMODE} \
411	    -o ${LIBOWN} -g ${LIBGRP} lib${LIB}.la ${DESTDIR}${LIBDIR}/
412.  else
413.    if ${_LIBS_STATIC:L} == "yes"
414	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
415	    lib${LIB}.a ${DESTDIR}${LIBDIR}/
416.      if ${OBJECT_FMT} == "Mach-O"
417	chmod 600 ${DESTDIR}${LIBDIR}/lib${LIB}.a
418	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}.a
419	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
420.      endif
421.    endif
422.    ifdef SHLIB_SONAME
423.      if (${OBJECT_FMT} == "Mach-O") && (${SHLIB_TYPE:L} != "plugin") && (${SHLIB_TYPE:L} != "extension")
424	@print -r Relinking dynamic ${LIB} library
425	${LINK.shlib} -install_name ${LIBDIR}/${SHLIB_SONAME} -o ${SHLIB_SONAME}
426.      endif
427	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
428	    ${SHLIB_SONAME} ${DESTDIR}${LIBDIR}/${SHLIB_SONAME}~
429.      if !defined(MKC_DEBG) || ${MKC_DEBG:L} == "no"
430	${STRIP} ${_SODISCARD} ${DESTDIR}${LIBDIR}/${SHLIB_SONAME}~
431.      endif
432	cd ${DESTDIR}${LIBDIR} && \
433	    chmod ${LIBMODE} ${SHLIB_SONAME}~ && \
434	    mv -f ${SHLIB_SONAME}~ ${SHLIB_SONAME}
435.      for _i in ${SHLIB_LINKS}
436	@rm -f ${DESTDIR}${LIBDIR}/${_i}
437	cd ${DESTDIR}${LIBDIR}; \
438	    ln -s ${SHLIB_SONAME} ${_i} || cp ${SHLIB_SONAME} ${_i}
439.      endfor
440.    elif ${_LIBS_SHARED:L} == "yes"
441	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
442	    lib${LIB}_pic.a ${DESTDIR}${LIBDIR}/
443.      if ${OBJECT_FMT} == "Mach-O"
444	chmod 600 ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
445	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
446	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
447.      endif
448.    endif
449.  endif
450.  if ${NOLINT:L} == "no"
451	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${SHAREMODE} \
452	    llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}/
453.  endif
454.  if defined(LINKS) && !empty(LINKS)
455.    for lnk file in ${LINKS}
456	@l=${DESTDIR}${lnk}; \
457	 t=${DESTDIR}${file}; \
458	 print -r -- $$t -\> $$l; \
459	 rm -f $$t; ln $$l $$t || cp $$l $$t
460.    endfor
461.  endif
462
463install: maninstall _SUBDIRUSE
464maninstall: afterinstall
465afterinstall: realinstall
466realinstall: beforeinstall
467.endif	# not target install
468
469.if !target(tags)
470tags: ${.CURDIR}/tags
471
472${.CURDIR}/tags: ${SRCS}
473	${CTAGS} -w -f $@ ${.ALLSRC:N*.S:N*.s}
474	egrep "^SYSENTRY(.*)|^ENTRY(.*)|^NENTRY(.*)|^ALTENTRY(.*)|^FUNC(.*)|^SYSCALL(.*)" \
475	    /dev/null ${.ALLSRC:M*.S} ${.ALLSRC:M*.s} | sed \
476	    "s;\([^:]*\):\([^(]*\)(\([^, )]*\)\(.*\);\3 \1 /^\2(\3\4$$/;" >>$@
477	sort -o $@ $@
478.endif
479
480.if ${NOMAN:L} == "no"
481.  include <bsd.man.mk>
482.endif
483
484.include <bsd.obj.mk>
485.include <bsd.dep.mk>
486.include <bsd.subdir.mk>
487.include <bsd.sys.mk>
488
489.endif
490