
# This Makefile is automagically made from cpp-Makefile.  You should
# not be editing this file; edit cpp-Makefile, machines.h, or
# support/mksysdefs instead.  Then, assuming the edits were required
# to compile Bash on your system, mail the changes you had to make to
# bash-maintainers@prep.ai.mit.edu.  We will do our best to incorporate
# them into the next release.

# Make sure the first target in the makefile is the right one
all: .made

# We would like you to use Bison instead of Yacc since some
# versions of Yacc cannot handle reentrant parsing.  Unfortunately,
# this includes the Yacc currently being shipped with SunOS4.x.
# If you do use Yacc, please make sure that any bugs in parsing
# are not really manifestations of Yacc bugs before you report
# them.

prefix = /usr/local

exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
libdir = $(exec_prefix)/lib

manroot = $(prefix)/man

man1ext = 1
man1dir = $(manroot)/man$(man1ext)
man3ext = 3
man3dir = $(manroot)/man$(man3ext)
mandir = $(man1dir)
manext = $(man1ext)

infodir = $(prefix)/info

srcdir = .

VPATH = .:$(srcdir)

PURIFY = # purify

.SUFFIXES: .aux
# Here is a rule for making .o files from .c files that does not
# force the type of the machine (like -"UNKNOWN_MACHINE") into the flags.
.c.o:
	$(RM) $@
	$(CC) $(CCFLAGS) $(CPPFLAGS) -c $<

.c.aux:
	$(RM) $@
	$(CC) $(CCFLAGS) $(CPPFLAGS) -o $@ $<

BISON = bison -y

CC = gcc

# If the user has specified a Make shell, then use that.

SHELL=/bin/sh

CP = cp
RM = rm -f
AR = ar

INSTALL = $(SUPPORT_SRC)install.sh
INSTALL_PROGRAM = $(INSTALL) -c
INSTALL_DATA = $(INSTALL) -c -m 644

COMPRESS = gzip
COMPRESS_EXT = .gz

Machine = "Atari"
OS = "ASV"

# PROFILE_FLAGS is either -pg, to generate profiling info for use
# with gprof, or nothing (the default).
PROFILE_FLAGS=

# This system has some peculiar flags that must be passed to the
# the C compiler (or to cpp).
SYSDEP = 

# This system has the setlinebuf () call.
LINEBUF = -DHAVE_SETLINEBUF

# This system has the vprintf () and vfprintf () calls.
VPRINTF = -DHAVE_VFPRINTF

# This system has <sys/stream.h>
STREAM = -DHAVE_SYS_STREAM_H

# This system has <sys/ptem.h>
PTEM = -DHAVE_SYS_PTEM_H

# This system has <unistd.h>.

UNISTD = -DHAVE_UNISTD_H

# This system has <stdlib.h>

STDLIB = -DHAVE_STDLIB_H

# This system has <limits.h>

LIMITSH = -DHAVE_LIMITS_H

# This system has multiple groups.
GROUPS = -DHAVE_GETGROUPS

# This system has <sys/resource.h>
RESOURCE = -DHAVE_RESOURCE

# This system has <sys/param.h>
PARAM = -DHAVE_SYS_PARAM

# This system has <sys/wait.h>
WAITH = -DHAVE_WAIT_H

# This system has the getwd () call.
GETWD = -DHAVE_GETWD

# This system has a working version of dup2 ().
DUP2 = -DHAVE_DUP2

# This system has /usr/include/dirent.h
DIRENTH = -DHAVE_DIRENT_H

# This system has /usr/include/string.h
STRINGH = -DHAVE_STRING_H

# This system has /usr/include/varargs.h
VARARGSH = -DHAVE_VARARGS_H

# This system has strchr () and strrchr () string functions.
STRCHR = -DHAVE_STRCHR

# This system has the /dev/fd directory for naming open files.
DEVFD = -DHAVE_DEV_FD

# The GNU coding standards don't recognize the possibility that
# other information besides optimization and debugging might be
# passed to cc.  A different name should have been used.
CFLAGS = -O -DSunOS5

SYSTEM_FLAGS = $(LINEBUF) $(VPRINTF) $(UNISTD) $(STDLIB) $(LIMITSH) \
       $(GROUPS) $(RESOURCE) $(PARAM) $(SIGHANDLER) $(SYSDEP) $(WAITH) \
       $(GETWD) $(DUP2) $(STRERROR) $(DIRENT) $(DIRENTH) $(STRINGH) \
       $(VARARGSH) $(STRCHR) $(STRCASE) $(DEVFD) \
       -D$(Machine) -D$(OS)
LDFLAGS	= $(NOSHARE) $(SYSDEP_LD) $(EXTRA_LD_PATH) $(PROFILE_FLAGS) $(CFLAGS)
CCFLAGS	= $(PROFILE_FLAGS) $(SYSTEM_FLAGS) -DSHELL $(ALLOCA_CFLAGS) \
	  $(MALLOC_CFLAGS) $(CFLAGS)
CPPFLAGS= -I. -I$(srcdir) -I$(LIBSRC)
GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
		 -Wwrite-strings -Werror -Wstrict-prototypes \
		 -Wmissing-prototypes
GCC_LINT_CFLAGS = $(PROFILE_FLAGS) $(CFLAGS) $(SYSTEM_FLAGS) -DSHELL $(ALLOCA_CFLAGS) \
		  $(MALLOC_CFLAGS) $(GCC_LINT_FLAGS)

# The location of sources for the support libraries.
LIBPATH = ./lib/
LIBSRC = $(srcdir)/$(LIBPATH)

# Preface building with the full path of the current library source.
LIBINC_DECL  = topdir=`sh $(srcdir)/support/srcdir $(srcdir)`; export topdir
LIBINC_USAGE = "-I$${topdir} -I$${topdir}/$(LIBPATH) -I$(LIBSRC)"

# Flags used when building libraries.
LIBRARY_CFLAGS  = $(PROFILE_FLAGS) $(CFLAGS) $(SIGHANDLER) $(ALLOCA_CFLAGS) \
		  $(SYSDEP) $(DIRENT) $(DIRENTH) $(STRINGH) $(VARARGSH) \
		  $(PTEM) $(PTE) $(STREAM) $(STRERROR) $(RESOURCE) \
		  $(STRCHR) -D$(Machine) -D$(OS) $(UNISTD) $(LIMITSH) \
		  $(STRCASE) $(STDLIB) -DSHELL

