summaryrefslogtreecommitdiff
path: root/mk/elftoolchain.prog.mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk/elftoolchain.prog.mk')
-rw-r--r--mk/elftoolchain.prog.mk86
1 files changed, 86 insertions, 0 deletions
diff --git a/mk/elftoolchain.prog.mk b/mk/elftoolchain.prog.mk
new file mode 100644
index 0000000000000..8d822cdf58ea1
--- /dev/null
+++ b/mk/elftoolchain.prog.mk
@@ -0,0 +1,86 @@
+#
+# Rules for building programs.
+#
+# $Id: elftoolchain.prog.mk 2796 2012-12-19 12:44:09Z jkoshy $
+
+.if !defined(TOP)
+.error Make variable \"TOP\" has not been defined.
+.endif
+
+.include "${TOP}/mk/elftoolchain.os.mk"
+
+LIBDWARF?= ${TOP}/libdwarf
+LIBELF?= ${TOP}/libelf
+LIBELFTC?= ${TOP}/libelftc
+
+BINDIR?= /usr/bin
+
+CFLAGS+= -I. -I${.CURDIR} -I${TOP}/common
+CLEANFILES+= .depend
+
+.if defined(LDADD)
+_LDADD_LIBDWARF=${LDADD:M-ldwarf}
+.if !empty(_LDADD_LIBDWARF)
+CFLAGS+= -I${TOP}/libdwarf
+LDFLAGS+= -L${TOP}/libdwarf
+.endif
+
+_LDADD_LIBELF=${LDADD:M-lelf}
+.if !empty(_LDADD_LIBELF)
+CFLAGS+= -I${TOP}/libelf
+LDFLAGS+= -L${TOP}/libelf
+.endif
+
+_LDADD_LIBELFTC=${LDADD:M-lelftc}
+.if !empty(_LDADD_LIBELFTC)
+CFLAGS+= -I${TOP}/libelftc
+LDFLAGS+= -L${TOP}/libelftc
+.endif
+.endif
+
+#
+# Handle lex(1) and yacc(1) in a portable fashion.
+#
+# New makefile variables used:
+#
+# LSRC -- a lexer definition suitable for use with lex(1)
+# YSRC -- a parser definition for use with yacc(1)
+
+# Use standard rules from <bsd.*.mk> for building lexers.
+.if defined(LSRC)
+SRCS+= ${LSRC}
+.endif
+
+# Handle the generation of yacc based parsers.
+# If the program uses a lexer, add an automatic dependency
+# on the generated parser header.
+.if defined(YSRC)
+.for _Y in ${YSRC}
+SRCS+= ${_Y:R}.c
+CLEANFILES+= ${_Y:R}.c ${_Y:R}.h
+${_Y:R}.c ${_Y:R}.h: ${_Y}
+ ${YACC} -d -o ${_Y:R}.c ${.ALLSRC}
+
+.if defined(LSRC)
+.for _L in ${LSRC}
+${_L:R}.o: ${_Y:R}.h
+.endfor
+.endif
+
+.endfor
+.endif
+
+.include <bsd.prog.mk>
+
+# Note: include the M4 ruleset after bsd.prog.mk.
+.include "${TOP}/mk/elftoolchain.m4.mk"
+
+# Support a 'clobber' target.
+clobber: clean .PHONY
+
+.if defined(DEBUG)
+CFLAGS:= ${CFLAGS:N-O*} -g
+.endif
+
+# Bring in rules related to test code.
+.include "${TOP}/mk/elftoolchain.test.mk"