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