# These are required for sending bug reports.
SYSTEM_NAME = $(Machine)
OS_NAME = $(OS)

# The name of this program.
Program = bash

# The type of machine and OS Bash is being compiled on.
HOSTTYPE_DECL = -DHOSTTYPE='$(SYSTEM_NAME)' -DOSTYPE='$(OS_NAME)'

# The group of configuration flags.  These are for shell.c
CFG_FLAGS = -DOS_NAME='$(OS_NAME)' -DSYSTEM_NAME='$(SYSTEM_NAME)' \
	    $(SIGLIST_FLAG)

# The compiler being used to build Bash can handle -L/library/path.
SEARCH_LIB = -L

RL_LIBSRC = $(LIBSRC)readline/
RL_LIBDOC = $(RL_LIBSRC)doc/
RL_LIBDIR = $(LIBPATH)readline/
RL_ABSSRC = $${topdir}/$(RL_LIBDIR)

READLINE_LIBRARY = $(RL_LIBDIR)libreadline.a

# The source, object and documentation of the GNU Readline library.
READLINE_SOURCE	= $(RL_LIBSRC)rldefs.h $(RL_LIBSRC)rlconf.h \
		  $(RL_LIBSRC)readline.h \
		  $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)keymaps.h \
		  $(RL_LIBSRC)funmap.c $(RL_LIBSRC)emacs_keymap.c \
		  $(RL_LIBSRC)search.c $(RL_LIBSRC)vi_keymap.c \
		  $(RL_LIBSRC)keymaps.c $(RL_LIBSRC)parens.c \
		  $(RL_LIBSRC)vi_mode.c $(RL_LIBSRC)history.c \
		  $(RL_LIBSRC)readline.c $(RL_LIBSRC)tilde.c \
		  $(RL_LIBSRC)rltty.c $(RL_LIBSRC)complete.c \
		  $(RL_LIBSRC)bind.c $(RL_LIBSRC)isearch.c \
		  $(RL_LIBSRC)display.c $(RL_LIBSRC)signals.c \
		  $(RL_LIBSRC)posixstat.h $(RL_LIBSRC)tilde.h \
		  $(RL_LIBSRC)xmalloc.c

READLINE_OBJ	= $(RL_LIBDIR)readline.o $(RL_LIBDIR)funmap.o \
		  $(RL_LIBDIR)parens.o $(RL_LIBDIR)search.o \
		  $(RL_LIBDIR)keymaps.o $(RL_LIBDIR)history.o \
		  $(RL_LIBDIR)rltty.o $(RL_LIBDIR)complete.o \
		  $(RL_LIBDIR)bind.o $(RL_LIBDIR)isearch.o \
		  $(RL_LIBDIR)display.o $(RL_LIBDIR)signals.o \
		  $(RL_LIBDIR)tilde.o $(RL_LIBDIR)xmalloc.o

READLINE_DOC	= $(RL_LIBDOC)rlman.texinfo $(RL_LIBDOC)rluser.texinfo \
		  $(RL_LIBDOC)rltech.texinfo

READLINE_DOC_SUPPORT  = $(RL_LIBDOC)Makefile $(RL_LIBDOC)readline.dvi \
		  $(RL_LIBDOC)readline.info

# This has to be written funny to avoid looking like a C comment starter.
READLINE_EXAMPLES = $(RL_LIBSRC)examples/[a-zA-Z]*.[ch] \
		    $(RL_LIBSRC)examples/Makefile $(RL_LIBSRC)examples/Inputrc

# Support files for GNU Readline.
READLINE_SUPPORT = $(RL_LIBSRC)Makefile $(RL_LIBSRC)ChangeLog \
		   $(RL_LIBSRC)COPYING $(READLINE_EXAMPLES) \
		   $(READLINE_DOC_SUPPORT)

HIST_SUPPORT_SRC = bashhist.c
HIST_SUPPORT_OBJ = bashhist.o

HIST_LIBSRC = $(LIBSRC)readline/
HIST_LIBDOC = $(HIST_LIBSRC)doc/
HIST_LIBDIR = $(LIBPATH)readline/
HIST_ABSSRC = $${topdir}/$(HIST_LIBDIR)/

HISTORY_LIBRARY = 

# The source, object and documentation of the history library.
HISTORY_SOURCE	= $(HIST_LIBSRC)history.c $(HIST_LIBSRC)history.h
HISTORY_OBJ	= $(HIST_LIBDIR)history.o
HISTORY_DOC	= $(HIST_LIBDOC)hist.texinfo $(HIST_LIBDOC)hsuser.texinfo \
		  $(HIST_LIBDOC)hstech.texinfo

# Directory list for -L so that the link editor (ld) can find -lhistory.

TERMCAP_LIBRARY = /usr/local/lib/libtermcap.a

GLOB_LIBSRC = $(LIBSRC)glob/
GLOB_LIBDIR = $(LIBPATH)glob/
GLOB_ABSSRC = $${topdir}/$(GLOB_LIBDIR)

GLOB_LIBRARY = $(GLOB_LIBDIR)libglob.a

GLOB_SOURCE = $(GLOB_LIBSRC)glob.c $(GLOB_LIBSRC)fnmatch.c \
	      $(GLOB_LIBSRC)fnmatch.h
GLOB_OBJ    = $(GLOB_LIBDIR)glob.o $(GLOB_LIBDIR)fnmatch.o
GLOB_DOC    = $(GLOB_LIBSRC)doc/glob.texi $(GLOB_LIBSRC)doc/Makefile
GLOB_SUPPORT= $(GLOB_LIBSRC)Makefile $(GLOB_LIBSRC)ChangeLog

GLOB_LDFLAGS = $(SEARCH_LIB)$(GLOB_LIBDIR)

GLOB_LIB     = -lglob

# The source, object and documentation for the GNU Tilde library.
TILDE_LIBSRC = $(LIBSRC)tilde/
TILDE_LIBDIR = $(LIBPATH)tilde/
TILDE_ABSSRC = $${topdir}/$(TILDE_LIBDIR)

TILDE_LIBRARY = $(TILDE_LIBDIR)libtilde.a

TILDE_SOURCE	= $(TILDE_LIBSRC)tilde.c $(TILDE_LIBSRC)tilde.h
TILDE_OBJ	= $(TILDE_LIBDIR)tilde.o
TILDE_DOC	= $(TILDE_LIBSRC)doc/tilde.texi $(TILDE_LIBSRC)doc/Makefile
TILDE_SUPPORT	= $(TILDE_LIBSRC)Makefile $(TILDE_LIBSRC)ChangeLog

