#
# Makefile for pdisk
#

MAN_PAGE= \
       pdisk.8

MAC_DOC= \
       pdisk.html

DOCS= \
       HISTORY \
       README \
       $(MAN_PAGE) \
       $(MAC_DOC)

SERVER_README = \
       dist.README

SERVER_MESSAGE = \
       dist.message

DOCS_INTERNAL= \
       HISTORY.ALL \
       HOWTO.DISTRIBUTE \
       To_do_list \
       command-language

SUPPORT= \
       make_filename \
       make_depend \
       make_tags \
       checkin_files \
       MPWcompare \
       name_latest \
       next_release

MAC_SOURCE= \
       ATA_media.c \
       ATA_media.h \
       DoSCSICommand.c \
       DoSCSICommand.h \
       MacSCSICommand.h \
       SCSI_media.c \
       SCSI_media.h \
       pdisk.r

UNIX_SOURCE= \
       bitfield.c \
       bitfield.h \
       convert.c \
       convert.h \
       cvt_pt.c \
       deblock_media.c \
       deblock_media.h \
       dpme.h \
       dump.c \
       dump.h \
       errors.c \
       errors.h \
       file_media.c \
       file_media.h \
       hfs_misc.c \
       hfs_misc.h \
       io.c \
       io.h \
       layout_dump.c \
       layout_dump.h \
       makefile \
       media.c \
       media.h \
       partition_map.c \
       partition_map.h \
       pathname.c \
       pathname.h \
       pdisk.c \
       pdisk.h \
       util.c \
       util.h \
       validate.c \
       validate.h \
       version.h

COMMON_OBJECTS = \
       partition_map.o \
       bitfield.o \
       convert.o \
       deblock_media.o \
       file_media.o \
       errors.o \
       hfs_misc.o \
       io.o \
       media.o \
       pathname.o \
       util.o

UNIX_OBJECTS = \
       pdisk.o \
       dump.o \
       $(COMMON_OBJECTS) \
       validate.o

CVT_OBJECTS = \
       cvt_pt.o \
       $(COMMON_OBJECTS)



ALL_FILES= $(DOCS) $(DOCS_INTERNAL) $(SUPPORT) $(MAC_SOURCE) $(UNIX_SOURCE)

UNIX_BINARIES= \
       pdisk \
       cvt_pt

#
# these names have '__' in place of ' ' to avoid quoting nightmares
#
MAC_PROJECT= \
       pdisk.mac.bin \
       pdisk.mac__Data/CW__Settings.stm.bin \
       pdisk.mac__Data/pdisk.tdm.bin \
       pdisk.mac__Data/pdisk__68k.tdm.bin

# Constructed under MacOS using CodeWarrior from MAC_PROJECT & sources
MAC_BINARY= \
       pdisk.hqx

MAC_68KBINARY= \
       pdisk_68k.hqx


CFLAGS = -Wall -D__unix__ -g
DIST_TAR_FLAGS = cvf


all: $(UNIX_BINARIES)

pdisk: $(UNIX_OBJECTS)
       cc -o pdisk $(UNIX_OBJECTS)

cvt_pt: $(CVT_OBJECTS)
       cc -o cvt_pt $(CVT_OBJECTS)

tags:   $(MAC_SOURCE) $(UNIX_SOURCE)
       ctags $(MAC_SOURCE) $(UNIX_SOURCE)

clean:
       rm -f *.o $(UNIX_BINARIES) list.src

clobber:        clean
       rm -f $(ALL_FILES) $(MAC_BINARY) $(MAC_68KBINARY) tags

# note the sed to reinsert the spaces in the Mac names
list.src: $(MAC_SOURCE) $(DOCS) $(UNIX_SOURCE) $(MAC_PROJECT)
       echo $(MAC_SOURCE) $(DOCS) $(UNIX_SOURCE) $(MAC_PROJECT) |\
       tr ' ' '\n' | sed -e 's/__/ /g' -e 's,^,pdisk/,' >list.src

#
# this depends on this source directory being named 'pdisk'
#
distribution: list.src
       cd ..; tar $(DIST_TAR_FLAGS) pdisk/dist/pdisk.src.tar.`date +%Y%m%d` --files-from pdisk/list.src
       tar $(DIST_TAR_FLAGS) dist/pdisk.bin.tar.`date +%Y%m%d` $(UNIX_BINARIES) $(MAN_PAGE)
       cp -f $(MAC_DOC) dist/$(MAC_DOC).`date +%Y%m%d`
       cp -f $(MAC_BINARY) dist/$(MAC_BINARY).`date +%Y%m%d`
       cp -f $(MAC_68KBINARY) dist/$(MAC_68KBINARY).`date +%Y%m%d`

checkin:
       ./checkin_files $(ALL_FILES)

checkout:       $(ALL_FILES)

diff:
       rcsdiff $(ALL_FILES) 2>&1

name:
       ./name_latest $(ALL_FILES)

#
# in lieu of a real dependency generator
#
convert.h:      dpme.h
deblock_media.h:        media.h
dpme.h: bitfield.h
dump.h: partition_map.h hfs_misc.h
file_media.h:   media.h
partition_map.h:        dpme.h media.h
pathname.h:     media.h
validate.h:     partition_map.h

bitfield.o:     bitfield.c bitfield.h
convert.o:      convert.c convert.h
deblock_media.o:        deblock_media.c deblock_media.h
dump.o:         dump.c dump.h pathname.h io.h errors.h
errors.o:       errors.c errors.h
file_media.o:   file_media.c file_media.h errors.h
io.o:           io.c io.h errors.h
layout_dump.o:  layout_dump.c layout_dump.h
media.o:        media.c media.h
partition_map.o:        partition_map.c partition_map.h pathname.h deblock_media.h io.h convert.h util.h errors.h
pathname.o:     pathname.c pathname.h file_media.h
pdisk.o:        pdisk.c pdisk.h io.h partition_map.h pathname.h errors.h dump.h validate.h version.h util.h
util.o:         util.c version.h util.h
validate.o:     validate.c validate.h deblock_media.h pathname.h convert.h io.h errors.h


#
# fake dependencies used only by list.src {for $(MAC_PROJECT)}
#
pdisk.mac__Data/CW__Settings.stm.bin:
pdisk.mac__Data/pdisk.tdm.bin:
pdisk.mac__Data/pdisk__68k.tdm.bin: