DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: M T

⟦1faa9284d⟧ TextFile

    Length: 11039 (0x2b1f)
    Types: TextFile
    Names: »Makefile«

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦ca1f037a2⟧ »./bash-1.04.tar.Z« 
        └─⟦46465a4db⟧ 
            └─⟦this⟧ »bash-1.04/Makefile« 

TextFile

## -*- text -*- ####################################################
#								   #
# Makefile for bash, the Bourne Again SHell. 			   #
#								   #
# Do:								   #
#	make		To make `bash' in current directory	   #
#	make install	To make bash and install it in DESTDIR	   #
#	make newversion To update the version of the shell	   #
#	make distribution  If you are a wizard			   #
#	make bash.tar.Z If you are a normal person		   #
#	make clone	To make a clone of the bash distribution.  #
#								   #
# The file `config.h' contains some defines for controlling	   #
#  various features.						   #
#								   #
#								   #
####################################################################

# Here is a rule for making .o files from .c files that doesn't force
# the type of the machine (like -sun3) into the flags.
.c.o:
	$(CC) -c $(CFLAGS) $(CPPFLAGS) $*.c

# Of course, you cannot do this the first time through...
#SHELL=/usr/gnu/bin/bash
SHELL=/bin/sh

# FLAGS THAT REFER TO THE DESTINATION SYSTEM
####################################################################
#
#  The variables in this box can (and should) be changed to match the
#  system that you are compiling the shell on.
#
# The mailing address of you, the local maintainer.  This *must* be
# enclosed in double quotes.  Until I make a better Makefile.
MAINTAINER = '"bfox@ai.mit.edu"'

# Destination installation directory.  The shell is copied here if
# you do a `make install'.  The directory name does NOT end in a slash.
DESTDIR = /usr/gnu/bin

# The name of the target hardware.  It makes a difference.  If your
# machine doesn't seem to be represented by one of the machines here,
# try one and see how well you do.
# Use i386 for PC type 386 boxes. (Compaq, etc.)
# SUN3, SUN4, SUN386i, VAX, SONY, CONVEX, HP, HP9KS300, i386, NeXT, AIX,
# ATT3B, ATT386
TARGET = SUN3

# The name of the target operating system.  There isn't such a big
# difference between SUNOS3 and Bsd.  But there might be in the future.
# SUNOS3, SUNOS4, SYSV, Bsd, HPUX, UNIXPC
OS = SUNOS4

# You only need this if you are hacking the shell in a location
# that doesn't do enough backups, or does a poor job.  In that
# case, BACKUP_DIR should be the name of a directory on another
# device (i.e. different than the one you are building the shell
# on), and you should do `make backup' at least once a day.
#BACKUP_DIR = /home/gogol/bash

#
####################################################################

# FLAGS THAT REFER TO THE COMPILATION PROCESS
####################################################################
#
# PROFILE_FLAGS is either -pg, to generate profiling info for use
# with gprof, or nothing (the default).
PROFILE_FLAGS=

# HP-UX compilation requires the BSD library.
#LOCAL_LIBS = -lBSD

# Xenix requires -ldir -lx.  It is also required in the readline Makefile.
#LOCAL_LIBS = -ldir -lx

GCC_SUNOS4_FLAG = -Bstatic
DEBUG_FLAGS = $(PROFILE_FLAGS) -g $(GCC_SUNOS4_FLAG)
LDFLAGS	= $(DEBUG_FLAGS)
CFLAGS	= $(DEBUG_FLAGS) -D${TARGET} -DTARGET=${TARGET} -D${OS}
CPPFLAGS= -I$(LIBSRC)

# If you don't have Bison use "yacc".  Otherwise use "bison -y".
#BISON = yacc
BISON = bison -y

# If you don't have Gcc use cc.
CC = gcc -traditional

####################################################################

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

# The name of this program.
PROGRAM = bash

# The default primary and secondary prompts.
PPROMPT = '"${PROGRAM}\\$$ "'
SPROMPT = '"${PROGRAM}>"'

# The group of configuration flags.  These are for shell.c
CFG_FLAGS = -DMAINTAINER=$(MAINTAINER) -DPPROMPT=$(PPROMPT)\
	    -DSPROMPT=$(SPROMPT) -DOS_NAME=$(OS_NAME)\
	    -DSYSTEM_NAME=$(SYSTEM_NAME)

# The directory which contains the source for malloc.  The name must
# end in a slash, as in `./alloc-files/'
ALLOC_SOURCE = ./alloc-files/

# Our malloc.
MALLOC = $(ALLOC_SOURCE)malloc.o
MALLOC_FLAGS = -Drcheck -Dbotch=programming_error
#MALLOC= $(ALLOC_SOURCE)malloc.o
#ALLOCA= $(ALLOC_SOURCE)alloca.o

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

