# Un*x Makefile for GNU tar program.
# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#### Start of system configuration section. ####

srcdir = @srcdir@
VPATH = @srcdir@

# If you use gcc, you should either run the fixincludes script that
# comes with it or else use gcc with the -traditional option.  Otherwise
# ioctl calls will be compiled incorrectly on some systems.
CC = @CC@
YACC = @YACC@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

# Things you might add to DEFS:
# -DSTDC_HEADERS	If you have ANSI C headers and libraries.
# -DHAVE_UNISTD_H	If you have unistd.h.
# -DHAVE_STRING_H	If you don't have ANSI C headers but have string.h.
# -DHAVE_LIMITS_H	If you have limits.h.
# -DBSD42		If you have sys/dir.h (unless you use -DPOSIX),
#			sys/file.h, and st_blocks in `struct stat'.
# -DDIRENT		If you have dirent.h.
# -DSYSNDIR		Old Xenix systems (sys/ndir.h).
# -DSYSDIR		Old BSD systems (sys/dir.h).
# -DNDIR		Old System V systems (ndir.h).
# -DMAJOR_IN_MKDEV	If major, minor, makedev defined in sys/mkdev.h.
# -DMAJOR_IN_SYSMACROS	If major, minor, makedev defined in sys/sysmacros.h.
# -DRETSIGTYPE=int	If your signal handlers return int, not void.
# -DHAVE_SYS_MTIO_H	If you have sys/mtio.h (magtape ioctls).
# -DHAVE_SYS_GENTAPE_H	If you have sys/gentape.h (ISC magtape ioctls).
# -DHAVE_NETDB_H	To use rexec for remote tape operations
#			instead of forking rsh or remsh.
# -DNO_REMOTE		If you have neither a remote shell nor rexec.
# -DHAVE_VPRINTF	If you have vprintf function.
# -DHAVE_DOPRNT		If you have _doprnt function (but lack vprintf).
# -DHAVE_FTIME		If you have ftime system call.
# -DHAVE_STRSTR		If you have strstr function.
# -DHAVE_VALLOC		If you have valloc function.
# -DHAVE_MKDIR		If you have mkdir and rmdir system calls.
# -DHAVE_MKNOD		If you have mknod system call.
# -DHAVE_RENAME 	If you have rename system call.
# -DHAVE_GETCWD		If not POSIX.1 but have getcwd function.
# -DHAVE_FTRUNCATE	If you have ftruncate system call.
# -DV7			On Version 7 Unix (not tested in a long time).
# -DEMUL_OPEN3		If you lack a 3-argument version of open, and want
#			to emulate it with system calls you do have.
# -DNO_OPEN3		If you lack the 3-argument open and want to
#			disable the tar -k option instead of emulating open.
# -DXENIX		If you have sys/inode.h and need it to be included.

DEF_AR_FILE = @DEF_AR_FILE@
DEFBLOCKING = 20
DEFS = @DEFS@ -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" -DDEFBLOCKING=$(DEFBLOCKING)

# Set this to rtapelib.o unless you defined NO_REMOTE, in which case
# make it empty.
RTAPELIB = @RTAPELIB@
LIBS = @LIBS@

CFLAGS = -g
LDFLAGS = -g

prefix = /usr/local
exec_prefix = $(prefix)

# Prefix for each installed program, normally empty or `g'.
binprefix = 

# The directory to install tar in.
bindir = $(exec_prefix)/bin

# Where to put the rmt executable.
libdir = /etc

# The directory to install the info files in.
infodir = $(prefix)/info

#### End of system configuration section. ####

SHELL = /bin/sh

SRC1 =	tar.c create.c extract.c buffer.c getoldopt.c update.c gnu.c mangle.c
SRC2 =  version.c list.c names.c diffarch.c port.c fnmatch.c getopt.c malloc.c
SRC3 =  getopt1.c regex.c getdate.y getdate.c alloca.c
SRCS =	$(SRC1) $(SRC2) $(SRC3)
OBJ1 =	tar.o create.o extract.o buffer.o getoldopt.o update.o gnu.o mangle.o
OBJ2 =	version.o list.o names.o diffarch.o port.o fnmatch.o getopt.o @MALLOC@
OBJ3 =  getopt1.o regex.o getdate.o $(RTAPELIB) @ALLOCA@
OBJS =	$(OBJ1) $(OBJ2) $(OBJ3)
AUX =   README INSTALL NEWS COPYING ChangeLog Makefile.in makefile.pc \
	configure configure.in \
	tar.h fnmatch.h pathmax.h port.h open3.h getopt.h regex.h \
	rmt.h rmt.c rtapelib.c \
	msd_dir.h msd_dir.c tcexparg.c \
	level-0 level-1 backup-specs dump-remind testpad.c getpagesize.h
#	tar.texinfo tar.info* texinfo.tex \

all:	@PROGS@ 
# tar.info

.c.o:
	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(DEFS) -I$(srcdir) -I. $<

tar:	$(OBJS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)

rmt:	rmt.c
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(srcdir)/rmt.c $(LIBS)

tar.info: tar.texinfo
	makeinfo $(srcdir)/tar.texinfo

install: all
	$(INSTALL_PROGRAM) tar $(bindir)/$(binprefix)tar
	-test ! -f rmt || $(INSTALL_PROGRAM) rmt $(libdir)/rmt
#	for file in $(srcdir)/tar.info*; \
#	do $(INSTALL_DATA) $$file $(infodir)/$$file; \
#	done

uninstall:
	rm -f $(bindir)/$(binprefix)tar	$(infodir)/tar.info*
	-rm -f $(libdir)/rmt

$(OBJS): tar.h pathmax.h port.h testpad.h
regex.o buffer.o tar.o: regex.h
tar.o fnmatch.o: fnmatch.h

getdate.c: getdate.y
	$(YACC) $(srcdir)/getdate.y
	mv y.tab.c getdate.c
# getdate.y has 8 shift/reduce conflicts.

testpad.h: testpad
	./testpad

testpad: testpad.o
	$(CC) -o $@ testpad.o

TAGS:	$(SRCS)
	etags $(SRCS)

clean:
	rm -f *.o tar rmt testpad testpad.h core

mostlyclean: clean

distclean: clean
	rm -f Makefile config.status

realclean: distclean
	rm -f TAGS *.info* getdate.c y.tab.c

shar: $(SRCS) $(AUX)
	shar $(SRCS) $(AUX) | gzip > tar-`sed -e '/version_string/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c`.shar.z

dist: $(SRCS) $(AUX)
	echo tar-`sed -e '/version_string/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c` > .fname
	-rm -rf `cat .fname`
	mkdir `cat .fname`
	for file in $(SRCS) $(AUX); do \
          ln $$file `cat .fname` || cp $$file `cat .fname`; done
	tar chzf `cat .fname`.tar.z `cat .fname`
	-rm -rf `cat .fname` .fname

tar.zoo: $(SRCS) $(AUX)
	-rm -rf tmp.dir
	-mkdir tmp.dir
	-rm tar.zoo
	for X in $(SRCS) $(AUX) ; do echo $$X ; sed 's/$$/
/' $$X > tmp.dir/$$X ; done
	cd tmp.dir ; zoo aM ../tar.zoo *
	-rm -rf tmp.dir

# Prevent GNU make v3 from overflowing arg limit on SysV.
.NOEXPORT:
