Makefile revision 28729
1#	@(#)Makefile	8.4 (Berkeley) 5/5/95
2#	$Id: Makefile,v 1.21 1997/05/21 03:23:23 steve Exp $
3
4PROG=	sh
5SHSRCS=	alias.c cd.c echo.c error.c eval.c exec.c expand.c \
6	histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
7	mystring.c options.c output.c parser.c printf.c redir.c show.c \
8	trap.c var.c
9GENSRCS= arith.c arith_lex.c builtins.c init.c nodes.c syntax.c
10SRCS=	${SHSRCS} ${GENSRCS}
11
12DPADD+= ${LIBL} ${LIBEDIT} ${LIBTERMCAP}
13LDADD+= -ll -ledit -ltermcap
14
15LFLAGS= -8	# 8-bit lex scanner for arithmetic
16CFLAGS+=-DSHELL -I. -I${.CURDIR}
17# for debug:
18# CFLAGS+= -g -DDEBUG=2
19
20.PATH:	${.CURDIR}/bltin ${.CURDIR}/../../usr.bin/printf
21
22CLEANFILES+= builtins.h mkinit mkinit.o mknodes mknodes.o \
23	mksyntax mksyntax.o \
24	nodes.h syntax.h token.h y.tab.h
25CLEANFILES+= ${GENSRCS}
26
27beforedepend: builtins.h nodes.h syntax.h token.h
28
29builtins.c builtins.h: mkbuiltins builtins.def
30	cd ${.CURDIR}; sh mkbuiltins ${.OBJDIR}
31
32init.c: mkinit alias.c eval.c exec.c input.c jobs.c options.c parser.c \
33	redir.c trap.c var.c
34	./mkinit ${.ALLSRC:S/^mkinit$//}
35
36# XXX this is just to stop the default .c rule being used, so that the
37# intermediate object has a fixed name.
38# XXX we have a default .c rule, but no default .o rule.
39.o:
40	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
41mkinit: mkinit.o
42mkinit.o: mkinit.c		# XXX and many headers
43mknodes: mknodes.o
44mknodes.o: mknodes.c		# XXX and many headers
45mksyntax: mksyntax.o
46mksyntax.o: mksyntax.c		# XXX and many headers
47
48nodes.c nodes.h: mknodes nodetypes nodes.c.pat
49	./mknodes ${.CURDIR}/nodetypes ${.CURDIR}/nodes.c.pat
50
51syntax.c syntax.h: mksyntax
52	./mksyntax
53
54token.h: mktokens
55	sh ${.CURDIR}/mktokens
56
57y.tab.h: arith.c
58
59# Rules for object files that rely on generated headers.
60arith_lex.o: y.tab.h
61cd.o: nodes.h
62eval.o: builtins.h nodes.h syntax.h
63exec.o: builtins.h nodes.h syntax.h
64expand.o: nodes.h syntax.h
65input.o: syntax.h
66jobs.o: nodes.h syntax.h
67main.o: nodes.h
68mystring.o: syntax.h
69options.o: nodes.h
70output.o: syntax.h
71parser.o: nodes.h syntax.h token.h
72redir.o: nodes.h
73show.o: nodes.h
74trap.o: nodes.h syntax.h
75var.o: nodes.h syntax.h
76
77.include <bsd.prog.mk>
78