# General Makefile for C version of gp

# Change these installation directories to suit your needs

PREFIX = /usr/local
LIBDIR = $(PREFIX)/lib
BINDIR = $(PREFIX)/bin
MANDIR = $(PREFIX)/man
INCLUDEDIR = $(PREFIX)/include/pari

CC = gcc
CFLAGS = -O2 -g -ansi -DLONG_IS_32BIT -DULONG_NOT_DEFINED
LIBS = -lm
LFLAGS =

# You can (if you want to debug gp yourself) add the -g option
# in CFLAGS. However, remember that, while gcc accepts -g and -O
# simultaneously, cc usually does not.

RM = rm -f
LN = ln -s
RANLIB = ranlib
INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL) -m 644

# Choose the plot file:

# no plotting capabilities:
#PLOTFILE = plotnull.c
#PLOTCFLAGS =
#PLOTLIBS =

# plotting in X windows:
PLOTFILE = plotX.c
PLOTCFLAGS = 
PLOTLIBS =  -lX11

# Choose whether you want the readline input facilities:
GPMAIN = gp.o
RLLIBS =
RLFLAGS =

#GPMAIN = gpreadline.o
#RLLIBS = readline/libreadline.a
#RLFLAGS = -Lreadline -lreadline -ltermcap

OBJS =  mp.o anal.o alglin1.o alglin2.o base.o arith1.o arith2.o bibli1.o bibli2.o elliptic.o es.o gen1.o gen2.o gen3.o init.o errmessages.o helpmessages.o polarit1.o polarit2.o trans1.o trans2.o trans3.o version.o

all:	genpari.h gp

gp:	genpari.h $(GPMAIN) $(OBJS) plot.o buch.o $(RLLIBS)
	$(CC) $(CFLAGS) $(LFLAGS) -o gp $(GPMAIN) $(OBJS) plot.o buch.o $(LIBS) $(PLOTLIBS) $(RLFLAGS)

genpari.h:	genpariother.h
	-$(RM) genpari.h
	$(LN) genpariother.h genpari.h

mp.o:	mp.c
	$(CC) $(CFLAGS) -c mp.c

gp.o: gp.c
	$(CC) $(CFLAGS) -c gp.c

alglin1.o: alglin1.c
	$(CC) $(CFLAGS) -c alglin1.c

alglin2.o: alglin2.c
	$(CC) $(CFLAGS) -c alglin2.c

anal.o: anal.c
	$(CC) $(CFLAGS) -c anal.c

arith1.o: arith1.c
	$(CC) $(CFLAGS) -c arith1.c

arith2.o: arith2.c
	$(CC) $(CFLAGS) -c arith2.c

base.o: base.c
	$(CC) $(CFLAGS) -c base.c

buch.o: buch.c
	$(CC) $(CFLAGS) -c buch.c

bibli1.o: bibli1.c
	$(CC) $(CFLAGS) -c bibli1.c

bibli2.o: bibli2.c
	$(CC) $(CFLAGS) -c bibli2.c

elliptic.o: elliptic.c
	$(CC) $(CFLAGS) -c elliptic.c

es.o: es.c
	$(CC) $(CFLAGS) -c es.c

gen1.o: gen1.c
	$(CC) $(CFLAGS) -c gen1.c

gen2.o: gen2.c
	$(CC) $(CFLAGS) -c gen2.c

gen3.o: gen3.c
	$(CC) $(CFLAGS) -c gen3.c

init.o: init.c
	$(CC) $(CFLAGS) -c init.c

errmessages.o: errmessages.c
	$(CC) $(CFLAGS) -c errmessages.c

helpmessages.o: helpmessages.c
	$(CC) $(CFLAGS) -c helpmessages.c

dummy.o: dummy.c
	$(CC) $(CFLAGS) -c dummy.c

polarit1.o: polarit1.c
	$(CC) $(CFLAGS) -c polarit1.c

polarit2.o: polarit2.c
	$(CC) $(CFLAGS) -c polarit2.c

trans1.o: trans1.c
	$(CC) $(CFLAGS) -c trans1.c

trans2.o: trans2.c
	$(CC) $(CFLAGS) -c trans2.c

trans3.o: trans3.c
	$(CC) $(CFLAGS) -c trans3.c

gpreadline.o: gpreadline.c
	$(CC) $(CFLAGS) -I. -c gpreadline.c

plot.c:	$(PLOTFILE)
	-$(RM) plot.c
	$(LN) $(PLOTFILE) plot.c

plot.o:	plot.c
	$(CC) $(CFLAGS) $(PLOTCFLAGS) -c plot.c

version.o:	versionport.c
	$(CC) $(CFLAGS) -c -o version.o versionport.c

readline/libreadline.a:
	(cd readline ; make CC='$(CC)' CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)')

install: install-lib install-bin install-man

install-lib: $(OBJS) dummy.o
	-mkdir $(INCLUDEDIR)
	$(INSTALL_DATA) genpari.h $(INCLUDEDIR)
	$(INSTALL_DATA) gencom.h  $(INCLUDEDIR)
	$(INSTALL_DATA) genport.h $(INCLUDEDIR)
	$(INSTALL_DATA) gen68k.h $(INCLUDEDIR)
	$(INSTALL_DATA) erreurs.h $(INCLUDEDIR)
	$(INSTALL_DATA) mpansi.h $(INCLUDEDIR)
	$(INSTALL_DATA) mpin.h $(INCLUDEDIR)
	-$(RM) libpari.a
	ar r libpari.a $(OBJS) dummy.o
	$(INSTALL_DATA) libpari.a $(LIBDIR)
	$(RANLIB) $(LIBDIR)/libpari.a

install-bin: gp
	$(INSTALL_PROGRAM) gp $(BINDIR)
	strip $(BINDIR)/gp

install-man: gp.1
	$(INSTALL_DATA) gp.1 $(MANDIR)/man1

clean:	
	-$(RM) *.o libpari.a gp genpari.h plot.c i386.s *.log *.dvi *.std *.idx *.toc