TILDE_LIB = -ltilde

TILDE_LDFLAGS = $(SEARCH_LIB)$(TILDE_LIBDIR)

MALLOC_LIBRARY =

BASHPOSIX_LIB     = $(LIBSRC)posixheaders/
BASHPOSIX_SUPPORT = $(BASHPOSIX_LIB)posixstat.h $(BASHPOSIX_LIB)ansi_stdlib.h \
		    $(BASHPOSIX_LIB)memalloc.h $(BASHPOSIX_LIB)stdc.h

# Declare all of the sources for the libraries that we have.
LIBRARY_SOURCE  = $(READLINE_SOURCE) $(HISTORY_SOURCE) $(TERMCAP_SOURCE) \
		  $(GLOB_SOURCE) $(TILDE_SOURCE) $(MALLOC_SOURCE)
LIBRARY_DOC    = $(READLINE_DOC) $(HISTORY_DOC) $(TERMCAP_DOC) $(GLOB_DOC) \
		  $(TILDE_DOC) $(MALLOC_DOC)
LIBRARY_SUPPORT = $(READLINE_SUPPORT) $(HISTORY_SUPPORT) $(TERMCAP_SUPPORT) \
		  $(GLOB_SUPPORT) $(TILDE_SUPPORT) $(MALLOC_SUPPORT)
LIBRARY_TAR     = $(LIBRARY_SOURCE) $(LIBRARY_DOC) $(LIBRARY_SUPPORT)

# You wish to compile with the line editing features installed.
READLINE_LIB = -lreadline

# You only need termcap (or curses) if you are linking with GNU Readline.

TERMCAP_LIB = /usr/local/lib/libtermcap.a

# Directory list for -L so that the link editor (ld) can find -lreadline.

READLINE_LDFLAGS = $(SEARCH_LIB)$(RL_LIBDIR) $(TERMCAP_LDFLAGS)

# The source and object of the bash<->readline interface code.
RL_SUPPORT_SRC = bashline.c bracecomp.c
RL_SUPPORT_OBJ = bashline.o $(BRACECOMP_OBJECT)

# The order is important.  Most dependent first.

LIBRARIES = $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \
	    $(TILDE_LIB) $(MALLOC_LIB) $(LOCAL_LIBS) -L/usr/ucblib -lucb -lnsl -lresolv -lsocket

READLINE_DEP = $(READLINE_LIBRARY)

GLOB_DEP = $(GLOB_LIBRARY)

TILDE_DEP = $(TILDE_LIBRARY)

# Source files for libraries that Bash depends on.
LIBDEP = $(READLINE_DEP) $(TERMCAP_DEP) $(GLOB_DEP) $(HISTORY_DEP) $(TILDE_DEP) $(MALLOC_DEP)

# Rules for cleaning the readline and termcap sources.

CLEAN_READLINE = (cd $(RL_LIBDIR); $(MAKE) $(MFLAGS) $@)

CLEAN_HISTORY = :

CLEAN_TERMCAP = :

CLEAN_GLOB = (cd $(GLOB_LIBDIR); $(MAKE) $(MFLAGS) $@)

CLEAN_TILDE = (cd $(TILDE_LIBDIR); $(MAKE) $(MFLAGS) $@)

CLEAN_MALLOC = :

LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(TILDE_LDFLAGS) \
		  $(GLOB_LDFLAGS) $(MALLOC_LDFLAGS)

# The directory which contains the source for malloc.  The name must
# end in a slash, as in "./lib/malloc/".
ALLOC_LIBSRC = $(LIBSRC)malloc/
ALLOC_LIBDIR = $(LIBPATH)malloc/
ALLOC_ABSSRC = $${topdir}/$(ALLOC_LIBDIR)

# Our malloc.

MALLOC_OBJ = $(ALLOC_LIBDIR)malloc.o
MALLOC_SRC = $(ALLOC_LIBSRC)malloc.c
MALLOC_DEP = $(MALLOC_SRC) $(ALLOC_LIBSRC)getpagesize.h
MALLOC_FLAGS = -Drcheck -Dbotch=programming_error

MALLOC_LIBRARY =

ALLOCA_H_DEFINE =

ALLOCA_DEFINE = -DHAVE_ALLOCA

ALLOCA_CFLAGS = $(ALLOCA_DEFINE) $(ALLOCA_H_DEFINE)

ALLOC_HEADERS = $(ALLOC_LIBSRC)getpagesize.h
ALLOC_FILES = $(ALLOC_LIBSRC)malloc.c $(ALLOC_LIBSRC)alloca.c \
	      $(ALLOC_LIBSRC)i386-alloca.s $(ALLOC_LIBSRC)x386-alloca.s \
	      $(ALLOC_LIBSRC)xmalloc.c

$(MALLOC_OBJ):	$(MALLOC_DEP)
		@sh $(SUPPORT_SRC)mkdirs $(ALLOC_LIBDIR)
		@$(RM) $@
		@($(LIBINC_DECL); cd $(ALLOC_LIBDIR) ; \
		 if [ ! -f Makefile ]; then cp $(ALLOC_ABSSRC)Makefile Makefile ; fi; \
		 $(MAKE) $(MFLAGS) \
		 CFLAGS='$(LIBRARY_CFLAGS) $(MALLOC_FLAGS)' \
		 CPPFLAGS='$(CPPFLAGS)' MALLOC_SOURCE=$(MALLOC_SRC) \
		 srcdir=$(ALLOC_ABSSRC) malloc.o )

# The location of ranlib on your system.

RANLIB = :

# The source and object of the curly brace expansion and completion code.
BRACES_SOURCE	 = braces.c
BRACECOMP_SOURCE = bracecomp.c

BRACES_OBJECT = braces.o

BRACECOMP_OBJECT = bracecomp.o

# Locally required libraries.
LOCAL_LIBS = 

BUILTINS_LIB = builtins/libbuiltins.a

# The main source code for the Bourne Again SHell.
CSOURCES = shell.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \
	   dispose_cmd.c execute_cmd.c variables.c $(GLOBC) version.c \
	   expr.c copy_cmd.c flags.c subst.c hash.c mailcheck.c \
	   test.c trap.c jobs.c nojobs.c $(ALLOC_FILES) $(BRACES_SOURCE) \
	   vprint.c input.c bashhist.c \
	   unwind_prot.c siglist.c getcwd.c $(RL_SUPPORT_SRC) error.c

HSOURCES = shell.h flags.h trap.h hash.h jobs.h builtins.h alias.c y.tab.h \
	   general.h variables.h config.h $(ALLOC_HEADERS) alias.h maxpath.h \
	   quit.h machines.h posixstat.h filecntl.h unwind_prot.h parser.h \
	   command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \
	   subst.h externs.h siglist.h bashhist.h bashtypes.h

SOURCES	 = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS)

# Matching object files.
OBJECTS	 = shell.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \
	   dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \
	   expr.o flags.o jobs.o subst.o hash.o mailcheck.o test.o \
	   trap.o alias.o $(MALLOC_OBJ) $(ALLOCA) $(BRACES_OBJECT) \
	   unwind_prot.o $(VPRINT_OBJ) input.o $(HIST_SUPPORT_OBJ) \
	   $(SIGLIST) $(GETCWD) version.o $(RL_SUPPORT_OBJ) $(BUILTINS_LIB)

# Where the source code of the shell builtins resides.
BUILTIN_SRCDIR=$(srcdir)/builtins/
# The trailing slash was left off this definition on purpose
BUILTIN_ABSSRC=$${topdir}/builtins
DEFDIR = builtins/
BUILTIN_DEFS = $(DEFDIR)alias.def $(DEFDIR)bind.def $(DEFDIR)break.def \
	       $(DEFDIR)builtin.def $(DEFDIR)cd.def $(DEFDIR)colon.def \
	       $(DEFDIR)command.def $(DEFDIR)declare.def $(LOAD_DEF) \
	       $(DEFDIR)echo.def $(DEFDIR)enable.def $(DEFDIR)eval.def \
	       $(DEFDIR)exec.def $(DEFDIR)exit.def $(DEFDIR)fc.def \
	       $(DEFDIR)fg_bg.def $(DEFDIR)hash.def $(DEFDIR)help.def \
	       $(DEFDIR)history.def $(DEFDIR)jobs.def $(DEFDIR)kill.def \
	       $(DEFDIR)let.def $(DEFDIR)read.def $(DEFDIR)return.def \
	       $(DEFDIR)set.def $(DEFDIR)setattr.def $(DEFDIR)shift.def \
	       $(DEFDIR)source.def $(DEFDIR)suspend.def $(DEFDIR)test.def \
	       $(DEFDIR)times.def $(DEFDIR)trap.def $(DEFDIR)type.def \
	       $(DEFDIR)ulimit.def $(DEFDIR)umask.def $(DEFDIR)wait.def \
	       $(DEFDIR)getopts.def $(DEFDIR)reserved.def
BUILTIN_C_SRC  = $(DEFDIR)mkbuiltins.c $(DEFDIR)common.c \
		  $(DEFDIR)hashcom.h $(DEFDIR)/bashgetopt.c $(GETOPT_SOURCE)
BUILTIN_C_OBJ  = $(GETOPTS_OBJ) $(DEFDIR)common.o $(DEFDIR)bashgetopt.o
BUILTIN_OBJS = $(DEFDIR)alias.o $(DEFDIR)bind.o $(DEFDIR)break.o \
	       $(DEFDIR)builtin.o $(DEFDIR)cd.o $(DEFDIR)colon.o \
	       $(DEFDIR)command.o $(DEFDIR)declare.o $(LOAD_OBJ) \
	       $(DEFDIR)echo.o $(DEFDIR)enable.o $(DEFDIR)eval.o \
	       $(DEFDIR)exec.o $(DEFDIR)exit.o $(DEFDIR)fc.o \
	       $(DEFDIR)fg_bg.o $(DEFDIR)hash.o $(DEFDIR)help.o \
	       $(DEFDIR)history.o $(DEFDIR)jobs.o $(DEFDIR)kill.o \
	       $(DEFDIR)let.o $(DEFDIR)read.o $(DEFDIR)return.o \
	       $(DEFDIR)set.o $(DEFDIR)setattr.o $(DEFDIR)shift.o \
	       $(DEFDIR)source.o $(DEFDIR)suspend.o $(DEFDIR)test.o \
	       $(DEFDIR)times.o $(DEFDIR)trap.o $(DEFDIR)type.o \
	       $(DEFDIR)ulimit.o $(DEFDIR)umask.o $(DEFDIR)wait.o \
	       $(BUILTIN_C_OBJ)

GETOPTS_OBJ	= $(DEFDIR)getopts.o

GETOPT_SOURCE   = $(DEFDIR)getopt.c $(DEFDIR)getopt.h
PSIZE_SOURCE	= $(DEFDIR)psize.sh $(DEFDIR)psize.c
BUILTIN_SUPPORT = $(DEFDIR)Makefile $(DEFDIR)ChangeLog $(PSIZE_SOURCE) \
		  $(BUILTIN_C_SRC)

# Documentation for the shell.
DOCDIR = $(srcdir)/documentation/
BASH_TEXINFO = $(DOCDIR)*.texi $(DOCDIR)*.tex \
	        $(DOCDIR)*.dvi $(DOCDIR)Makefile
BASH_MAN = $(DOCDIR)bash.1
BASHDOCS = $(BASH_TEXINFO) $(BASH_MAN) INSTALL README RELEASE
DOCUMENTATION = $(BASHDOCS) $(LIBRARY_DOC)

# Some example files demonstrating use of the shell.

EXAMPLES = examples/[a-zA-Z]*

ENDIAN_SUPPORT = endian.c

ENDIAN_HEADER =

ENDIAN_OUTPUT = endian.aux $(ENDIAN_HEADER)

SIGNAMES_SUPPORT = signames.c
SIGNAMES_OUTPUT  = signames.aux signames.h

SUPPORT_SRC = $(srcdir)/support/
SDIR = ./support/
MKTARFILE = $(SDIR)mktarfile
SCRIPTS_SUPPORT = $(SUPPORT_SRC)mksysdefs $(SUPPORT_SRC)cppmagic \
		  $(SUPPORT_SRC)cat-s $(MKTARFILE) $(SUPPORT_SRC)mail-shell \
		  $(SUPPORT_SRC)inform $(SUPPORT_SRC)/fixdist \
		  $(SUPPORT_SRC)mklinks $(SUPPORT_SRC)PORTING \
		  $(SUPPORT_SRC)/clone.bash
