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

Annotation of OpenXM_contrib/gmp/tune/Makefile.am, Revision 1.1.1.1

1.1       maekawa     1: ## Process this file with automake to generate Makefile.in
                      2:
                      3: # Copyright (C) 2000 Free Software Foundation, Inc.
                      4: #
                      5: # This file is part of the GNU MP Library.
                      6: #
                      7: # The GNU MP Library is free software; you can redistribute it and/or modify
                      8: # it under the terms of the GNU Lesser General Public License as published by
                      9: # the Free Software Foundation; either version 2.1 of the License, or (at your
                     10: # option) any later version.
                     11: #
                     12: # The GNU MP Library is distributed in the hope that it will be useful, but
                     13: # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     14: # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
                     15: # License for more details.
                     16: #
                     17: # You should have received a copy of the GNU Lesser General Public License
                     18: # along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
                     19: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
                     20: # MA 02111-1307, USA.
                     21:
                     22:
                     23: AUTOMAKE_OPTIONS = gnu no-dependencies $(top_builddir)/ansi2knr
                     24:
                     25: INCLUDES = -I$(top_srcdir)
                     26:
                     27: EXTRA_DIST = alpha.asm pentium.asm sparcv9.asm hppa.asm hppa2.asm
                     28: noinst_HEADERS = speed.h
                     29:
                     30: # No dependency on libgmp, so can use libgmptune instead for tune program
                     31: EXTRA_LTLIBRARIES = libspeed.la
                     32: libspeed_la_SOURCES = common.c time.c noop.c
                     33: libspeed_la_DEPENDENCIES = $(SPEED_CYCLECOUNTER_OBJS)
                     34: libspeed_la_LIBADD = $(libspeed_la_DEPENDENCIES)
                     35:
                     36: # Both libspeed and the programs are built static-only since static is
                     37: # fastest and will be preferred by users who care about maximizing speed.
                     38: #
                     39: # Actually libtool doesn't seem to pass -static through to gcc, it only
                     40: # chooses the ".a" versions of libtool libraries.  Rerun the gcc link
                     41: # invocation with -static if you want a static link of libc and libm.
                     42: #
                     43: LDFLAGS = -static
                     44: LDADD = libspeed.la $(top_builddir)/libgmp.la -lm
                     45:
                     46: EXTRA_PROGRAMS = speed speed-ext tuneup
                     47:
                     48: tuneup_SOURCES = tuneup.c
                     49: tuneup_DEPENDENCIES = libspeed.la libgmptune.a
                     50: tuneup_LDADD = $(tuneup_DEPENDENCIES) -lm
                     51:
                     52: # Don't know how to get tuneup$U.lo to depend on sqr_basecase.h, so just do
                     53: # an explicit make.  A plain "make tuneup" will fail if used directly.
                     54: tune:
                     55:        $(MAKE) $(AM_MAKEFLAGS) sqr_basecase.h tuneup$(EXEEXT)
                     56:        ./tuneup
                     57:
                     58: allprogs: sqr_basecase.h $(EXTRA_PROGRAMS)
                     59:
                     60:
                     61: speed_SOURCES = speed.c
                     62:
                     63: SQR_CLEANFILES = sqr_basecase.c sqr_basecase.h sqr_basecase.asm
                     64:
                     65: CLEANFILES = $(EXTRA_PROGRAMS) $(EXTRA_LTLIBRARIES) \
                     66:        $(SQR_CLEANFILES) libgmptune.a libgmptmp.a \
                     67:        stg.gnuplot stg.data \
                     68:        mtg.gnuplot mtg.data \
                     69:        fibg.gnuplot fibg.data \
                     70:        graph.gnuplot graph.data
                     71:
                     72:
                     73: # This bit like mpn/Makefile.am
                     74:
                     75: # COMPILE minus CC.  FIXME: Really pass *_CFLAGS to CPP?
                     76: COMPILE_FLAGS =        \
                     77:        $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
                     78:
                     79: SUFFIXES = .asm
                     80: .asm.o:
                     81:        $(M4) $(M4FLAGS) -DOPERATION_$* $< >tmp-$*.s
                     82:        $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@
                     83:        rm -f tmp-$*.s
                     84: .asm.obj:
                     85:        $(M4) $(M4FLAGS) -DOPERATION_$* `cygpath -w $<` >tmp-$*.s
                     86:        $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@
                     87:        rm -f tmp-$*.s
                     88: .asm.lo:
                     89:        echo "$(COMPILE_FLAGS)"
                     90:        $(M4) $(M4FLAGS) -DPIC -DOPERATION_$* $< >tmp-$*.s
                     91:        $(LIBTOOL) --mode=compile $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@
                     92:        $(M4) $(M4FLAGS) -DOPERATION_$* $< >tmp-$*.s
                     93:        $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $*.o
                     94:        rm -f tmp-$*.s
                     95:
                     96:
                     97: # Recompiled versions of $(LIBGMPTUNE_OBJS) are always used.  sqr_basecase.o
                     98: # is replaced if it's mpn/generic/sqr_basecase.c (due to the fixed size
                     99: # temporary array), or sqr_basecase.asm with a KARATSUBA_SQR_THRESHOLD_MAX
                    100: # (because that says it normally works only up to KARATSUBA_SQR_THRESHOLD).
                    101:
                    102: SQR_GENERIC_MAX = 200
                    103:
                    104: LIBGMPTUNE_OBJS = \
                    105:   mul_n.o mul_fft.o mul.o \
                    106:   bz_divrem_n.o tdiv_qr.o fib_ui.o powm.o gcd.o gcdext.o
                    107:
                    108: sqr_basecase.h: libgmptune.a
                    109:
                    110:
                    111: # "cp -f" is not portable (eg. it fails on SunOS)
                    112: # "ar r" is going to be a bit fragile because there's more than one mul.o in
                    113: # libgmp.a.
                    114:
                    115: libgmptune.a: $(top_builddir)/libgmp.la $(LIBGMPTUNE_OBJS)
                    116:        rm -f libgmptmp.a
                    117:        eval `$(LIBTOOL) --config | grep '^objdir='` ; \
                    118:                cp $(top_builddir)/$$objdir/libgmp.a libgmptmp.a
                    119:        $(AR) r libgmptmp.a $(LIBGMPTUNE_OBJS)
                    120:        rm -f $(SQR_CLEANFILES)
                    121:        echo "" >sqr_basecase.h
                    122:        if test -f $(top_builddir)/mpn/sqr_basecase.c; then             \
                    123:          $(MAKE) $(AM_MAKEFLAGS) sqr-basecase-generic;                 \
                    124:         else                                                           \
                    125:          if grep KARATSUBA_SQR_THRESHOLD_MAX                           \
                    126:              $(top_builddir)/mpn/sqr_basecase.asm >/dev/null; then     \
                    127:            $(MAKE) $(AM_MAKEFLAGS) sqr-basecase-asm;                   \
                    128:          fi                                                            \
                    129:        fi
                    130:        $(RANLIB) libgmptmp.a
                    131:        rm -f libgmptune.a
                    132:        mv libgmptmp.a libgmptune.a
                    133:
                    134: sqr-basecase-generic:
                    135:        cp $(top_builddir)/mpn/sqr_basecase.c .
                    136:        $(MAKE) $(AM_MAKEFLAGS) \
                    137:                CFLAGS='$(CFLAGS) -DKARATSUBA_SQR_THRESHOLD=$(SQR_GENERIC_MAX)' \
                    138:                sqr_basecase.o
                    139:        $(AR) r libgmptmp.a sqr_basecase.o
                    140:        echo '#define KARATSUBA_SQR_MAX  $(SQR_GENERIC_MAX)' >sqr_basecase.h
                    141:
                    142: sqr-basecase-asm:
                    143:        cp $(top_builddir)/mpn/sqr_basecase.asm .
                    144:        $(MAKE) $(AM_MAKEFLAGS) \
                    145:                M4FLAGS='$(M4FLAGS) -DKARATSUBA_SQR_THRESHOLD_OVERRIDE=KARATSUBA_SQR_THRESHOLD_MAX' \
                    146:                sqr_basecase.o
                    147:        ar r libgmptmp.a sqr_basecase.o
                    148:        echo "#define KARATSUBA_SQR_MAX  `sed -n 's/def...(KARATSUBA_SQR_THRESHOLD_MAX, *\([0-9]*\))/\1/p' sqr_basecase.asm`" >sqr_basecase.h
                    149:
                    150:
                    151: mul_n.o: $(top_builddir)/mpn/mul_n.c
                    152:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/mul_n.c
                    153:
                    154: mul_fft.o: $(top_builddir)/mpn/mul_fft.c
                    155:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/mul_fft.c
                    156:
                    157: mul.o: $(top_builddir)/mpn/mul.c
                    158:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/mul.c
                    159:
                    160: bz_divrem_n.o: $(top_builddir)/mpn/bz_divrem_n.c
                    161:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/bz_divrem_n.c
                    162:
                    163: tdiv_qr.o: $(top_builddir)/mpn/tdiv_qr.c
                    164:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/tdiv_qr.c
                    165:
                    166: fib_ui.o: $(top_srcdir)/mpz/fib_ui.c
                    167:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_srcdir)/mpz/fib_ui.c
                    168:
                    169: powm.o: $(top_srcdir)/mpz/powm.c
                    170:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_srcdir)/mpz/powm.c
                    171:
                    172: gcd.o: $(top_builddir)/mpn/gcd.c
                    173:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/gcd.c
                    174:
                    175: gcdext.o: $(top_builddir)/mpn/gcdext.c
                    176:        $(COMPILE) -DTUNE_PROGRAM_BUILD=1 -c $(top_builddir)/mpn/gcdext.c
                    177:
                    178:
                    179:
                    180:
                    181: # "mk" is multiplication in the karatsuba range
                    182: # "st" is squaring in the toom-cook range, etc
                    183: # "g" forms produce graphs
                    184:
                    185: mk:
                    186:        ./speed -s 5-40 -c mpn_mul_basecase mpn_kara_mul_n
                    187:
                    188: MTS = -s 50-150 -c
                    189: mt:
                    190:        ./speed $(MTS) mpn_kara_mul_n mpn_toom3_mul_n | less
                    191: mtg:
                    192:        ./speed $(MTS) -P mtg mpn_kara_mul_n mpn_toom3_mul_n
                    193:
                    194: sk:
                    195:        ./speed -s 5-40 -c mpn_sqr_basecase mpn_kara_sqr_n
                    196:
                    197: STS = -s 50-150 -c
                    198: st:
                    199:        ./speed $(STS) mpn_kara_sqr_n mpn_toom3_sqr_n | less
                    200: stg:
                    201:        ./speed $(STS) -P stg mpn_kara_sqr_n mpn_toom3_sqr_n
                    202:
                    203: bz:
                    204:        ./speed -s 5-40 -c mpn_bz_divrem_sb mpn_bz_divrem_n mpn_bz_tdiv_qr
                    205:
                    206: fib:
                    207:        ./speed -s 80-120 -c mpz_fib_ui
                    208: fibg:
                    209:        ./speed -s 10-300 -P fibg mpz_fib_ui
                    210:
                    211:
                    212: gcd:
                    213:        ./speed -s 1-20 -c mpn_gcd
                    214:
                    215:
                    216: graph:
                    217:        ./speed -s 1-5000 -f 1.02 -P graph mpn_mul_n mpn_sqr
                    218:        gnuplot graph.gnuplot

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>