include ${MAKETOP}/Makefile-common

PROGRAM   = sh
MAN1PAGES = sh
OBJECTS   = builtins.o cd.o dirent.o echo.o error.o eval.o exec.o expand.o \
	input.o jobs.o mail.o main.o memalloc.o miscbltin.o \
	mystring.o nodes.o options.o parser.o redir.o show.o signames.o \
	syntax.o trap.o output.o var.o \
	init.o

SRC   = builtins.c cd.c dirent.c echo.c error.c eval.c exec.c expand.c \
	input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
	mystring.c nodes.c options.c parser.c redir.c show.c signames.c \
	syntax.c trap.c output.c var.c

CFLAGS = ${CFLAGS} -DSHELL
VPATH = bltin

parser.o: token.def

token.def: # mktokens
	VPATH="${VPATH}"; export VPATH; \
	sh `wh -q -p VPATH mktokens`

# mkbuiltins.sh uses VPATH
builtins.c: mkbuiltins.sh # builtins
	VPATH="${VPATH}"; export VPATH; \
	sh `wh -q -p VPATH mkbuiltins.sh`

init.c: mkinit ${SRC}
	./mkinit '${CC} -c ${CFLAGS} init.c' ${SRC}

mkinit: mkinit.c
	${USE_HOST_PATHS} ${HOST_CC} ${HOST_CFLAGS} mkinit.c -o $@

${OBJECTS}: nodes.h syntax.h signames.h

nodes.c nodes.h: mknodes nodetypes nodes.c.pat
	./mknodes nodetypes nodes.c.pat

mknodes: mknodes.c
	${USE_HOST_PATHS} ${HOST_CC} ${HOST_CFLAGS} mknodes.c -o $@

signames.c signames.h: mksignames
	./mksignames

mksignames: mksignames.c
	${USE_HOST_X_PATHS} ${HOST_CC} ${HOST_CFLAGS} mksignames.c -o $@

syntax.c syntax.h: mksyntax
	./mksyntax

mksyntax: mksyntax.c parser.h
	${USE_HOST_PATHS} ${HOST_CC} ${HOST_CFLAGS} mksyntax.c -o $@

.SUFFIXES: .sh

include ${MAKETOP}/Makefile-bin
include ${MAKETOP}/Makefile-man
-include Makedep