# Anticipated library for alloca if you do not use an alloc from this package.
# E.g. "-lPW" for AT&T 3B's.  The AT&T 6386 systems can use i386-alloca.o.
# If you are using gcc, then leave ALLOCA_LIB undefined, as __builtin_alloca
# will do the trick.
#ALLOCA_LIB = -lPW
ALLOCA_LIB =

# If your system doesn't have a sys_siglist, then define SIGLIST
# as siglist.o
#SIGLIST = siglist.o

RM = rm -f
AR = ar
RANLIB = ranlib

# Support libraries required.  Termcap and Readline.
# We would like to use GNU's termcap library.  Where is it?
# If you don't have -ltermcap, you might try -lcurses.
#TERMCAP = -ltermcap
TERMCAP=/usr/lib/libtermcap.a
READLINE= ./readline/libreadline.a

# The source code for the support libraries.
LIBSRC = ./
HISTORY_SOURCE	= $(LIBSRC)readline/history.c $(LIBSRC)readline/history.h
RLIBSRC = $(LIBSRC)readline/
READLINE_SOURCE	= $(RLIBSRC)readline.c $(RLIBSRC)readline.h\
		  $(RLIBSRC)chardefs.h $(RLIBSRC)keymaps.h\
		  $(RLIBSRC)funmap.c $(RLIBSRC)emacs_keymap.c\
		  $(RLIBSRC)vi_keymap.c $(RLIBSRC)keymaps.c\
		  $(RLIBSRC)vi_mode.c $(HISTORY_SOURCE)
TERMCAP_SOURCE	=

READLINE_DOC	= $(RLIBSRC)readline.texinfo\
		  $(RLIBSRC)inc-readline.texinfo
HISTORY_DOC	= $(RLIBSRC)history.texinfo\
		  $(RLIBSRC)inc-history.texinfo
TERMCAP_DOC	=

LIBRARY_SOURCE	= $(READLINE_SOURCE) $(TERMCAP_SOURCE)
LIBRARY_DOC	= $(READLINE_DOC) $(HISTORY_DOC) $(TERMCAP_DOC)
LIBRARY_SUPPORT	= $(RLIBSRC)Makefile $(RLIBSRC)ChangeLog
LIBRARY_TAR	= $(LIBRARY_SOURCE) $(LIBRARY_DOC) $(LIBRARY_SUPPORT)

# The order is important.  Most dependent first.
LIBRARIES = $(READLINE) $(TERMCAP)

CSOURCES = shell.c parse.y general.c make_cmd.c print_cmd.c\
	   dispose_cmd.c execute_cmd.c variables.c builtins.c\
	   copy_cmd.c flags.c subst.c glob.c hash.c mailcheck.c\
	   test.c trap.c jobs.c nojobs.c $(ALLOC_FILES) braces.c\
	   unwind_prot.c siglist.c bashline.c ulimit.c version.c

HSOURCES = shell.h flags.h trap.h hash.h jobs.h builtins.h alias.c \
	   alias.h general.h variables.h config.h $(ALLOC_HEADERS) \
	   version.h quit.h

SOURCES  = $(CSOURCES) $(HSOURCES)

OBJECTS  = shell.o y.tab.o general.o make_cmd.o print_cmd.o\
	   dispose_cmd.o execute_cmd.o variables.o builtins.o copy_cmd.o\
	   flags.o jobs.o subst.o glob.o hash.o mailcheck.o test.o\
	   trap.o alias.o $(MALLOC) $(ALLOCA) braces.o unwind_prot.o\
	   $(SIGLIST) bashline.o ulimit.o version.o

# Documentation for the shell.
DOCDIR = ./documentation/
BASHDOCS = $(DOCDIR)*.texinfo $(DOCDIR)texinfo.tex
DOCUMENTATION = README FEATURES $(BASHDOCS) $(LIBRARY_DOCS)

