
#
# $Id: Makefile,v 1.15 1994/07/20 12:38:27 craigs Exp $
# $Log: Makefile,v $
# Revision 1.15  1994/07/20  12:38:27  craigs
# Latest makefile
#
# Revision 1.14  1994/07/02  05:36:00  craigs
# Changed make dist target and changed version to 0.32
#
# Revision 1.13  1994/06/30  14:54:51  craigs
# Changed cersion to 0.31
#
# Revision 1.12  1994/06/30  14:39:24  craigs
# *** empty log message ***
#
# Revision 1.11  1994/01/11  02:23:46  craigs
# Removed -g option
#
# Revision 1.10  1994/01/11  02:21:35  craigs
# Changed to version 0.3
#
# Revision 1.9  1994/01/06  03:40:41  craigs
# removed strip from dist target
#
# Revision 1.8  1994/01/06  03:40:03  craigs
# Removed dependencies from dist target
#
# Revision 1.7  1994/01/06  03:38:44  craigs
# Added COPYING
#
# Revision 1.6  1994/01/06  03:37:40  craigs
# Fixed dist target
#
# Revision 1.5  1994/01/06  03:17:58  craigs
# Final makefile
#
# Revision 1.4  1993/12/30  07:59:34  craigs
# Many changes - too numerous to mention!
#
# Revision 1.3  1993/12/16  20:12:01  craigs
# Lots of changes
#
# Revision 1.2  1993/11/25  22:00:40  craigs
# Added extra debug macros and updated dependencies
#
# Revision 1.1  1993/11/22  22:28:01  craigs
# Initial revision
#
# 

#
# start of user configurable items
#

#
# string used as basename for creating distribution files
DISTPREFIX	= hfs0_36
LASTDISTPREFIX	= hfs0_35

#
# set to 1 if processor is little endian (i.e. i386)
# set to 0 if processor is big endian (i.e. Sparc, 680x0, MIPS)
#
LITTLEENDIAN	= 1

#
# include following defines for debugging options
#
DEBUG_COMMANDS		= 
#			  -DDUMP_INDEX_NODES \
#			  -DCAT_DEBUG \
#			  -DDUMP_LEAF_NODES 
#			  -DEXTENDED_ERRORS \

#
# directory to install in
#
#INSTALLPATH		= /usr/local
INSTALLPATH		= $(HOME)
BININSTALLDIR		= $(INSTALLPATH)/bin
MANINSTALLDIR		= $(INSTALLPATH)/man/man.1

#
# end of user configurable items
#

PROG		= hfs
MAN		= hfs.1
DOC		= hfs.doc
ALIASES		= hls hcd hdir hpwd hcat hread
CXXSOURCES	= btree.cxx catalog.cxx fs.cxx main.cxx volume.cxx misc.cxx \
		  status.cxx file.cxx args.cxx extent.cxx ls.cxx \
		  mac.cxx copy.cxx mdirent.cxx 
ifdef PARANOID
CXXSOURCES	:= $(CXXSOURCES) paranoid.cxx
endif

CSOURCES	= glob.c
SOURCES		= $(CXXSOURCES) $(CSOURCES)
HEADERS		= mac.h btree.h catalog.h fs.h volume.h mdir.h \
		  misc.h paranoid.h status.h file.h args.h endian.h \
		  error.h config.h extent.h ls.h cmd.h glob.h mdirent.h copy.h

EXTRAS		= Makefile README $(MAN) $(DOC) COPYING

DISTFILES	= $(SOURCES) $(HEADERS) $(EXTRAS)

#INCLUDEDIRS	= -Idir
#LIBDIRS	= -Ldir
#LIBS		= -ldir

DEFINES		= -DLITTLEENDIAN=$(LITTLEENDIAN) \
		  $(DEBUG_COMMANDS)

ifdef PARANOID
DEFINES		:= $(DEFINES) -DPARANOID=$(PARANOID) 
endif

DEBUG		= -g
#DEBUG		= -O6

#
# end of configurable items
#

OBJECTS		= $(CSOURCES:.c=.o) $(CXXSOURCES:.cxx=.o)

CCPLUSPLUS	= g++ -c
LD		= g++
LIBRARIAN	= ar rcs
INSTALL		= install
CP		= cp
LN		= ln -s

CFLAGS		= $(DEBUG) $(INCLUDEDIRS) $(DEFINES) -Wall
LDFLAGS		= $(LIBDIRS)

.SUFFIXES:	.cxx

