# makefile for hecke project
# Author:        William Stein
# Last Modified: April, 1999.

CC = g++ 
LIBFLAGS =  -L/usr/local/lib/LiDIA/i686-unknown-linux/c++ -lLiDIA -L/usr/local/ntl/src -lntl
INCFLAGS = -I/usr/local/ntl/include -I/usr/local/include/LiDIA -I/usr/include

CFLAGS = -g -static -DDEBUG -DINST_FFIELD -DINST_BIGRATIONAL -DINST_ALGNUM -DINST_CHARMOD -DINST_INTMOD $(INCFLAGS) -fguiding-decls

#CFLAGS = -g -O -DDEBUG -DINST_BIGRATIONAL $(INCFLAGS) -fguiding-decls
#CFLAGS = -g -static -DDEBUG -DINST_BIGRATIONAL $(INCFLAGS) -fguiding-decls

OBJS = motive.o h1nchi.o msymbols.o character.o charpoly.o cusps.o system.o inst.o fields.o display.o arith.o intmod.o charmod.o modformulas.o methodofgraphs.o tables.o modularcalc.o h1nchiz.o my_ntl.o 

TEMPLATES = array.cc vector.cc matrix.cc sparsematrix.cc sparse.cc lines.cc list.cc intmod.cc charmod.cc array.h vector.h matrix.h sparsematrix.h sparse.h lines.h list.h intmod.h charmod.h

hecke: hecke.o $(TEMPLATES) $(OBJS) 
	$(CC) $(CFLAGS) -o heckenew hecke.o $(OBJS) $(LIBFLAGS)

example: example.o $(TEMPLATES) $(OBJS) 
	$(CC) $(CFLAGS) -o example example.o $(OBJS) $(LIBFLAGS)

# these may be insufficient.
motive.o: motive.h 
modularcalc.o: modularcalc.cc modularcalc.h 
h1nchiz.o: h1nchi.h h1nchiz.h
arith.o: arith.cc arith.h
character.o: character.cc character.h
charpoly.o: charpoly.cc charpoly.h
cusps.o: cusps.cc cusps.h character.h
display.o: display.cc display.h
fields.o: fields.cc fields.h 
h1nchi.o: h1nchi.cc h1nchi.h character.h 
inst.o: inst.cc $(TEMPLATES)
modformulas.o: modformulas.cc modformulas.h
methodofgraphs.o: methodofgraphs.cc
msymbols.o: msymbols.cc msymbols.h 
system.o: system.cc system.h
hecke.o: methodofgraphs.h h1nchi.h modformulas.h
tables.o: tables.cc tables.h

clean: 
	rm *.o

#template for compiling *.cc -> *.o :
.cc.o:
	$(CC) $(CFLAGS) -c $< 





 


# building PVM related programs
PVMDIR		= $(HOME)/pvm3
BDIR		= $(PVMDIR)/bin
EXDIR		= $(BDIR)/$(PVM_ARCH)
PVM_CFLAGS	= -g -I/usr/share/pvm3/include -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\"/usr/bin/rsh\" -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS 
PVM_LFLAGS	= -L/usr/share/pvm3/lib/LINUX  -lpvm3 

pvm.o:	pvm.cc 
	$(CC) $(PVM_CFLAGS) -c pvm.cc 

pvm_ex: pvm_ex.cc pvm.o
	$(CC) $(PVM_CFLAGS) -o $@ pvm_ex.cc pvm.o $(PVM_LFLAGS) 
	mv $@ $(EXDIR)

pvmtables: pvmtables.cc pvm.o vector.h vector.cc $(TEMPLATES) $(OBJS) 
	$(CC) $(CFLAGS) $(PVM_CFLAGS) -o $@ pvmtables.cc pvm.o $(OBJS) $(LIBFLAGS) $(PVM_LFLAGS) 
	mv $@ $(EXDIR)