# Some example files
EXAMPLES = examples/*

SUPPORT = COPYING Makefile newversion.c make-tarfile mail-shell inform \
	  $(DOCUMENTATION) ChangeLog .distribution $(EXAMPLES)

MAIL = shell-mail

# BAGGAGE consists of things that you want to keep with the shell for some
# reason, but don't actually use; old source code, etc.
BAGGAGE = longest_signal_desc.c

THINGS_TO_TAR = $(SOURCES) $(LIBRARY_TAR) $(SUPPORT) $(BAGGAGE)

$(PROGRAM):	.build $(OBJECTS) $(LIBRARIES) Makefile
	$(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJECTS) \
		$(LIBRARIES) $(LOCAL_LIBS) $(ALLOCA_LIB) -ltermcap
	$(RM) -f .make

.build:		.make newversion.aux
	if ./newversion.aux -build; then mv -f newversion.h version.h; fi

.make:
	touch .make

version.h:	newversion.aux
	if ./newversion.aux -build; then mv -f newversion.h version.h; fi

shell.h:	general.h variables.h config.h
		touch shell.h

y.tab.c:	parse.y shell.h
		-if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi
		$(BISON) -d parse.y
		-if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; fi

$(READLINE):	$(READLINE_SOURCE)
		(cd $(RLIBSRC); $(MAKE) $(MFLAGS) CC='$(CC)'\
			CFLAGS='$(CFLAGS) -DSHELL')

$(TERMCAP):	$(TERMCAP_SOURCE)
		(cd $(LIBSRC); $(MAKE) $(MFLAGS) CC='$(CC)'\
			CFLAGS='$(CFLAGS) -I.')

shell.o:	shell.h flags.h shell.c
		$(CC) $(CFG_FLAGS) $(CFLAGS) $(CPPFLAGS) -c shell.c

braces.o:	braces.c
		$(CC) $(CFLAGS) -DSHELL -c braces.c

keymaps.c:	emacs_keymap.c vi_keymap.c
		touch keymaps.c

$(MALLOC):	$(ALLOC_FILES)
		$(CC) -I$(ALLOC_SOURCE) $(CFLAGS) $(MALLOC_FLAGS) -c $*.c &&\
		mv `basename $*`.o $(MALLOC)

#$(ALLOCA):	$(ALLOC_FILES)
#		$(CC) -I$(ALLOC_SOURCE) $(CFLAGS) -o $(ALLOCA) -c $*.c
#		mv `basename $*`.o $(ALLOCA)

bashline.o:	bashline.c config.h $(RLIBSRC)readline.h variables.h builtins.h
jobs.o:		jobs.c nojobs.c jobs.h config.h
version.o:	version.h version.c .build
general.o:	general.c shell.h
y.tab.h:	y.tab.c
alias.o:	alias.h alias.c
subst.o:	subst.c shell.h
make_cmd.o:	shell.h config.h make_cmd.c
print_cmd.o:	shell.h y.tab.h print_cmd.c
execute_cmd.o:	shell.h y.tab.h builtins.h flags.h config.h execute_cmd.c
dispose_cmd.o:	shell.h dispose_cmd.c
copy_cmd.o:	shell.h copy_cmd.c
builtins.o:	shell.h flags.h trap.h builtins.h jobs.h config.h builtins.c
flags.o:	flags.h flags.c config.h
hash.o:		hash.h hash.c
trap.o:		shell.h trap.h config.h trap.c
variables.o:	variables.h flags.h

$(PROGRAM).tar: $(THINGS_TO_TAR) .distribution
	make-tarfile $(PROGRAM) `cat .distribution` $(THINGS_TO_TAR)

$(PROGRAM).tar.Z:	$(PROGRAM).tar
		compress -f $(PROGRAM).tar

clone:
	mkdir clone; \
	(cd clone; for i in $(THINGS_TO_TAR); \
	  do file=`basename $$i`; \
	   dir=`echo $$i | sed "s/$$file\$$//" | sed 's@\(.*\)/\$$@\1@'`; \
	   if [ "$$dir" = "" ]; then dir="."; fi; \
	   if [ "$$dir" != "." ]; then \
	      if [ ! -d "$$dir" ]; then mkdir "$$dir"; fi; \
	      if [ "$$file" = Makefile ]; \
		then cp ../$$i $$i; \
	       else ln -s ../../$$i $$i; \
	      fi; \
	   else if [ "$$file" = Makefile ]; then cp ../$$i $$i; \
		 else ln -s ../$$i $$i; fi; \
	   fi; \
	  done)

# Make `backup' be a link to a directory on another device.
backup:		$(PROGRAM).tar.Z
		if [ ! -h backup ]; then ln -s $(BACKUP_DIR) backup; fi
		cp $(PROGRAM).tar.Z backup/$(PROGRAM).tar.Z

install:	$(PROGRAM)
		-mv $(DESTDIR)/$(PROGRAM) $(DESTDIR)/$(PROGRAM).old
		cp $(PROGRAM) $(DESTDIR)/$(PROGRAM)
		rm -f installed-$(PROGRAM)
		ln -s $(DESTDIR)/$(PROGRAM) installed-$(PROGRAM)

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

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

distribution:	$(PROGRAM).tar.Z .distribution
		cp $(PROGRAM).tar.Z $(PROGRAM)-`cat .distribution`.tar.Z

newversion.aux:	newversion.c
		$(CC) -g -o newversion.aux newversion.c -lm

newversion:	newversion.aux
		rm -f .build
		./newversion.aux -dist
		mv -f newversion.h version.h
		make $(PROGRAM)

documentation:
		(cd $(DOCDIR); makeinfo *.texinfo)

tags:		$(SOURCES) $(LIBRARY_SOURCE)
		etags $(SOURCES) $(LIBRARY_SOURCE)
clean:
		$(RM) $(OBJECTS) $(PROGRAM) y.tab.c y.tab.h newversion.aux
		(cd $(RLIBSRC); $(RM) *.o *.a)
dist-clean:
		$(RM) $(OBJECTS) $(PROGRAM) y.tab.c newversion.aux
		$(RM) -rf uuencoded