summaryrefslogtreecommitdiffstats
path: root/share/mk/bsd.progs.mk
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2012-10-22 01:18:41 +0000
committermarcel <marcel@FreeBSD.org>2012-10-22 01:18:41 +0000
commit8412efbea82a893c704af85b8b51e68d1fdc217c (patch)
tree7dfa45acec5e77f85aeea486243e3989c98529c5 /share/mk/bsd.progs.mk
parent6731953527d251334ba5f2b979c2eb86dccdf755 (diff)
downloadFreeBSD-src-8412efbea82a893c704af85b8b51e68d1fdc217c.zip
FreeBSD-src-8412efbea82a893c704af85b8b51e68d1fdc217c.tar.gz
Add ATF to the build. This is may be a bit rought around the egdes,
but committing it helps to get everyone on the same page and makes sure we make progress. Tinderbox breakages that are the result of this commit are entirely the committer's fault -- in other words: buildworld testing on amd64 only. Credits follow: Submitted by: Garrett Cooper <yanegomi@gmail.com> Sponsored by: Isilon Systems Based on work by: keramida@ Thanks to: gnn@, mdf@, mlaier@, sjg@ Special thanks to: keramida@
Diffstat (limited to 'share/mk/bsd.progs.mk')
-rw-r--r--share/mk/bsd.progs.mk350
1 files changed, 350 insertions, 0 deletions
diff --git a/share/mk/bsd.progs.mk b/share/mk/bsd.progs.mk
new file mode 100644
index 0000000..531c2ef
--- /dev/null
+++ b/share/mk/bsd.progs.mk
@@ -0,0 +1,350 @@
+# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
+# $FreeBSD$
+
+.include <bsd.init.mk>
+
+.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .ln .s .S .asm
+
+.if ${MK_MAN} == "no"
+NO_MAN=
+.endif
+
+# Legacy knobs
+.if defined(PROG) || defined(PROG_CXX)
+. if defined(PROG)
+PROGS= ${PROG}
+. endif
+. if defined(PROG_CXX)
+PROGS= ${PROG_CXX}
+PROGS_CXX= ${PROG_CXX}
+. endif
+# Loop once to keep pattern and avoid namespace pollution
+. for _P in ${PROGS}
+. if defined(INTERNALPROG)
+INTERNALPROG.${_P}=
+. endif
+. if !defined(NO_MAN)
+. if defined(MAN)
+MAN.${_P}= ${MAN}
+. else
+. for sect in 1 1aout 2 3 4 5 6 7 8 9
+. if defined(MAN${sect})
+MAN.${_P}= ${MAN${sect}}
+. endif
+. endfor
+. endif
+. endif # defined(NO_MAN)
+. if defined(NLSNAME) && !empty(NLSNAME)
+NLSNAME.${P}:= ${NLSNAME}
+. endif
+. if defined(OBJS)
+OBJS.${_P}:= ${OBJS}
+. endif
+. if defined(PRECIOUSPROG)
+PRECIOUSPROG.${_P}=
+. endif
+. if defined(PROGNAME)
+PROGNAME.${_P}= ${PROGNAME}
+. endif
+. if defined(SRCS)
+SRCS.${_P}:= ${SRCS}
+. endif
+. endfor
+.else # !defined(PROG) && !defined(PROG_CXX)
+. if defined(PROGS_CXX) && !empty(PROGS_CXX)
+PROGS+= ${PROGS_CXX}
+. endif
+.endif # defined(PROG) || defined(PROG_CXX)
+
+.if defined(PROGS_CXX) && !empty(PROGS_CXX)
+. for _P in ${PROGS_CXX}
+PROG_CXX.${_P}=
+. endfor
+.endif
+
+# Avoid recursive variables
+.undef NLSNAME
+
+.if defined(COPTS)
+CFLAGS+=${COPTS}
+.endif
+
+.if defined(DEBUG_FLAGS)
+. if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != ""
+CTFFLAGS+= -g
+. endif
+CFLAGS+=${DEBUG_FLAGS}
+CXXFLAGS+=${DEBUG_FLAGS}
+.endif
+
+STRIP?= -s
+
+.if ${MK_ASSERT_DEBUG} == "no"
+CFLAGS+= -DNDEBUG
+NO_WERROR=
+.endif
+
+.for _P in ${PROGS}
+
+BINDIR.${_P}?= ${BINDIR}
+BINGRP.${_P}?= ${BINGRP}
+BINMODE.${_P}?= ${BINMODE}
+BINOWN.${_P}?= ${BINOWN}
+
+CFLAGS.${_P}+= ${CFLAGS}
+CXXFLAGS.${_P}+= ${CXXFLAGS}
+DPADD.${_P}+= ${DPADD}
+LDADD.${_P}+= ${LDADD}
+LDFLAGS.${_P}+= ${LDFLAGS}
+
+INSTALLFLAGS.${_P}?= ${INSTALLFLAGS}
+
+. if defined(PRECIOUSPROG.${_P})
+. if !defined(NO_FSCHG) && !defined(NO_FSCHG.${_P})
+INSTALLFLAGS.${_P}+= -fschg
+. endif
+INSTALLFLAGS.${_P}+= -S
+. endif
+
+NO_SHARED.${_P}?= ${NO_SHARED}
+
+. if !defined(NLSDIR.${_P})
+NLSDIR.${_P}:= ${NLSDIR}
+. endif
+. undef NLSDIR
+
+. if !empty(NO_SHARED.${_P}) && ${NO_SHARED.${_P}:tl} != "no"
+LDFLAGS.${_P}+= -static
+. endif
+
+. if defined(SRCS.${_P})
+
+_SRCS:= ${SRCS.${_P}}
+OBJS.${_P}+= ${_SRCS:N*.h:R:S/$/.o/g}
+
+. if target(beforelinking)
+${_P}: ${OBJS.${_P}} beforelinking
+. else
+${_P}: ${OBJS.${_P}}
+. endif
+. if defined(PROG_CXX.${_P})
+ ${CXX} ${CXXFLAGS.${_P}} ${LDFLAGS.${_P}} -o ${.TARGET} ${OBJS.${_P}} \
+ ${LDADD.${_P}}
+. else
+ ${CC} ${CFLAGS.${_P}} ${LDFLAGS.${_P}} -o ${.TARGET} ${OBJS.${_P}} \
+ ${LDADD.${_P}}
+. endif
+. if ${MK_CTF} != "no"
+ ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS.${_P}}
+. endif
+
+. else # !defined(SRCS.${_P})
+
+. if !target(${_P})
+. if defined(PROG_CXX.${_P})
+SRCS.${_P}?= ${_P}.cc
+. else
+SRCS.${_P}?= ${_P}.c
+. endif
+
+# Always make an intermediate object file because:
+# - it saves time rebuilding when only the library has changed
+# - the name of the object gets put into the executable symbol table instead of
+# the name of a variable temporary object.
+# - it's useful to keep objects around for crunching.
+OBJS.${_P}:= ${_P}.o
+
+. if target(beforelinking)
+${_P}: ${OBJS.${_P}} beforelinking
+. else
+${_P}: ${OBJS.${_P}}
+. endif # target(beforelinking)
+. if defined(PROG_CXX.${_P})
+ ${CXX} ${CXXFLAGS.${_P}} ${LDFLAGS.${_P}} -o ${.TARGET} ${OBJS.${_P}} \
+ ${LDADD.${_P}}
+. else
+ ${CC} ${CFLAGS.${_P}} ${LDFLAGS.${_P}} -o ${.TARGET} ${OBJS.${_P}} \
+ ${LDADD.${_P}}
+. endif
+. if ${MK_CTF} != "no"
+ ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS.${_P}}
+. endif
+
+. endif # !target(${_P})
+
+. endif # defined(SRCS.${_P})
+
+CLEANFILES+= ${OBJS.${_P}}
+
+.endfor # for _P in ${PROGS}
+
+all: objwarn ${PROGS} ${SCRIPTS}
+
+.if !defined(NO_MAN)
+. for _P in ${PROGS}
+MAN.${_P}?= ${_P}.1
+MAN:= ${MAN.${_P}}
+. include <bsd.man.mk>
+. endfor
+. if target(_manpages) # bsd.man.mk was included
+all: _manpages
+. endif
+.endif
+
+CLEANFILES+= ${PROGS}
+
+.include <bsd.libnames.mk>
+
+_EXTRADEPEND:
+.for _P in ${PROGS}
+. if !empty(LDFLAGS.${P}:M-nostdlib)
+. if !empty(DPADD.${_P})
+ echo ${_P}: ${DPADD.${_P}} >> ${DEPENDFILE}
+. endif
+. else
+ echo ${_P}: ${LIBC} ${DPADD.${_P}} >> ${DEPENDFILE}
+. if defined(PROG_CXX.${_P})
+. if !empty(CXXFLAGS.${P}:M-stdlib=libc++)
+ echo ${_P}: ${LIBCPLUSPLUS} >> ${DEPENDFILE}
+. else
+ echo ${_P}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
+. endif
+. endif
+. endif
+.endfor
+
+.if !target(install)
+
+. if !target(realinstall)
+
+. for _P in ${PROGS}
+
+. if !defined(INTERNALPROG.${_P})
+
+.ORDER: beforeinstall _proginstall.${_P}
+_proginstall.${_P}:
+. if defined(PROGNAME.${_P})
+ ${INSTALL} ${STRIP} -o ${BINOWN.${_P}} -g ${BINGRP.${_P}} \
+ -m ${BINMODE.${_P}} ${INSTALLFLAGS.${_P}} ${_P} \
+ ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}
+. else
+ ${INSTALL} ${STRIP} -o ${BINOWN.${_P}} -g ${BINGRP.${_P}} \
+ -m ${BINMODE.${_P}} ${INSTALLFLAGS.${_P}} ${_P} \
+ ${DESTDIR}${BINDIR.${_P}}
+. endif
+
+realinstall: _proginstall.${_P}
+
+. endif # !defined(INTERNALPROG.${_P})
+
+. endfor # for _P in ${PROGS}
+
+. endif # !target(realinstall)
+
+. if defined(SCRIPTS) && !empty(SCRIPTS)
+SCRIPTSDIR?= ${BINDIR}
+SCRIPTSOWN?= ${BINOWN}
+SCRIPTSGRP?= ${BINGRP}
+SCRIPTSMODE?= ${BINMODE}
+
+. for S in ${SCRIPTS}
+
+realinstall: scriptsinstall
+.ORDER: beforeinstall scriptsinstall
+
+. if defined(SCRIPTSNAME)
+SCRIPTSNAME_${S}?= ${SCRIPTSNAME}
+. else
+SCRIPTSNAME_${S}?= ${S:T:R}
+. endif
+
+SCRIPTSDIR_${S}?= ${SCRIPTSDIR}
+SCRIPTSOWN_${S}?= ${SCRIPTSOWN}
+SCRIPTSGRP_${S}?= ${SCRIPTSGRP}
+SCRIPTSMODE_${S}?= ${SCRIPTSMODE}
+
+scriptsinstall: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
+
+${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}: ${S}
+ ${INSTALL} -o ${SCRIPTSOWN_${S}} \
+ -g ${SCRIPTSGRP_${S}} \
+ -m ${SCRIPTSMODE_${S}} \
+ ${.ALLSRC} \
+ ${.TARGET}
+
+. endfor # for S in ${SCRIPTS}
+
+. endif # defined(SCRIPTS) && !empty(SCRIPTS)
+
+.endif # !target(install)
+
+.if !defined(NO_MAN)
+. if target(_manpages) # bsd.man.mk was included
+realinstall: _maninstall
+. endif
+.endif
+
+# Wrap bsd.nls.mk because I can't force that Makefile snippet to work only with
+# ${PROGS}.
+.for _P in ${PROGS}
+NLSNAME.${_P}?= ${_P}
+NLS:= ${NLS.${_P}}
+NLSDIR:= ${NLSDIR.${_P}}
+NLSNAME:= ${NLSNAME.${_P}}
+.include <bsd.nls.mk>
+.endfor
+
+.include <bsd.files.mk>
+.include <bsd.incs.mk>
+.include <bsd.links.mk>
+
+.if !target(lint)
+. for _P in ${PROGS}
+. if !target(lint.${_P})
+. if defined(PROG_CXX.${_P})
+lint.${_P}:
+. else
+_CFLAGS:= ${CFLAGS.${_P}}
+_SRCS:= ${SRCS.${_P}}
+lint.${_P}: ${_SRCS:M*.c}
+ ${LINT} ${LINTFLAGS} ${_CFLAGS:M-[DIU]*} ${.ALLSRC}
+. endif
+. endif
+lint: lint.${_P}
+
+. endfor
+.endif # !target(lint)
+
+.for _P in ${PROGS}
+CFLAGS:= ${CFLAGS.${_P}}
+CXXFLAGS:= ${CXXFLAGS.${_P}}
+# XXX: Pollutes DPADD.${_P} and LDADD.${_P} above
+#DPADD:= ${DPADD.${_P}}
+#LDADD:= ${LDADD.${_P}}
+SRCS:= ${SRCS.${_P}}
+. include <bsd.dep.mk>
+# bsd.dep.mk mangles SRCS
+SRCS.${_P}:= ${SRCS}
+. undef DPADD LDADD
+.endfor
+
+# XXX: emulate the old bsd.prog.mk by allowing Makefiles that didn't set
+# ${PROG*} to function with this Makefile snippet.
+.if empty(PROGS)
+. include <bsd.dep.mk>
+.endif
+
+.if !exists(${.OBJDIR}/${DEPENDFILE})
+. for _P in ${PROGS}
+_SRCS:= ${SRCS.${_P}}
+${OBJS.${_P}}: ${_SRCS:M*.h}
+. endfor
+.endif
+
+.include <bsd.obj.mk>
+
+.include <bsd.sys.mk>
+
+.if defined(PORTNAME)
+.include <bsd.pkg.mk>
+.endif
OpenPOWER on IntegriCloud