FAQ = $(SUPPORT_SRC)FAQ

TEST_SUITE = ./test-suite/
TEST_SUITE_SUPPORT = $(TEST_SUITE)[a-zA-Z0-9]* $(SUPPORT_SRC)recho.c

CREATED_SUPPORT = $(ENDIAN_OUTPUT) $(SIGNAMES_OUTPUT) sysdefs.h \
		  $(SDIR)getcppsyms recho tests/recho tests/printenv

SUPPORT = configure $(ENDIAN_SUPPORT) $(SIGNAMES_SUPPORT) $(SCRIPTS_SUPPORT) \
	  $(BUILTIN_SUPPORT) COPYING Makefile cpp-Makefile ChangeLog \
	  .distribution newversion.c $(EXAMPLES) $(SUPPORT_SRC)bash.xbm \
	  $(FAQ) $(SUPPORT_SRC)getcppsyms.c $(TEST_SUITE_SUPPORT)

# BAGGAGE consists of things that you want to keep with the shell for some
# reason, but do not actually use; old source code, etc.
BAGGAGE =

# Things that the world at large needs.
THINGS_TO_TAR = $(SOURCES) $(LIBRARY_TAR) $(BASHDOCS) $(SUPPORT) $(BAGGAGE)

# Keep GNU Make from exporting the entire environment for small machines.
.NOEXPORT:

.made: $(Program) bashbug
	cp .machine .made

$(Program):  .build $(OBJECTS) $(LIBDEP) $(srcdir)/.distribution
	$(RM) $@
	$(PURIFY) $(CC) $(LDFLAGS) $(LIBRARY_LDFLAGS) -o $(Program) $(OBJECTS) $(LIBRARIES)
	ls -l $(Program)
	size $(Program)

.build:	$(SOURCES) cpp-Makefile newversion.aux
	if ./newversion.aux -dir $(srcdir) -build; then mv -f newversion.h version.h; fi
	@echo
	@echo "	  ***************************************************"
	@echo "	  *						    *"
	@echo "	  * Making Bash-`cat $(srcdir)/.distribution`.`cat $(srcdir)/.patchlevel` for a $(Machine) running $(OS)"
	@echo "	  *						    *"
	@echo "	  ***************************************************"
	@echo
	@echo "$(Program) last made for a $(Machine) running $(OS)" >.machine

bashbug: $(SUPPORT_SRC)bashbug.sh cpp-Makefile newversion.aux
	@sed -e "s:@MACHINE@:$(Machine):" -e "s:@OS@:$(OS):" \
	     -e "s:@CFLAGS@:$(CCFLAGS):" -e "s:@CC@:$(CC):" \
	     -e "s:@RELEASE@:`cat $(srcdir)/.distribution`:" \
	     -e "s:@PATCHLEVEL@:`cat $(srcdir)/.patchlevel`:" \
	     $(SUPPORT_SRC)bashbug.sh > $@
	@chmod a+rx bashbug

version.h:	newversion.aux
	if ./newversion.aux -dir $(srcdir) -build; then mv -f newversion.h version.h; fi

y.tab.c: parser-built
y.tab.h: parser-built
parser-built:	parse.y parser.h command.h stdc.h input.h
	$(RM) $@
	-if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi
	@echo expect 66 shift/reduce conflicts
	$(BISON) -d $(srcdir)/parse.y
	-if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; fi
	touch $@

$(READLINE_LIBRARY): $(READLINE_SOURCE)
	@echo "Building in " $(RL_LIBDIR) "..."; sh $(SUPPORT_SRC)mkdirs $(RL_LIBDIR) ; ($(LIBINC_DECL); cd $(RL_LIBDIR); if [ ! -f Makefile ]; then cp  $(RL_ABSSRC)Makefile Makefile; fi; $(MAKE)  libreadline.a $(MFLAGS) CFLAGS='$(LIBRARY_CFLAGS) '$(LIBINC_USAGE) CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)'  srcdir=$(RL_ABSSRC))

$(GLOB_LIBRARY): $(GLOB_SOURCE)
	@echo "Building in " $(GLOB_LIBDIR) "..."; sh $(SUPPORT_SRC)mkdirs $(GLOB_LIBDIR) ; ($(LIBINC_DECL); cd $(GLOB_LIBDIR); if [ ! -f Makefile ]; then cp  $(GLOB_ABSSRC)Makefile Makefile; fi; $(MAKE)  libglob.a $(MFLAGS) CFLAGS='$(LIBRARY_CFLAGS) '$(LIBINC_USAGE) CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)'  srcdir=$(GLOB_ABSSRC))

$(TILDE_LIBRARY): $(TILDE_SOURCE)
	@echo "Building in " $(TILDE_LIBDIR) "..."; sh $(SUPPORT_SRC)mkdirs $(TILDE_LIBDIR) ; ($(LIBINC_DECL); cd $(TILDE_LIBDIR); if [ ! -f Makefile ]; then cp  $(TILDE_ABSSRC)Makefile Makefile; fi; $(MAKE)  libtilde.a $(MFLAGS) CFLAGS='$(LIBRARY_CFLAGS) '$(LIBINC_USAGE) CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)'  srcdir=$(TILDE_ABSSRC))

version.o: version.c version.h

shell.o: shell.c shell.h flags.h shell.c posixstat.h filecntl.h stdc.h $(ENDIAN_HEADER) parser.h
	$(RM) $@
	$(CC) $(CFG_FLAGS) $(CCFLAGS) $(CPPFLAGS) -c $(srcdir)/shell.c

signames.h:   signames.aux
	$(RM) $@
	./signames.aux $@

variables.o:  variables.c shell.h hash.h flags.h variables.h
		$(RM) $@
		$(CC) -c $(CCFLAGS) $(HOSTTYPE_DECL) $(CPPFLAGS) $(srcdir)/variables.c

builtins/libbuiltins.a: $(BUILTIN_OBJS) config.h memalloc.h
	@sh $(SUPPORT_SRC)mkdirs $(DEFDIR) ; ($(LIBINC_DECL); cd $(DEFDIR); if [ ! -f Makefile ]; then cp $(BUILTIN_ABSSRC)/Makefile Makefile; fi; $(MAKE) $(MFLAGS) libbuiltins.a srcdir=$(BUILTIN_ABSSRC) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CCFLAGS) '$(LIBINC_USAGE)' -I. -I$(BUILTIN_ABSSRC)' LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)' RL_LIBSRC='$(RL_ABSSRC)' DIRECTDEFINE='-D '$(srcdir)/$(DEFDIR))

