[BACK]Return to Makefile.am CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / tune

File: [local] / OpenXM_contrib / gmp / tune / Attic / Makefile.am (download)

Revision 1.1.1.1 (vendor branch), Sat Sep 9 14:13:19 2000 UTC (23 years, 8 months ago) by maekawa
Branch: GMP
CVS Tags: maekawa-ipv6, VERSION_3_1_1, VERSION_3_1, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3
Changes since 1.1: +0 -0 lines

Import gmp 3.1

## Process this file with automake to generate Makefile.in

# Copyright (C) 2000 Free Software Foundation, Inc.
#
# This file is part of the GNU MP Library.
#
# The GNU MP Library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or (at your
# option) any later version.
#
# The GNU MP Library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.


AUTOMAKE_OPTIONS = gnu no-dependencies $(top_builddir)/ansi2knr

INCLUDES = -I$(top_srcdir)

EXTRA_DIST = alpha.asm pentium.asm sparcv9.asm hppa.asm hppa2.asm
noinst_HEADERS = speed.h

# No dependency on libgmp, so can use libgmptune instead for tune program
EXTRA_LTLIBRARIES = libspeed.la
libspeed_la_SOURCES = common.c time.c noop.c
libspeed_la_DEPENDENCIES = $(SPEED_CYCLECOUNTER_OBJS)
libspeed_la_LIBADD = $(libspeed_la_DEPENDENCIES)

# Both libspeed and the programs are built static-only since static is
# fastest and will be preferred by users who care about maximizing speed.
#
# Actually libtool doesn't seem to pass -static through to gcc, it only
# chooses the ".a" versions of libtool libraries.  Rerun the gcc link
# invocation with -static if you want a static link of libc and libm.
#
LDFLAGS = -static
LDADD = libspeed.la $(top_builddir)/libgmp.la -lm

EXTRA_PROGRAMS = speed speed-ext tuneup

tuneup_SOURCES = tuneup.c
tuneup_DEPENDENCIES = libspeed.la libgmptune.a
tuneup_LDADD = $(tuneup_DEPENDENCIES) -lm

# Don't know how to get tuneup$U.lo to depend on sqr_basecase.h, so just do
# an explicit make.  A plain "make tuneup" will fail if used directly.
tune:
	$(MAKE) $(AM_MAKEFLAGS) sqr_basecase.h tuneup$(EXEEXT)
	./tuneup

allprogs: sqr_basecase.h $(EXTRA_PROGRAMS)


speed_SOURCES = speed.c

SQR_CLEANFILES = sqr_basecase.c sqr_basecase.h sqr_basecase.asm

CLEANFILES = $(EXTRA_PROGRAMS) $(EXTRA_LTLIBRARIES) \
	$(SQR_CLEANFILES) libgmptune.a libgmptmp.a \
	stg.gnuplot stg.data \
	mtg.gnuplot mtg.data \
	fibg.gnuplot fibg.data \
	graph.gnuplot graph.data


# This bit like mpn/Makefile.am

# COMPILE minus CC.  FIXME: Really pass *_CFLAGS to CPP?
COMPILE_FLAGS =	\
	$(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)

