# ===================================
# C MEAT-AXE - Makefile for Borland C
# ===================================

# ==================================================================
# Configuration section
# The macros below may need some changes depending on your system
# ==================================================================

# The MeatAxe directory. This Makefile resides in $(MTXDIR)\exe
MTXDIR=c:\mtx

# ==================================================================
# End of configuration section
# There should be no need to change anything below this point
# ==================================================================

SD=$(MTXDIR)\src
MTXLIB=$(MTXDIR)\lib
CFLAGS=-DOS_MSDOS -I$(SD) -mh -2 -O
ZZZNAME=zzz
MAKETAB=maketab


# Program names
# -------------

MTXPRG=zad.exe zbl.exe zcf.exe zcl.exe zcp.exe zct.exe zcv.exe zef.exe\
 zev.exe zfr.exe zis.exe ziv.exe zkd.exe zmo.exe zmu.exe znu.exe zor.exe\
 zpc.exe zpr.exe zpt.exe zqt.exe zsb.exe zsi.exe zsm.exe zsp.exe zsy.exe\
 ztc.exe zte.exe ztr.exe zuk.exe zvp.exe\
 chop.exe mkpeak.exe gkond.exe mkcycl.exe mkinc.exe mksub.exe genmod.exe\
 mkdotl.exe\
 conv.exe maketab.exe zzztest.exe

# Other macros
# ------------
COMP=bcc -c $(CFLAGS) -o$*.obj $(SD)\$*.c
LINK=bcc $(CFLAGS) -e$*.exe
BUILD=bcc $(CFLAGS) -e$*.exe $(SD)\$*.c


# Targets
# -------
all: mtxprogs utils lattice

mtxprogs: zad.exe zbl.exe zcf.exe zcl.exe zcp.exe zct.exe zcv.exe zef.exe\
  zev.exe zfr.exe zis.exe ziv.exe zkd.exe zmo.exe zmu.exe znu.exe zor.exe\
  zpc.exe zpr.exe zpt.exe zqt.exe zsb.exe zsi.exe zsm.exe zsp.exe zsy.exe\
  ztc.exe zte.exe ztr.exe zuk.exe zvp.exe
lattice: chop.exe mkpeak.exe gkond.exe mkcycl.exe mkinc.exe mksub.exe\
  genmod.exe mkdotl.exe
utils: conv.exe maketab.exe zzztest.exe

clean:
	del *.obj
	del *.bak
	del *.map
delete: clean
	del *.exe
	del *.lib


# Auxiliary programs
# ------------------
maketab.exe: $(SD)\maketab.c zzz.lib utils.lib $(ZZZh)
	$(BUILD) zzz.lib utils.lib

conv.exe: $(SD)\conv.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib


# Z library
# ---------
$(SD)\zzz.h: $(SD)\meataxe.h

zzz.lib: zzz.obj zbitstr.obj zfile.obj zgap.obj zgauss.obj \
	zpseed.obj zquot.obj zspin.obj

zzz.obj: $(SD)\zzz.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zbitstr.obj: $(SD)\zbitstr.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zfile.obj: $(SD)\zfile.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zgap.obj: $(SD)\zgap.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zgauss.obj: $(SD)\zgauss.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zpseed.obj: $(SD)\zpseed.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zquot.obj: $(SD)\zquot.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj

zspin.obj: $(SD)\zspin.c $(SD)\zzz.h
	$(COMP)
	tlib zzz.lib /C -+$*.obj




# Y library
# ---------
$(SD)\yyy.h: $(SD)\zzz.h
yyy.lib: yyy.obj ycomp.obj ymatrix.obj yperm.obj ypoly.obj ysets.obj\
    yspin.obj

yyy.obj: $(SD)\yyy.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj

ycomp.obj: $(SD)\ycomp.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj

ymatrix.obj: $(SD)\ymatrix.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj

yperm.obj: $(SD)\yperm.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj

ypoly.obj: $(SD)\ypoly.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj

ysets.obj: $(SD)\ysets.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj

yspin.obj: $(SD)\yspin.c $(SD)\yyy.h
	$(COMP)
	tlib yyy.lib /C -+$*.obj



# Utilities library
# -----------------
utils.lib: args.obj help.obj message.obj prtimes.obj random.obj
	$(COMP)
	tlib utils.lib /C -+$*.obj

args.obj: $(SD)\args.c $(SD)\utils.h
	$(COMP)
	tlib utils.lib /C -+$*.obj

help.obj: $(SD)\help.c $(SD)\utils.h
	$(COMP)
	tlib utils.lib /C -+$*.obj

message.obj: $(SD)\message.c $(SD)\utils.h
	$(COMP)
	tlib utils.lib /C -+$*.obj

prtimes.obj: $(SD)\prtimes.c $(SD)\utils.h
	$(COMP)
	tlib utils.lib /C -+$*.obj

random.obj: $(SD)\random.c $(SD)\utils.h
	$(COMP)
	tlib utils.lib /C -+$*.obj



# Objects
# -------
chop.obj: $(SD)/chop.c $(SD)/words.h $(SD)/split.h
	$(COMP)

files.obj: $(SD)/files.c
	$(COMP)

genmod.obj: $(SD)/genmod.c
	$(COMP)

gkond.obj: $(SD)/gkond.c $(SD)/words.h $(SD)/yyy.h
	$(COMP)

mkcycl.obj: $(SD)/mkcycl.c
	$(COMP)

mkdotl.obj: $(SD)/mkdotl.c
	$(COMP)

mkinc.obj: $(SD)/mkinc.c
	$(COMP)

mkpeak.obj: $(SD)/mkpeak.c $(SD)/yyy.h $(SD)/words.h
	$(COMP)

mksub.obj: $(SD)/mksub.c
	$(COMP)

split.obj: $(SD)/split.c
	$(COMP)

words.obj: $(SD)/words.c
	$(COMP)



# Meat-Axe programs
# -----------------

zad.exe: $(SD)/zad.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zbl.exe: $(SD)/zbl.c zzz.lib
	$(BUILD) zzz.lib

zcf.exe: $(SD)/zcf.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zcl.exe: $(SD)/zcl.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zcp.exe: $(SD)/zcp.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zct.exe: $(SD)/zct.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zcv.exe: $(SD)/zcv.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zef.exe: $(SD)/zef.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zev.exe: $(SD)/zev.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zfr.exe: $(SD)/zfr.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zis.exe: $(SD)/zis.c zzz.lib
	$(BUILD) zzz.lib

ziv.exe: $(SD)/ziv.c zzz.lib
	$(BUILD) zzz.lib

zkd.exe: $(SD)/zkd.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zmo.exe: $(SD)/zmo.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zmu.exe: $(SD)/zmu.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

znu.exe: $(SD)/znu.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zor.exe: $(SD)/zor.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zpc.exe: $(SD)/zpc.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zpr.exe: $(SD)/zpr.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zpt.exe: $(SD)/zpt.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zqt.exe: $(SD)/zqt.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zsb.exe: $(SD)/zsb.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zsi.exe: $(SD)/zsi.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zsm.exe: $(SD)/zsm.c words.obj utils.lib yyy.lib zzz.lib
	$(BUILD) words.obj utils.lib yyy.lib zzz.lib

zsp.exe: $(SD)/zsp.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zsy.exe: $(SD)/zsy.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

ztc.exe: $(SD)/ztc.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zte.exe: $(SD)/zte.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

ztr.exe: $(SD)/ztr.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zuk.exe: $(SD)/zuk.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zvp.exe: $(SD)/zvp.c zzz.lib utils.lib
	$(BUILD) zzz.lib utils.lib

zzztest.exe: $(SD)/zzztest.c zzz.lib
	$(BUILD) zzz.lib



################################################################
#
#   Lattice package
#
################################################################

OBJ1=files.obj chop.obj split.obj words.obj utils.lib yyy.lib zzz.lib
OBJ2=files.obj mkpeak.obj words.obj utils.lib yyy.lib zzz.lib
OBJ3=files.obj gkond.obj words.obj utils.lib yyy.lib zzz.lib
OBJ4=files.obj mkcycl.obj utils.lib yyy.lib zzz.lib
OBJ5=files.obj mkinc.obj utils.lib yyy.lib zzz.lib
OBJ5a=files.obj mkdotl.obj utils.lib yyy.lib zzz.lib
OBJ6=mksub.obj files.obj utils.lib zzz.lib
OBJ7=genmod.obj files.obj utils.lib yyy.lib zzz.lib

chop.exe: $(OBJ1)
	$(LINK) $(OBJ1)

mkpeak.exe: $(OBJ2)
	$(LINK) $(OBJ2)

gkond.exe: $(OBJ3)
	$(LINK) $(OBJ3)

mkcycl.exe: $(OBJ4)
	$(LINK) $(OBJ4)

mkdotl.exe: $(OBJ5a)
	$(LINK) $(OBJ5a)

mkinc.exe: $(OBJ5)
	$(LINK) $(OBJ5)

mksub.exe: $(OBJ6)
	$(LINK) $(OBJ6)

genmod.exe: $(OBJ7)
	$(LINK) $(OBJ7)