builtins/common.o:	$(BUILTIN_SRCDIR)common.c
	@sh $(SUPPORT_SRC)mkdirs $(DEFDIR) ; ($(LIBINC_DECL); cd $(DEFDIR); if [ ! -f Makefile ]; then cp $(BUILTIN_ABSSRC)/Makefile Makefile; fi; $(MAKE) $(MFLAGS) common.o srcdir=$(BUILTIN_ABSSRC) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CCFLAGS) '$(LIBINC_USAGE)' -I. -I$(BUILTIN_ABSSRC)' LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)' RL_LIBSRC='$(RL_ABSSRC)' DIRECTDEFINE='-D '$(srcdir)/$(DEFDIR))
builtins/bashgetopt.o:	$(BUILTIN_SRCDIR)bashgetopt.c
	@sh $(SUPPORT_SRC)mkdirs $(DEFDIR) ; ($(LIBINC_DECL); cd $(DEFDIR); if [ ! -f Makefile ]; then cp $(BUILTIN_ABSSRC)/Makefile Makefile; fi; $(MAKE) $(MFLAGS) bashgetopt.o srcdir=$(BUILTIN_ABSSRC) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CCFLAGS) '$(LIBINC_USAGE)' -I. -I$(BUILTIN_ABSSRC)' LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)' RL_LIBSRC='$(RL_ABSSRC)' DIRECTDEFINE='-D '$(srcdir)/$(DEFDIR))

builtins/builtext.h: builtins/libbuiltins.a

copy_cmd.o: shell.h command.h stdc.h hash.h
copy_cmd.o: general.h variables.h config.h memalloc.h quit.h
copy_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
dispose_cmd.o: shell.h command.h stdc.h
dispose_cmd.o: general.h variables.h config.h memalloc.h quit.h
dispose_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
error.o: error.h
execute_cmd.o: shell.h command.h stdc.h y.tab.h posixstat.h flags.h jobs.h
execute_cmd.o: general.h variables.h config.h memalloc.h quit.h hash.h
execute_cmd.o: unwind_prot.h siglist.h builtins/builtext.h 
execute_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h bashtypes.h
expr.o: shell.h command.h stdc.h hash.h
expr.o: general.h variables.h config.h memalloc.h quit.h
expr.o: dispose_cmd.h make_cmd.h subst.h externs.h
flags.o: flags.h stdc.h config.h memalloc.h general.h quit.h
general.o: shell.h command.h stdc.h maxpath.h
general.o: general.h variables.h config.h memalloc.h quit.h machines.h
general.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
hash.o: shell.h command.h stdc.h hash.h
hash.o: general.h variables.h config.h memalloc.h quit.h
hash.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
jobs.o: shell.h command.h stdc.h hash.h trap.h jobs.h siglist.h
jobs.o: general.h variables.h config.h memalloc.h quit.h
jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h builtins/builtext.h
mailcheck.o: posixstat.h maxpath.h variables.h
mailcheck.o: hash.h quit.h
make_cmd.o: shell.h command.h stdc.h flags.h input.h bashtypes.h
make_cmd.o: general.h variables.h config.h memalloc.h quit.h
make_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
y.tab.o: shell.h command.h stdc.h flags.h maxpath.h alias.h
y.tab.o: general.h variables.h config.h memalloc.h quit.h
y.tab.o: dispose_cmd.h make_cmd.h subst.h externs.h bashtypes.h
print_cmd.o: shell.h command.h stdc.h y.tab.h
print_cmd.o: general.h variables.h config.h memalloc.h quit.h
print_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
shell.o: shell.h command.h stdc.h flags.h machines.h
shell.o: general.h variables.h config.h memalloc.h quit.h
shell.o: dispose_cmd.h make_cmd.h subst.h externs.h
shell.o: posixstat.h filecntl.h jobs.h input.h
subst.o: shell.h command.h stdc.h flags.h jobs.h siglist.h bashtypes.h
subst.o: general.h variables.h config.h memalloc.h quit.h
subst.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h
test.o: posixstat.h
trap.o: trap.h shell.h command.h stdc.h hash.h unwind_prot.h signames.h
trap.o: general.h variables.h config.h memalloc.h quit.h
trap.o: dispose_cmd.h make_cmd.h subst.h externs.h
unwind_prot.o: config.h memalloc.h general.h unwind_prot.h
variables.o: shell.h command.h stdc.h hash.h flags.h
variables.o: config.h memalloc.h general.h variables.h quit.h
variables.o: execute_cmd.h dispose_cmd.h make_cmd.h subst.h externs.h
version.o: version.h .build

alias.o: ansi_stdlib.h
bashline.o: ansi_stdlib.h
variables.o: ansi_stdlib.h
shell.o: ansi_stdlib.h
error.o: ansi_stdlib.h
hash.o: ansi_stdlib.h
signames.o: ansi_stdlib.h
expr.o: ansi_stdlib.h
general.o: ansi_stdlib.h
input.o: ansi_stdlib.h

braces.o: general.h shell.h variables.h quit.h config.h memalloc.h
braces.o: dispose_cmd.h make_cmd.h subst.h externs.h
braces.o: maxpath.h unwind_prot.h command.h stdc.h

bracecomp.o: bracecomp.c
bracecomp.o: shell.h command.h hash.h builtins.h general.h variables.h
bracecomp.o: quit.h alias.h
bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h

bracecomp.o: $(RL_LIBSRC)readline.h

bashline.o: shell.h command.h stdc.h hash.h builtins.h execute_cmd.h
bashline.o: general.h variables.h config.h memalloc.h quit.h alias.h
bashline.o: dispose_cmd.h make_cmd.h subst.h externs.h

bashline.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h
y.tab.o: $(RL_LIBSRC)keymaps.h $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h

subst.o: $(HIST_LIBSRC)history.h
bashline.o: $(HIST_LIBSRC)history.h
y.tab.o: $(HIST_LIBSRC)history.h

subst.o: $(GLOB_LIBSRC)fnmatch.h
execute_cmd.o: $(GLOB_LIBSRC)fnmatch.h

execute_cmd.o: $(TILDE_LIBSRC)tilde.h
general.o: $(TILDE_LIBSRC)tilde.h
mailcheck.o: $(TILDE_LIBSRC)tilde.h
shell.o: $(TILDE_LIBSRC)tilde.h
subst.o: $(TILDE_LIBSRC)tilde.h
variables.o: $(TILDE_LIBSRC)tilde.h

builtins/common.o: shell.h command.h config.h memalloc.h general.h error.h
builtins/common.o: variables.h input.h $(DEFDIR)hashcom.h siglist.h
builtins/common.o: quit.h unwind_prot.h maxpath.h jobs.h builtins.h
builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h
builtins/common.o: execute_cmd.h stdc.h
builtins/alias.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/alias.o: quit.h builtins/common.h
builtins/alias.o: shell.h command.h stdc.h unwind_prot.h variables.h 
builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h
builtins/bind.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/bind.o: shell.h unwind_prot.h variables.h quit.h
builtins/bind.o: $(DEFDIR)bashgetopt.h
builtins/break.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/break.o: shell.h unwind_prot.h variables.h quit.h
builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/builtin.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/builtin.o: quit.h $(DEFDIR)common.h
builtins/builtin.o: shell.h unwind_prot.h variables.h 
builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/cd.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
builtins/cd.o: shell.h unwind_prot.h variables.h $(DEFDIR)common.h
builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/command.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/command.o: quit.h $(DEFDIR)bashgetopt.h
builtins/command.o: shell.h unwind_prot.h variables.h 
builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/declare.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/declare.o: shell.h unwind_prot.h variables.h quit.h
builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/echo.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/echo.o: shell.h unwind_prot.h variables.h quit.h
builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/enable.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/enable.o: shell.h unwind_prot.h variables.h quit.h
builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/eval.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
builtins/eval.o: shell.h unwind_prot.h variables.h 
builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/exec.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
builtins/exec.o: shell.h unwind_prot.h variables.h $(DEFDIR)common.h stdc.h
builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h
builtins/exec.o: flags.h
builtins/exit.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/exit.o: shell.h unwind_prot.h variables.h quit.h
builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/fc.o: builtins.h command.h stdc.h 
builtins/fc.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
builtins/fc.o: flags.h unwind_prot.h variables.h shell.h 
builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/fc.o: $(DEFDIR)bashgetopt.h bashhist.h
builtins/fg_bg.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/fg_bg.o: shell.h unwind_prot.h variables.h quit.h
builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/getopts.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/getopts.o: shell.h unwind_prot.h variables.h quit.h 
builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/hash.o: builtins.h command.h execute_cmd.h stdc.h
builtins/hash.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/hash.o: shell.h unwind_prot.h variables.h $(DEFDIR)common.h quit.h 
builtins/help.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/help.o: shell.h unwind_prot.h variables.h quit.h
builtins/history.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/history.o: filecntl.h shell.h unwind_prot.h variables.h 
builtins/history.o: bashhist.h
builtins/inlib.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/inlib.o: shell.h unwind_prot.h variables.h quit.h 
builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/jobs.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/jobs.o: quit.h $(DEFDIR)bashgetopt.h
builtins/jobs.o: shell.h unwind_prot.h variables.h 
builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/kill.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/kill.o: shell.h trap.h unwind_prot.h variables.h 
builtins/let.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/let.o: shell.h unwind_prot.h variables.h 
builtins/read.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/read.o: shell.h unwind_prot.h variables.h 
builtins/return.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/return.o: shell.h unwind_prot.h variables.h 
builtins/set.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h
builtins/set.o: shell.h unwind_prot.h variables.h flags.h stdc.h
builtins/setattr.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/setattr.o: quit.h $(DEFDIR)common.h $(DEFDIR)bashgetopt.h
builtins/setattr.o: shell.h unwind_prot.h variables.h 
builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/shift.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/shift.o: shell.h unwind_prot.h variables.h 
builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/source.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/source.o: shell.h unwind_prot.h variables.h 
builtins/suspend.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/suspend.o: shell.h unwind_prot.h variables.h 
builtins/test.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/test.o: shell.h unwind_prot.h variables.h 
builtins/times.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/times.o: shell.h unwind_prot.h variables.h 
builtins/trap.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/trap.o: quit.h $(DEFDIR)common.h
builtins/trap.o: shell.h unwind_prot.h variables.h 
builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/type.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/type.o: quit.h $(DEFDIR)common.h
builtins/type.o: shell.h unwind_prot.h variables.h execute_cmd.h
builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/ulimit.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/ulimit.o: shell.h unwind_prot.h variables.h 
builtins/umask.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/umask.o: shell.h unwind_prot.h variables.h 
builtins/wait.o: command.h config.h memalloc.h error.h general.h maxpath.h
builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
builtins/wait.o: shell.h unwind_prot.h variables.h

builtins/bashgetopt.o: bashansi.h ansi_stdlib.h
builtins/mkbuiltins.o: bashansi.h ansi_stdlib.h
builtins/fc.o: bashansi.h ansi_stdlib.h

builtins/bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h

builtins/bind.o: $(HIST_LIBSRC)history.h
builtins/fc.o: $(HIST_LIBSRC)history.h
builtins/history.o: $(HIST_LIBSRC)history.h

builtins/common.o: $(TILDE_LIBSRC)tilde.h
builtins/cd.o: $(TILDE_LIBSRC)tilde.h 

builtins/alias.o: builtins/alias.def
builtins/bind.o: builtins/bind.def
builtins/break.o: builtins/break.def
builtins/builtin.o: builtins/builtin.def
builtins/cd.o: builtins/cd.def
builtins/colon.o: builtins/colon.def
builtins/command.o: builtins/command.def
builtins/declare.o: builtins/declare.def
builtins/echo.o: builtins/echo.def
builtins/enable.o: builtins/enable.def
builtins/eval.o: builtins/eval.def
builtins/exec.o: builtins/exec.def
builtins/exit.o: builtins/exit.def
builtins/fc.o: builtins/fc.def
builtins/fg_bg.o: builtins/fg_bg.def
builtins/getopts.o: builtins/getopts.def
builtins/hash.o: builtins/hash.def
builtins/help.o: builtins/help.def
builtins/histctl.o: builtins/histctl.def
builtins/history.o: builtins/history.def
builtins/inlib.o: builtins/inlib.def
builtins/jobs.o: builtins/jobs.def
builtins/kill.o: builtins/kill.def
builtins/let.o: builtins/let.def
builtins/read.o: builtins/read.def
builtins/reserved.o: builtins/reserved.def
builtins/return.o: builtins/return.def
builtins/set.o: builtins/set.def
builtins/setattr.o: builtins/setattr.def
builtins/shift.o: builtins/shift.def
builtins/source.o: builtins/source.def
builtins/suspend.o: builtins/suspend.def
builtins/test.o: builtins/test.def
builtins/times.o: builtins/times.def
builtins/trap.o: builtins/trap.def
builtins/type.o: builtins/type.def
builtins/ulimit.o: builtins/ulimit.def
builtins/umask.o: builtins/umask.def
builtins/wait.o: builtins/wait.def