.cxx.o:
	$(CCPLUSPLUS) $(CFLAGS) $< -o $@

all:	$(PROG) $(HEADERS)

install:	$(LIBFN) $(HEADERS)
	$(CP) $(PROG) $(BININSTALLDIR) ; \
	for f in $(MAN) ; do \
	  $(CP) $$f $(MANINSTALLDIR)/$(MAN) ; \
	done

aliases:
	for f in $(ALIASES) ; do \
          $(RM) -f $(BININSTALLDIR)/$$f ; \
  	  $(LN) -sf $(BININSTALLDIR)/$(PROG) $(BININSTALLDIR)/$$f ; \
        done

copies:
	for f in $(ALIASES) ; do \
          $(RM) -f $(BININSTALLDIR)/$$f ; \
  	  $(CP) $(BININSTALLDIR)/$(PROG) $(BININSTALLDIR)/$$f ; \
        done

diffs:
	rcsdiff -u -r$(LASTDISTPREFIX) *.cxx *.h *.c > diffs_$(LASTDISTPREFIX)_$(DISTPREFIX)

$(PROG):	$(OBJECTS)
	$(LD) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS)

$(DOC):		$(MAN)
	nroff -man $(MAN) | col -b > $(DOC)

clean:
	rm -f $(PROG) $(OBJECTS)


disk.image:
	cp /dev/fd0H1440 disk.image

depend:	
	md -u -- $(CFLAGS) -- $(SOURCES)

backup: $(DISTFILES) $(PROG) 
	tar -cvf - $(DISTFILES) $(PROG) | gzip > ../hfs.tgz

dist: 	$(DISTFILES)
	( cd ..; rm -rf $(DISTPREFIX); mkdir $(DISTPREFIX) )
	cp $(DISTFILES) ../$(DISTPREFIX)
	( cd ..; tar -czvf $(DISTPREFIX).tgz $(DISTPREFIX) )
	( cd ..; zip -r $(DISTPREFIX).zip $(DISTPREFIX) )
	( cd ..; uuencode $(DISTPREFIX).tgz $(DISTPREFIX).tgz > $(DISTPREFIX).uu )
	( cd ..; rm -rf $(DISTPREFIX); )

zbackup: $(SOURCES) $(HEADERS) $(MAN) $(MAKEFILE)
	zip ../hfs.zip $(SOURCES) $(HEADERS) $(MAN) $(EXTRAS)

doscopy: $(SOURCES) $(HEADERS)
	for f in $(SOURCES) $(HEADERS) ; do \
          diff $$f /bambi/d/hfs/$$f > /dev/null; \
          if [ $$? -ne 0 ] ; then \
            echo $$f changed ; \
            cp $$f /bambi/d/hfs/$$f ; \
          fi ; \
        done


# Do not delete this line - make depend depends upon it

./btree.o : btree.cxx btree.h misc.h endian.h mac.h file.h fs.h volume.h error.h \
  catalog.h extent.h 
./catalog.o : catalog.cxx catalog.h btree.h /usr/g++-include/ostream.h misc.h \
  endian.h mac.h file.h fs.h volume.h error.h extent.h 
./fs.o : fs.cxx catalog.h btree.h /usr/g++-include/ostream.h misc.h endian.h mac.h \
  file.h extent.h error.h fs.h volume.h 
./main.o : main.cxx args.h btree.h misc.h endian.h mac.h file.h error.h catalog.h \
  fs.h volume.h extent.h config.h paranoid.h status.h cmd.h ls.h copy.h 
./volume.o : volume.cxx volume.h mac.h endian.h error.h misc.h 
./misc.o : misc.cxx misc.h endian.h 
./paranoid.o : paranoid.cxx endian.h 
./status.o : status.cxx misc.h endian.h status.h mac.h config.h 
./file.o : file.cxx misc.h endian.h fs.h volume.h mac.h error.h catalog.h btree.h \
  /usr/g++-include/ostream.h file.h extent.h 
./args.o : args.cxx args.h 
./extent.o : extent.cxx catalog.h btree.h /usr/g++-include/ostream.h misc.h endian.h \
  mac.h file.h fs.h volume.h error.h extent.h 
./ls.o : ls.cxx cmd.h endian.h misc.h args.h status.h mac.h fs.h volume.h error.h \
  catalog.h btree.h file.h extent.h 
./mac.o : mac.cxx mac.h endian.h 
./copy.o : copy.cxx cmd.h endian.h misc.h args.h status.h mac.h fs.h volume.h \
  error.h catalog.h btree.h file.h extent.h 
