### # Makefile for MWRANK and assorted elliptic curve programs # (see README for list) all: progs ### # Variables set by configure ### The architecture we compile on ARCH = @ARCH@ ### Name of C++ compiler CXX = @CXX@ ### Optimisation flags OPTFLAG = -O3 ### Name of ranlib program (echo if none) RANLIB = @RANLIB@ ### Comment out if not needed for your system GXX_LIB = @GXX_LIB@ STDCXX_LIB = @STDCXX_LIB@ M_LIB = @M_LIB@ ### Place for binaries (usually . is OK): BINDIR = . # BINDIR = @ARCH@ ### # If using LiDIA, set these to the right paths for your installation LIDIALIBDIR = @LIDIALIBDIR@ LIDIAINCDIR = @LIDIAINCDIR@ ### Compile mode (see below) COMPILE = @COMPILE@ ### # Mode 0: do not use LiDIA ### # Mode 1: use LiDIA's arithmetic (bigints AND bigfloats) # instead of GNU libg++ or NTL ifeq ($(COMPILE),1) LIDIA = 1 LIDIACFLAGS = -DLiDIA -I$(LIDIAINCDIR) LIDIALFLAGS = -lLiDIA -L$(LIDIALIBDIR) endif ### # Mode 2: use LiDIA's bigints but ordinary doubles ifeq ($(COMPILE),2) LIDIA_INTS = 1 LIDIACFLAGS = -DLiDIA_INTS -I$(LIDIAINCDIR) LIDIALFLAGS = -lLiDIA -L$(LIDIALIBDIR) endif ### # Mode 3: use NTL's bigints but ordinary doubles ifeq ($(COMPILE),3) NTL_INTS = 1 LIDIACFLAGS = -DNTL_INTS LIDIALFLAGS = -lntl -lgmp endif ########## YOU DONT HAVE TO CHANGE ANYTHING BELOW THIS ################ CFLAGS = $(LIDIACFLAGS) LFLAGS = -L. -lcurves -lprocs $(LIDIALFLAGS) $(GXX_LIB) $(STDCXX_LIB) $(M_LIB) %.o: %.cc $(CXX) -c $(OPTFLAG) $(CFLAGS) $< # TARGETS PROCS_H = arith.h marith.h compproc.h conic.h legendre.h interface.h unimod.h quadratic.h illl.h mmatrix.h mvector.h matrix.h vector.h mat.h vec.h procs_h: $(PROCS_H) PROCS_OBJS = arith.o marith.o compproc.o conic.o legendre.o quadratic.o illl.o vector.o matrix.o mvector.o mmatrix.o procs_objs: $(PROCS_OBJS) libprocs.a: procs_objs ar r libprocs.a $(PROCS_OBJS) $(RANLIB) libprocs.a QCURVES_H = curve.h points.h isogs.h cperiods.h sieve_search.h sifter.h qcurves_h: $(QCURVES_H) QCURVES_OBJS = curve.o curvedata.o curvered.o points.o heights.o mwprocs.o isogs.o cperiods.o sieve_search.o sifter.o qcurves_objs: $(QCURVES_OBJS) libcurves.a: qcurves_objs ar r libcurves.a $(QCURVES_OBJS) $(RANLIB) libcurves.a QRANK_OBJS = mrank1.o mrank2.o mequiv.o mquartic.o mglobsol.o mlocsol.o qc.o \ silver.o sqfdiv.o getcurve.o desc2.o \ bitspace.o twoadic.o \ transform.o minim.o reduce.o timer.o version.o GetOpt.o qrank_objs: $(QRANK_OBJS) librank.a: qrank_objs ar r librank.a $(QRANK_OBJS) $(RANLIB) librank.a PROGS = mwrank tmrank ratpoint findinf tate conductor torsion twist allisog indep progs: $(PROGS) clean: /bin/rm -f *~ *.o *.a config.cache config.status config.log (cd $(BINDIR); /bin/rm -f $(PROGS)) distclean: clean /bin/rm -f Makefile shar: rm -f rank.shar* shar -i files -o rank.shar gzip rank.shar tar: (cd ..; tar -cf mwrank.tar rankdist ; gzip mwrank.tar) ranktest: tmrank $(BINDIR)/tmrank < tmrank.in # PROGRAM TARGETS # (A) mwrank & related programs mwrank: mwrank.o version.o libprocs.a libcurves.a librank.a $(CXX) -o $(BINDIR)/mwrank mwrank.o version.o -lrank $(LFLAGS) tmrank: tmrank.o version.o libprocs.a libcurves.a librank.a $(CXX) -o $(BINDIR)/tmrank tmrank.o version.o -lrank $(LFLAGS) ratpoint: ratpoint.o version.o libprocs.a libcurves.a librank.a $(CXX) -o $(BINDIR)/ratpoint ratpoint.o version.o -lrank $(LFLAGS) d2: d2.o version.o libprocs.a libcurves.a librank.a $(CC) -o $(BINDIR)/d2 d2.o version.o -lrank $(LFLAGS) # (B) other elliptic curve programs findinf: findinf.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/findinf findinf.o $(LFLAGS) tate: tate.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/tate tate.o $(LFLAGS) conductor: conductor.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/conductor conductor.o $(LFLAGS) torsion: torsion.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/torsion torsion.o $(LFLAGS) twist: twist.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/twist twist.o $(LFLAGS) allisog: allisog.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/allisog allisog.o $(LFLAGS) indep: indep.o libcurves.a libprocs.a $(CXX) -o $(BINDIR)/indep indep.o $(LFLAGS) # DEPENDENCIES # (a) GENERAL PROCS arith.o: arith.cc arith.h marith.o: interface.h marith.cc marith.h arith.h compproc.h compproc.o: compproc.cc compproc.h mvector.o: interface.h mvector.h mvector.cc marith.h arith.h compproc.h mmatrix.o: interface.h mmatrix.cc mmatrix.h mvector.h marith.h vector.h compproc.h vector.o: vector.cc vector.h vec.cc vec.h arith.h matrix.o: matrix.cc matrix.h mat.cc mat.h arith.h quadratic.o: quadratic.h quadratic.cc unimod.h marith.h illl.o: illl.h illl.cc mmatrix.h mvector.h matrix.h vector.h mat.h vec.h marith.h conic.o: conic.cc conic.h legendre.h quadratic.h marith.h arith.h interface.h legendre.o: legendre.cc legendre.h conic.h marith.h quadratic.h mmatrix.h matrix.h mat.h mvector.h vector.h vec.h illl.h # (b) CURVES curve.o: curve.h curve.cc $(PROCS_H) curvedata.o: curve.h curvedata.cc $(PROCS_H) curvered.o: curve.h curvered.cc $(PROCS_H) points.o: points.h points.cc $(PROCS_H) heights.o: heights.cc points.h curve.h $(PROCS_H) findinf.o: findinf.cc mwprocs.h points.h curve.h $(PROCS_H) mwprocs.o: mwprocs.cc mwprocs.h points.h curve.h $(PROCS_H) tate.o: tate.cc curve.h reader.h $(PROCS_H) conductor.o: conductor.cc curve.h reader.h $(PROCS_H) torsion.o: torsion.cc points.h curve.h reader.h $(PROCS_H) twist.o: twist.cc curve.h $(PROCS_H) cperiods.o: cperiods.h cperiods.cc curve.h isogs.o: isogs.h isogs.cc curve.h points.h cperiods.h allisog.o: allisog.cc isogs.h curve.h points.h cperiods.h reader.h sieve_search.o: sieve_search.h sieve_search.cc indep.o: indep.cc sifter.h points.h curve.h # (c) RANK version.o: $(HEADERS) $(DOTCCS) mwrank.o: mwrank.cc mrank1.h mrank2.h mquartic.h silver.h getcurve.h version.h timer.h options.h tmrank.o: tmrank.cc mrank1.h mrank2.h mquartic.h version.h timer.h options.h mrank1.o: mrank1.cc mrank1.h mquartic.h mequiv.h msoluble.h qc.h mrank2.o: mrank2.cc mrank2.h mquartic.h msoluble.h sqfdiv.h desc2.h mequiv.o: mequiv.cc mquartic.h mequiv.h mquartic.o: mquartic.cc mquartic.h mlocsol.o: mlocsol.cc mlocsol.h mquartic.h mglobsol.o: mglobsol.cc mglobsol.h mquartic.h silver.o: silver.h silver.cc getcurve.o: getcurve.cc getcurve.h sansone.o: sansone.cc mrank1.h mrank2.h mquartic.h ratpoint.o: ratpoint.cc qc.h mlocsol.h mglobsol.h mquartic.h qc.h version.h timer.h desc2.o: desc2.cc desc2.h transform.h reduce.h mlocsol.h mglobsol.h mquartic.h unimod.h quadratic.h d2.o: d2.cc desc2.h reduce.h qc.h mlocsol.h mglobsol.h mquartic.h qc.h reduce.o: reduce.cc reduce.h minim.h mquartic.h minim.o: minim.cc minim.h mquartic.h transform.o: transform.cc transform.h qc.o: qc.cc qc.h mquartic.h sqfdiv.o: sqfdiv.cc sqfdiv.h bitspace.o: bitspace.h bitspace.cc timer.o: timer.h timer.cc GetOpt.o: GetOpt.cc