$(Program).tar: $(THINGS_TO_TAR) .distribution
	@$(MKTARFILE) $(Program) `cat .distribution` $(THINGS_TO_TAR)

$(Program).tar$(COMPRESS_EXT):	$(Program).tar
		$(COMPRESS) < $(Program).tar > $@

clone:		$(THINGS_TO_TAR)
		@$(MKTARFILE) +notar $(Machine) $(OS) $(THINGS_TO_TAR)

installdirs:
		@${SHELL} $(SUPPORT_SRC)mkdirs $(bindir)
		@${SHELL} $(SUPPORT_SRC)mkdirs $(mandir) $(man3dir)
		@${SHELL} $(SUPPORT_SRC)mkdirs $(infodir)

install:	.made installdirs documentation
		-if [ -f $(bindir)/$(Program) ]; then \
		  rm -f $(bindir)/$(Program).old ;\
		  ln $(bindir)/$(Program) $(bindir)/$(Program).old; \
		fi
		$(INSTALL_PROGRAM) $(Program) $(bindir)/$(Program)
		-if [ -f $(bindir)/bashbug ]; \
		  then mv $(bindir)/bashbug $(bindir)/bashbug.old; \
		fi
		$(INSTALL_PROGRAM) bashbug $(bindir)/bashbug
		( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) mandir=$(mandir) \
			man3dir=$(man3dir) infodir=$(infodir) $@ )

uninstall:	.made
		$(RM) $(bindir)/$(Program) installed-$(Program) $(bindir)/bashbug
		( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) mandir=$(mandir) man3dir=$(man3dir) infodir=$(infodir) $@ )

.distribution:
		./newversion.aux -dir $(srcdir) -dist `$(Program) -c 'echo $$BASH_VERSION'`

distribution:	$(Program) $(Program).tar$(COMPRESS_EXT) .distribution
		@echo cp $(Program).tar$(COMPRESS_EXT) \
			$(Program)-`cat .distribution`.tar$(COMPRESS_EXT)
		@cp $(Program).tar$(COMPRESS_EXT) \
			$(Program)-`cat .distribution`.tar$(COMPRESS_EXT)

mailable:	distribution
		/bin/rm -rf uuencoded
		mkdir uuencoded
		$(SHELL) -c 'f=$(Program)-`cat .distribution`.tar.Z;uuencode $$f $$f | split -800 - uuencoded/$$f.uu.'

newversion.aux:	newversion.c
		$(CC) $(CCFLAGS) -o $@ $(srcdir)/newversion.c

newversion:	newversion.aux
		$(RM) .build
		./newversion.aux -dir $(srcdir) -dist
		mv -f newversion.h version.h
		$(MAKE) -f $(srcdir)/Makefile $(MFLAGS) srcdir=$(srcdir)

documentation:  force
		(cd $(DOCDIR); $(MAKE) $(MFLAGS))

force:

tags:		$(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
		etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)

TAGS:		$(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
		ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@

basic-clean:
		$(RM) $(OBJECTS) $(Program) bashbug ansi-Makefile *.aux
		$(RM) .build .made .machine version.h
		$(RM) $(CREATED_SUPPORT)
		$(RM) tags TAGS

mostlyclean:
		$(RM) $(OBJECTS) $(Program) bashbug
		$(RM) .build .made .machine version.h
		$(RM) tags TAGS
		(cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ )
		(cd builtins && $(MAKE) $(MFLAGS) $@ )
		$(CLEAN_READLINE) ;
		$(CLEAN_HISTORY) ;
		$(CLEAN_TERMCAP) ;
		$(CLEAN_GLOB) ;
		$(CLEAN_TILDE) ;
		$(CLEAN_MALLOC) ;

distclean clean:	basic-clean
		(cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ )
		(cd builtins && $(MAKE) $(MFLAGS) $@ )
		$(CLEAN_READLINE) ;
		$(CLEAN_HISTORY) ;
		$(CLEAN_TERMCAP) ;
		$(CLEAN_GLOB) ;
		$(CLEAN_TILDE) ;
		$(CLEAN_MALLOC) ;
		$(RM) bash-Makefile

realclean maintainer-clean:	basic-clean
		$(RM) y.tab.c y.tab.h parser-built
		(cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ )
		(cd builtins && $(MAKE) $(MFLAGS) $@ )
		$(CLEAN_READLINE) ;
		$(CLEAN_HISTORY) ;
		$(CLEAN_TERMCAP) ;
		$(CLEAN_GLOB) ;
		$(CLEAN_TILDE) ;
		$(CLEAN_MALLOC) ;
		$(RM) bash-Makefile

recho:		$(SUPPORT_SRC)recho.c
	@$(CC) -o $@ $(SUPPORT_SRC)recho.c

tests check:		force $(Program) recho
	@cp recho $(SUPPORT_SRC)printenv tests
	( cd tests ; sh run-all )

# Here is a convenient rule when you arrive at a new site and wish to
# install bash on several different architectures.  It creates a new
# directory to hold the results of compilation.  The directory is
# named Machine-OS.
architecture: $(Machine)-$(OS)/$(Program)

$(Machine)-$(OS):
	-mkdir $(Machine)-$(OS)

$(Machine)-$(OS)/$(Program): $(Machine)-$(OS) $(Program)
	mv $(Program) $(Machine)-$(OS)
	mv sysdefs.h $(Machine)-$(OS)
	mv $(SDIR)getcppsyms $(Machine)-$(OS)
	$(MAKE) $(MFLAGS) clean

DEFINES: config.h memalloc.h cpp-Makefile sysdefs.h
	echo $(CCFLAGS) $(CPPFLAGS) >DEFINES
