1## Process this file with automake to produce Makefile.in 2 3ACLOCAL_AMFLAGS = -I m4 4AUTOMAKE_OPTIONS = subdir-objects 5 6# to disable valgrind during make distcheck 7AM_DISTCHECK_CONFIGURE_FLAGS ?= \ 8 --disable-valgrind-tests 9 10@COV_FRAG@ 11 12# to not install libecm.la, we could write noinst_LTLIBRARIES instead of 13# lib_LTLIBRARIES below, however then libecm.a is not installed either 14# (see http://www.gnu.org/software/automake/manual/html_node/Libtool-Convenience-Libraries.html) 15lib_LTLIBRARIES = libecm.la 16 17EXTRA_PROGRAMS = rho 18 19# If we want assembly mulredc code, recurse into the right subdirectory 20# and set up variables to include the mulredc library from that subdir 21if ENABLE_ASM_REDC 22 SUBDIRS = $(ASMPATH) 23 MULREDCINCPATH = -I$(srcdir)/$(ASMPATH) 24 MULREDCLIBRARY = $(builddir)/$(ASMPATH)/libmulredc.la 25 26 # Add a tuning and testing program for the mulredc code 27 EXTRA_PROGRAMS += bench_mulredc test_mulredc 28 CLEANFILES = bench_mulredc test_mulredc 29 bench_mulredc_CPPFLAGS = $(MULREDCINCPATH) 30 bench_mulredc_LDADD = $(MULREDCLIBRARY) $(GMPLIB) 31 test_mulredc_CPPFLAGS = $(MULREDCINCPATH) 32 test_mulredc_LDADD = $(MULREDCLIBRARY) $(GMPLIB) 33else 34 # Add a tuning program for the mulredc code 35 EXTRA_PROGRAMS += bench_mulredc 36 CLEANFILES = bench_mulredc 37 bench_mulredc_LDADD = $(GMPLIB) 38endif 39 40libecm_la_SOURCES = ecm.c ecm2.c pm1.c pp1.c getprime_r.c listz.c lucas.c \ 41 stage2.c mpmod.c mul_lo.c polyeval.c median.c \ 42 schoen_strass.c ks-multiply.c rho.c bestd.c auxlib.c \ 43 random.c factor.c sp.c spv.c spm.c mpzspm.c mpzspv.c \ 44 ntt_gfp.c ecm_ntt.c pm1fs2.c sets_long.c \ 45 auxarith.c batch.c parametrizations.c cudawrapper.c \ 46 aprtcle/mpz_aprcl.c 47# Link the asm redc code (if we use it) into libecm.la 48libecm_la_CPPFLAGS = $(MULREDCINCPATH) 49libecm_la_CFLAGS = $(OPENMP_CFLAGS) -g 50# www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html 51# If any interfaces have been added, removed, or changed since the last 52# update, increment current, and set revision to 0. 53libecm_la_LDFLAGS = $(LIBECM_LDFLAGS) -version-info 1:0:0 -g 54libecm_la_LIBADD = $(MULREDCLIBRARY) 55if WANT_GPU 56 libecm_la_SOURCES += cudakernel.cu 57 libecm_la_LIBADD += $(CUDALIB) 58 libecm_la_LDFLAGS += $(CUDALDFLAGS) 59 ecm_LDFLAGS = $(CUDARPATH) 60endif 61libecm_la_LIBADD += $(GMPLIB) 62 63bin_PROGRAMS = ecm 64noinst_PROGRAMS = tune ecmfactor bench_mulredc aprcl 65# Most binaries want to link libecm.la, and the ones which don't will 66# have their own _LDADD which overrides the default LDADD here 67LDADD = libecm.la $(GMPLIB) 68 69ecm_CPPFLAGS = -DOUTSIDE_LIBECM 70ecm_CFLAGS = $(OPENMP_CFLAGS) -g 71ecm_SOURCES = auxi.c b1_ainc.c candi.c eval.c main.c resume.c \ 72 getprime_r.c champions.h aprtcle/mpz_aprcl.c memusage.c 73 74tune_SOURCES = mpmod.c tune.c mul_lo.c listz.c auxlib.c ks-multiply.c \ 75 schoen_strass.c polyeval.c median.c ecm_ntt.c \ 76 ntt_gfp.c mpzspv.c mpzspm.c sp.c spv.c spm.c auxarith.c 77tune_CPPFLAGS = -DTUNE $(MULREDCINCPATH) 78tune_LDADD = $(MULREDCLIBRARY) $(GMPLIB) 79 80ecmfactor_CFLAGS = $(OPENMP_CFLAGS) -lpthread 81 82# multiecm_CPPFLAGS = -DOUTSIDE_LIBECM 83# multiecm_SOURCES = auxi.c b1_ainc.c candi.c eval.c random.c multiecm.c \ 84# resume.c getprime_r.c addlaws.c torsions.c aprtcle/mpz_aprcl.c 85# multiecm_CFLAGS = $(OPENMP_CFLAGS) 86 87aprcl_CFLAGS = -Wall 88aprcl_SOURCES = aprtcle/mpz_aprcl.c aprtcle/aprcl.c 89aprcl_LDADD = $(GMPLIB) 90 91rho_SOURCES = rho.c 92rho_CPPFLAGS = -DTESTDRIVE 93rho_LDADD = -lprimegen $(GMPLIB) $(GSL_LD_FLAGS) 94 95if WITH_GWNUM 96 gwdata.ld : 97 echo "SECTIONS { .data : { . = ALIGN(0x20); *(_GWDATA) } }" >gwdata.ld 98 99 libecm_la_SOURCES += Fgw.c 100 # Use ecm_DEPENDENCIES += gwdata.ld instead? Is that possible? 101 ecm_DEPENDENCIES = gwdata.ld 102 ecm_LDFLAGS = $(AM_LDFLAGS) -Wl,gwdata.ld 103 Fgwtest : Fgw.c gwdata.ld 104 $(CC) $(CFLAGS) $(CPPFLAGS) -g -DTESTDRIVE -Wl,gwdata.ld -o Fgwtest Fgw.c libecm.a $(LIBS) 105endif 106 107include_HEADERS = ecm.h 108noinst_HEADERS = basicdefs.h ecm-impl.h ecm-gmp.h ecm-ecm.h sp.h longlong.h \ 109 ecm-params.h mpmod.h ecm-gpu.h cudakernel.h addlaws.h \ 110 getprime_r.h ecm_int.h \ 111 aprtcle/mpz_aprcl.h aprtcle/jacobi_sum.h 112 113EXTRA_DIST = test.pm1 test.pp1 test.ecm README.lib INSTALL-ecm ecm.xml \ 114 pentium4/params.h x86_64/core2/params.h x86_64/k8/params.h \ 115 athlon/params.h x86/params.h ia64/params.h arm/params.h \ 116 powerpc64/params.h powerpc32/params.h sparc64/params.h \ 117 hppa/params.h mips/params.h x86_64/corei7/params.h \ 118 generic/params.h testlong.pp1 testlong.pm1 testlong.ecm \ 119 getprime_r.h cudakernel_default.cu test.gpuecm README.gpu c155 \ 120 test_dummy2.save test_dummy.save test_prime95.save M877.save \ 121 M997.save test_Z2102.n 122 123DIST_SUBDIRS = athlon pentium4 x86_64 powerpc64 aprtcle build.vc12 124 125DISTCLEANFILES = config.m4 126 127if WANT_GPU 128.cu.lo: cudakernel.h 129 $(LIBTOOL) --tag=CC --mode=compile $(NVCC) --compile $(NVCCFLAGS) $(CPPFLAGS) -o $@ $^ -static 130endif 131 132ecm-params: bench_mulredc$(EXEEXT) tune$(EXEEXT) 133 @echo Optimising parameters for your system, please be patient. 134 test -z "ecm-params.h" || rm -f ecm-params.h 135 ./bench_mulredc > ecm-params.h 136 ./tune >> ecm-params.h 137 138check_PROGRAMS = ecm$(EXEEXT) 139 140dist_check_SCRIPTS = test.pp1 test.pm1 test.ecm 141if WANT_GPU 142dist_check_SCRIPTS += test.gpuecm 143endif 144 145TESTS = $(dist_check_SCRIPTS) 146TESTS_ENVIRONMENT = $(VALGRIND) 147 148# see https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html 149# this is only needed for "make longcheck" below 150export GMPECM_DATADIR = $(srcdir) 151 152longcheck: ecm$(EXEEXT) 153 $(srcdir)/test.pp1 "$(VALGRIND) ./ecm$(EXEEXT)" 154 $(srcdir)/test.pp1 "$(VALGRIND) ./ecm$(EXEEXT) -no-ntt" 155 $(srcdir)/test.pp1 "$(VALGRIND) ./ecm$(EXEEXT) -modmuln" 156 $(srcdir)/test.pp1 "$(VALGRIND) ./ecm$(EXEEXT) -redc" 157 $(srcdir)/test.pp1 "$(VALGRIND) ./ecm$(EXEEXT) -mpzmod" 158 $(srcdir)/test.pm1 "$(VALGRIND) ./ecm$(EXEEXT)" 159 $(srcdir)/test.pm1 "$(VALGRIND) ./ecm$(EXEEXT) -no-ntt" 160 $(srcdir)/test.pm1 "$(VALGRIND) ./ecm$(EXEEXT) -modmuln" 161 $(srcdir)/test.pm1 "$(VALGRIND) ./ecm$(EXEEXT) -redc" 162 $(srcdir)/test.pm1 "$(VALGRIND) ./ecm$(EXEEXT) -mpzmod" 163 $(srcdir)/test.ecm "$(VALGRIND) ./ecm$(EXEEXT)" 164 $(srcdir)/test.ecm "$(VALGRIND) ./ecm$(EXEEXT) -no-ntt" 165 $(srcdir)/test.ecm "$(VALGRIND) ./ecm$(EXEEXT) -modmuln" 166 $(srcdir)/test.ecm "$(VALGRIND) ./ecm$(EXEEXT) -redc" 167 $(srcdir)/test.ecm "$(VALGRIND) ./ecm$(EXEEXT) -mpzmod" 168 $(srcdir)/test.ecm "$(VALGRIND) ./ecm$(EXEEXT) -treefile tree" 169 $(srcdir)/testlong.pp1 "$(VALGRIND) ./ecm$(EXEEXT)" 170 $(srcdir)/testlong.pm1 "$(VALGRIND) ./ecm$(EXEEXT)" 171 $(srcdir)/testlong.ecm "$(VALGRIND) ./ecm$(EXEEXT)" 172 173## to be sure ecm.1 is considered as source 174## (cf section "Man pages" in the automake manual) 175dist_man_MANS = ecm.1 176 177## If ./configure found xsltproc and docbook.xsl, add a rule for building 178## the manpage. If they were not found, this rule is omitted and make will 179## never try to rebuild the man page, which would result in an error anyway. 180if MAKE_MANPAGE 181ecm.1: $(srcdir)/ecm.xml 182 xsltproc -o ecm.1 $(XSLDIR)/manpages/docbook.xsl $(srcdir)/ecm.xml 183endif 184