#
#       Makefile for Mtools
#
# check the Configure file for some examples of device-specific setups
# Berkeley flavors of Unix should include -DBSD in the CFLAGS

CC	= gcc
CFLAGS	= -O2 -fomit-frame-pointer -m486 -DMERGED -DLINUX
LDFLAGS	= -s -N
LD	= gcc
LINT	= lint
SHLIB	= 
SHAR	= shar -a
BINDIR	= /usr/bin
MANSECT	= 1
MANDIR	= /usr/man/man$(MANSECT)
#
# for AT&T Unix PC 7300/3b1 style shared libraries.
#SHOBJ	= /lib/crt0s.o /lib/shlib.ifile
#LD	= ld

LINKS=mattrib mcd mcopy mdel mdir mformat mlabel mmd mrd mread mren  mtype \
      mwrite
MTOOLS = mattrib.o mcd.o mcopy.o mdel.o mdir.o mformat.o mlabel.o mmd.o \
	 mrd.o mread.o mren.o mtype.o mwrite.o buf_read.o buf_write.o \
	 devices.o dir_make.o dir_read.o dir_write.o expand.o fat_free.o \
	 fat_read.o fat_write.o file_read.o file_write.o init.o is_dir.o \
	 match.o parse.o subdir.o mtools.o

MKMANIFEST = mkmanifest.o

all:	mtools

mtools:	$(MTOOLS)
	$(LD) $(LDFLAGS) $(MTOOLS) $(SHOBJ) -o mtools $(SHLIB)
	for name in $(LINKS); do if [ -x $$name ]; then rm $$name; ln mtools \
	  $$name; fi; done

mattrib: $(MATTRIB)
	$(LD) $(LDFLAGS) $(MATTRIB) $(SHOBJ) -o mattrib $(SHLIB)

mcd:	$(MCD)
	$(LD) $(LDFLAGS) $(MCD) $(SHOBJ) -o mcd $(SHLIB)

mcopy:	$(MCOPY)
	$(LD) $(LDFLAGS) $(MCOPY) $(SHOBJ) -o mcopy $(SHLIB)

mdel:	$(MDEL)
	$(LD) $(LDFLAGS) $(MDEL) $(SHOBJ) -o mdel $(SHLIB)

mdir:	$(MDIR)
	$(LD) $(LDFLAGS) $(MDIR) $(SHOBJ) -o mdir $(SHLIB)

mformat: $(MFORMAT)
	$(LD) $(LDFLAGS) $(MFORMAT) $(SHOBJ) -o mformat $(SHLIB)

mlabel:	$(MLABEL)
	$(LD) $(LDFLAGS) $(MLABEL) $(SHOBJ) -o mlabel $(SHLIB)

mmd:	$(MMD)
	$(LD) $(LDFLAGS) $(MMD) $(SHOBJ) -o mmd $(SHLIB)

mrd:	$(MRD)
	$(LD) $(LDFLAGS) $(MRD) $(SHOBJ) -o mrd $(SHLIB)

mread:	$(MREAD)
	$(LD) $(LDFLAGS) $(MREAD) $(SHOBJ) -o mread $(SHLIB)

mren:	$(MREN)
	$(LD) $(LDFLAGS) $(MREN) $(SHOBJ) -o mren $(SHLIB)

mtype:	$(MTYPE)
	$(LD) $(LDFLAGS) $(MTYPE) $(SHOBJ) -o mtype $(SHLIB)

mwrite:	$(MWRITE)
	$(LD) $(LDFLAGS) $(MWRITE) $(SHOBJ) -o mwrite $(SHLIB)

mkmanifest:	$(MKMANIFEST)
	$(LD) $(LDFLAGS) $(MKMANIFEST) $(SHOBJ) -o mkmanifest $(SHLIB)

clean:
	-rm -f *.o mtools mkmanifest 2>/dev/null

spotless:	clean
	-rm mtools $(LINKS) 2>/dev/null

install:	mtools mkmanifest
	install -g bin -m 755 -o root mtools $(BINDIR)
	install -g bin -m 755 -o root mkmanifest $(BINDIR)
	cd $(BINDIR); for name in $(LINKS); do if [ -x $$name ]; then \
	  rm $$name; fi; ln mtools $$name; done
	install -g man -m 444 -o root *.1 $(MANDIR)

links:	mtools
	for name in $(LINKS); do if [ -x $$name ]; then rm $$name; fi; \
	  ln mtools $$name; done

buf_read.o:	msdos.h
buf_write.o:	msdos.h
devices.o:	msdos.h
dir_make.o:	msdos.h
dir_read.o:	msdos.h
dir_write.o:	msdos.h
fat_free.o:	msdos.h
fat_read.o:	msdos.h
fat_write.o:	msdos.h
file_read.o:	msdos.h
file_write.o:	msdos.h
init.o:		msdos.h
is_dir.o:	msdos.h
mattrib.o:	msdos.h patchlevel.h mattrib.c
		$(CC) -c $(CFLAGS) mattrib.c -Dmain=mattrib
mcd.o:		msdos.h patchlevel.h mcd.c
		$(CC) -c $(CFLAGS) mcd.c -Dmain=mcd
mcopy.o:	patchlevel.h mcopy.c
		$(CC) -c $(CFLAGS) mcopy.c -Dmain=mcopy
mdel.o:		msdos.h patchlevel.h mdel.c
		$(CC) -c $(CFLAGS) mdel.c -Dmain=mdel
mdir.o:		msdos.h patchlevel.h mdir.c
		$(CC) -c $(CFLAGS) mdir.c -Dmain=mdir
mformat.o:	msdos.h patchlevel.h mformat.c
		$(CC) -c $(CFLAGS) mformat.c -Dmain=mformat
mlabel.o:	msdos.h patchlevel.h mlabel.c
		$(CC) -c $(CFLAGS) mlabel.c -Dmain=mlabel
mmd.o:		msdos.h patchlevel.h mmd.c
		$(CC) -c $(CFLAGS) mmd.c -Dmain=mmd
mrd.o:		msdos.h patchlevel.h mrd.c
		$(CC) -c $(CFLAGS) mrd.c -Dmain=mrd
mread.o:	msdos.h patchlevel.h mread.c
		$(CC) -c $(CFLAGS) mread.c -Dmain=mread
mren.o:		msdos.h patchlevel.h mren.c
		$(CC) -c $(CFLAGS) mren.c -Dmain=mren
mtype.o:	msdos.h patchlevel.h mtype.c
		$(CC) -c $(CFLAGS) mtype.c -Dmain=mtype
mwrite.o:	msdos.h patchlevel.h mwrite.c
		$(CC) -c $(CFLAGS) mwrite.c -Dmain=mwrite
parse.o:	msdos.h
subdir.o:	msdos.h
