CC=gcc -pipe
# CFLAGS=-Wall -g -DDEBUG_MEMORY
CFLAGS=-Wall -O6 # -DDEBUG_MEMORY
LDFLAGS=-s

WEYL_OBJS=matrix.o affine.o calc.o list.o tree.o alloc.o \
polynomial.o sconst.o kllib.o weight.o output.o debug.o \
rank.o freudlib.o rational.o efhtree.o entrynum.o file.o \
redulib.o redulib2.o signals.o janzlib.o cmdline.o figlib.o \
hashtab.o

PROGS=alcove alctoexp bruhat calcdata figbruhat freudcmp \
freudenthal intweights ispc jsum klpoly kltable kostant \
lesseq longelem lusztig makekl makelie matcheck matfix \
mathead matmerge matprint matrank2 matrank minexp nmat \
plusroots redu reduinfo redumat2 redumat wdif

def: $(PROGS)

all: $(PROGS)

dynkin.a: $(WEYL_OBJS)
	ar rcu dynkin.a $(WEYL_OBJS)
	ranlib dynkin.a


# Information

calcdata: calcdata.o dynkin.a
	$(CC) $(LDFLAGS) -o calcdata calcdata.o dynkin.a

longelem: longelem.o dynkin.a
	$(CC) $(LDFLAGS) -o longelem longelem.o dynkin.a

plusroots: plusroots.o dynkin.a
	$(CC) $(LDFLAGS) -o plusroots plusroots.o dynkin.a

intweights: intweights.o dynkin.a
	$(CC) $(LDFLAGS) -o intweights intweights.o dynkin.a

nmat: nmat.o dynkin.a
	$(CC) $(LDFLAGS) -o nmat nmat.o dynkin.a


# Calculations

minexp: minexp.o dynkin.a
	$(CC) $(LDFLAGS) -o minexp minexp.o dynkin.a

alcove: alcove.o dynkin.a
	$(CC) $(LDFLAGS) -o alcove alcove.o dynkin.a

alctoexp: alctoexp.o dynkin.a
	$(CC) $(LDFLAGS) -o alctoexp alctoexp.o dynkin.a

klpoly: klpoly.o dynkin.a
	$(CC) $(LDFLAGS) -o klpoly klpoly.o dynkin.a

lesseq: lesseq.o dynkin.a
	$(CC) $(LDFLAGS) -o lesseq lesseq.o dynkin.a

bruhat: bruhat.o dynkin.a
	$(CC) $(LDFLAGS) -o bruhat bruhat.o dynkin.a

figbruhat: figbruhat.o dynkin.a
	$(CC) $(LDFLAGS) -o figbruhat figbruhat.o dynkin.a

wdif: wdif.o dynkin.a
	$(CC) $(LDFLAGS) -o wdif wdif.o dynkin.a

kostant: kostant.o dynkin.a
	$(CC) $(LDFLAGS) -o kostant kostant.o dynkin.a

freudenthal: freudenthal.o dynkin.a
	$(CC) $(LDFLAGS) -o freudenthal freudenthal.o dynkin.a

freudcmp: freudcmp.o dynkin.a
	$(CC) $(LDFLAGS) -o freudcmp freudcmp.o dynkin.a

jsum: jsum.o dynkin.a
	$(CC) $(LDFLAGS) -o jsum jsum.o dynkin.a


# Weight space dimensions

redu: redu.o dynkin.a
	$(CC) $(LDFLAGS) -o redu redu.o dynkin.a

reduinfo: reduinfo.o dynkin.a
	$(CC) $(LDFLAGS) -o reduinfo reduinfo.o dynkin.a

lusztig: lusztig.o dynkin.a
	$(CC) $(LDFLAGS) -o lusztig lusztig.o dynkin.a

kltable: kltable.o dynkin.a
	$(CC) $(LDFLAGS) -o kltable kltable.o dynkin.a

redumat: redumat.o dynkin.a
	$(CC) $(LDFLAGS) -o redumat redumat.o dynkin.a

redumat2: redumat2.o dynkin.a
	$(CC) $(LDFLAGS) -o redumat2 redumat2.o dynkin.a

matrank: matrank.o dynkin.a
	$(CC) $(LDFLAGS) -o matrank matrank.o dynkin.a

matrank2: matrank2.o dynkin.a
	$(CC) $(LDFLAGS) -o matrank2 matrank2.o dynkin.a

mathead: mathead.o dynkin.a
	$(CC) $(LDFLAGS) -o mathead mathead.o dynkin.a

matcheck: matcheck.o dynkin.a
	$(CC) $(LDFLAGS) -o matcheck matcheck.o dynkin.a

matprint: matprint.o dynkin.a
	$(CC) $(LDFLAGS) -o matprint matprint.o dynkin.a

matfix: matfix.o dynkin.a
	$(CC) $(LDFLAGS) -o matfix matfix.o dynkin.a

matmerge: matmerge.o dynkin.a
	$(CC) $(LDFLAGS) -o matmerge matmerge.o dynkin.a


# Misc programs.

ispc: ispc.o
	$(CC) $(LDFLAGS) -o ispc ispc.o dynkin.a

makelie: makelie.o dynkin.a
	$(CC) $(LDFLAGS) -o makelie makelie.o dynkin.a

makekl: makekl.o dynkin.a
	$(CC) $(LDFLAGS) -o makekl makekl.o dynkin.a


clean:
	rm -f $(PROGS) core *.a *.o *.out dependencies

realclean:
	rm -f $(PROGS) core *.a *.o *.out *~ dot.* dependencies *.s

backup:
	./mkbackup.sh

dep:
	gcc -MM *.c > dependencies

dependencies: # Makefile
	gcc -MM *.c > dependencies

include dependencies