SUFFIXES = .asm
.asm.o:
	$(M4) $(M4FLAGS) -DOPERATION_$* $< >tmp-$*.s
	$(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@
	rm -f tmp-$*.s
.asm.obj:
	$(M4) $(M4FLAGS) -DOPERATION_$* `cygpath -w $<` >tmp-$*.s
	$(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@
	rm -f tmp-$*.s
.asm.lo:
	echo "$(COMPILE_FLAGS)"
	$(M4) $(M4FLAGS) -DPIC -DOPERATION_$* $< >tmp-$*.s
	$(LIBTOOL) --mode=compile $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@
	$(M4) $(M4FLAGS) -DOPERATION_$* $< >tmp-$*.s
	$(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $*.o
	rm -f tmp-$*.s


# Recompiled versions of $(LIBGMPTUNE_OBJS) are always used.  sqr_basecase.o
# is replaced if it's mpn/generic/sqr_basecase.c (due to the fixed size
# temporary array), or sqr_basecase.asm with a KARATSUBA_SQR_THRESHOLD_MAX
# (because that says it normally works only up to KARATSUBA_SQR_THRESHOLD).

SQR_GENERIC_MAX = 200

LIBGMPTUNE_OBJS = \
  mul_n.o mul_fft.o mul.o \
  bz_divrem_n.o tdiv_qr.o fib_ui.o powm.o gcd.o gcdext.o

sqr_basecase.h: libgmptune.a


# "cp -f" is not portable (eg. it fails on SunOS)
# "ar r" is going to be a bit fragile because there's more than one mul.o in
# libgmp.a.

libgmptune.a: $(top_builddir)/libgmp.la $(LIBGMPTUNE_OBJS)
	rm -f libgmptmp.a
	eval `$(LIBTOOL) --config | grep '^objdir='` ; \
		cp $(top_builddir)/$$objdir/libgmp.a libgmptmp.a
	$(AR) r libgmptmp.a $(LIBGMPTUNE_OBJS)
	rm -f $(SQR_CLEANFILES)
	echo "" >sqr_basecase.h
	if test -f $(top_builddir)/mpn/sqr_basecase.c; then		\
	  $(MAKE) $(AM_MAKEFLAGS) sqr-basecase-generic;			\
        else								\
	  if grep KARATSUBA_SQR_THRESHOLD_MAX				\
	      $(top_builddir)/mpn/sqr_basecase.asm >/dev/null; then	\
	    $(MAKE) $(AM_MAKEFLAGS) sqr-basecase-asm;			\
	  fi								\
	fi
	$(RANLIB) libgmptmp.a
	rm -f libgmptune.a
	mv libgmptmp.a libgmptune.a

sqr-basecase-generic:
	cp $(top_builddir)/mpn/sqr_basecase.c .
	$(MAKE) $(AM_MAKEFLAGS) \
		CFLAGS='$(CFLAGS) -DKARATSUBA_SQR_THRESHOLD=$(SQR_GENERIC_MAX)' \
		sqr_basecase.o
	$(AR) r libgmptmp.a sqr_basecase.o
	echo '#define KARATSUBA_SQR_MAX  $(SQR_GENERIC_MAX)' >sqr_basecase.h

sqr-basecase-asm:
	cp $(top_builddir)/mpn/sqr_basecase.asm .
	$(MAKE) $(AM_MAKEFLAGS) \
		M4FLAGS='$(M4FLAGS) -DKARATSUBA_SQR_THRESHOLD_OVERRIDE=KARATSUBA_SQR_THRESHOLD_MAX' \
		sqr_basecase.o
	ar r libgmptmp.a sqr_basecase.o
	echo "#define KARATSUBA_SQR_MAX  `sed -n 's/def...(KARATSUBA_SQR_THRESHOLD_MAX, *\([0-9]*\))/\1/p' sqr_basecase.asm`" >sqr_basecase.h


mul_n.o: $(top_builddir)/mpn/mul_n.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/mul_n.c

mul_fft.o: $(top_builddir)/mpn/mul_fft.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/mul_fft.c

mul.o: $(top_builddir)/mpn/mul.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/mul.c

bz_divrem_n.o: $(top_builddir)/mpn/bz_divrem_n.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/bz_divrem_n.c

tdiv_qr.o: $(top_builddir)/mpn/tdiv_qr.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/tdiv_qr.c

fib_ui.o: $(top_srcdir)/mpz/fib_ui.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_srcdir)/mpz/fib_ui.c

powm.o: $(top_srcdir)/mpz/powm.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_srcdir)/mpz/powm.c

gcd.o: $(top_builddir)/mpn/gcd.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/gcd.c

gcdext.o: $(top_builddir)/mpn/gcdext.c
	$(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/gcdext.c




# "mk" is multiplication in the karatsuba range
# "st" is squaring in the toom-cook range, etc
# "g" forms produce graphs

mk:
	./speed -s 5-40 -c mpn_mul_basecase mpn_kara_mul_n

MTS = -s 50-150 -c
mt:
	./speed $(MTS) mpn_kara_mul_n mpn_toom3_mul_n | less
mtg:
	./speed $(MTS) -P mtg mpn_kara_mul_n mpn_toom3_mul_n

sk:
	./speed -s 5-40 -c mpn_sqr_basecase mpn_kara_sqr_n

STS = -s 50-150 -c
st:
	./speed $(STS) mpn_kara_sqr_n mpn_toom3_sqr_n | less
stg:
	./speed $(STS) -P stg mpn_kara_sqr_n mpn_toom3_sqr_n

bz:
	./speed -s 5-40 -c mpn_bz_divrem_sb mpn_bz_divrem_n mpn_bz_tdiv_qr

fib:
	./speed -s 80-120 -c mpz_fib_ui
fibg:
	./speed -s 10-300 -P fibg mpz_fib_ui


gcd:
	./speed -s 1-20 -c mpn_gcd


graph:
	./speed -s 1-5000 -f 1.02 -P graph mpn_mul_n mpn_sqr
	gnuplot graph.gnuplot