summaryrefslogtreecommitdiff
path: root/tools/mbench/Makefile
blob: f9728903a787fa6aee49c73930f0b48c6443c275 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Copyright 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# Contributed by Patrick Pelissier, INRIA.
# 
# This file is part of the MPFR Library.
# 
# The MPFR 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 3 of the License, or (at your
# option) any later version.
# 
# The MPFR 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 MPFR Library; see the file COPYING.LESSER.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
# MA 02110-1301, USA.
 
AR=ar
CC=gcc
CXX=g++
RANLIB=ranlib
CFLAGS=-O2 -fomit-frame-pointer -Wall -g
RM=rm -f
CP=cp -f
MV=mv -f

GMP=/usr
MPFR=$(PWD)/..
PARI=$(GMP)
NTL=$(GMP)
CLN=$(GMP)
MAPM=$(GMP)
ARPREC=$(GMP)
CRLIBM=$(GMP)
LIDIA=/localdisk/lidia/

MPFR_INCLUDE=$(MPFR)/include
MPFR_LIB=$(MPFR)/lib

########################################################
VERSION=0.6.1
NAME=mbench

#########################################################
.SUFFIXES: .c .o

# add -I$(MPFR) and -I$(GMP) if GMP/MPFR build directories are given
# Warning! If $(MPFR) and/or $(GMP) is regarded as a "system directory",
# this may give unexpected results[*]; in particular, with GCC, the option
# is ignored in such a case.
# [*] http://austingroupbugs.net/view.php?id=187
ifeq	($(CC),gcc)
INCLUDES=`test -f $(GMP_INCLUDE)/gmp.h && echo "-include $(GMP_INCLUDE)/gmp.h"` `test -f $(GMP)/gmp.h && echo "-include $(GMP)/gmp.h"` `test -f $(MPFR_INCLUDE)/mpfr.h && echo "-include $(MPFR_INCLUDE)/mpfr.h"` `test -f $(MPFR)/mpfr.h && echo "-include $(MPFR)/mpfr.h"` -I. -I$(MPFR_INCLUDE) -I$(MPFR) -I$(GMP)/include/ -I$(GMP)
else
INCLUDES=-I. -I$(MPFR_INCLUDE) -I$(MPFR) -I$(GMP)/include/ -I$(GMP)
endif

# search first for real install, then for build directory
LIBS=`(test -f $(MPFR_LIB)/libmpfr.a && echo $(MPFR_LIB)/libmpfr.a)` `(test -f $(MPFR)/.libs/libmpfr.a && echo $(MPFR)/.libs/libmpfr.a)` `(test -f $(GMP)/lib/libgmp.a && echo $(GMP)/lib/libgmp.a)` `(test -f $(GMP)/.libs/libgmp.a && echo $(GMP)/.libs/libgmp.a)`

XLIBS=`test -f $(PARI)/lib/libpari.a && echo $(PARI)/lib/libpari.a` \
      `test -f $(NTL)/lib/libntl.a && echo $(NTL)/lib/libntl.a`     \
      `test -f $(CLN)/lib/libcln.a && echo $(CLN)/lib/libcln.a`     \
      `test -f $(ARPREC)/lib/libmp.a && echo $(ARPREC)/lib/libmp.a` \
      `test -f $(CRLIBM)/lib/libcrlibm.a && echo $(CRLIBM)/lib/libcrlibm.a` \
      -lm

TARGETS=mpfr-v4 mpfr-v6 mpfr-gfx mfv5
DIST=Makefile mpfr-v4.c mpfr-v6.c mpfr-gfx.c generate.c timp.h mfv5-arprec.cc mfv5-cln.cc mfv5-mpfr.cc mfv5-pari.cc mfv5.cc mfv5-mpf.cc mfv5-ntl.cc mfv5-lidia.cc mfv5.h mfv5-void.cc mfv5-libc.cc mfv5-crlibm.cc

##############################################################

.c.o:
	$(CC) $(INCLUDES) $(CFLAGS) -c $<

.cc.o:
	$(CXX) $(INCLUDES) $(CFLAGS) -c $<

all: mfv5

clean:
	$(RM) *.o *~ $(TARGETS) float.data

mpfr-v4: mpfr-v4.o
	$(CC) $(CFLAGS) mpfr-v4.o $(LIBS) -o mpfr-v4

mpfr-v6: mpfr-v6.o float.data
	$(CC) $(CFLAGS) mpfr-v6.o $(LIBS) -lm -o mpfr-v6

mpfr-gfx: mpfr-gfx.o
	$(CC) $(CFLAGS) mpfr-gfx.o $(LIBS) -o mpfr-gfx

float.data: generate.o
	$(CC) $(CFLAGS) generate.o $(LIBS) -o generate-float-data
	./generate-float-data
	$(RM) generate-float-data

mfv5-ntl.o: mfv5-ntl.cc mfv5.h
	@(test -f $(NTL)/lib/libntl.a && $(CXX) $(INCLUDES) -I$(NTL)/include/ $(CFLAGS) -c $< && echo "Using NTL.") || ($(CXX) -c mfv5-void.cc -o mfv5-ntl.o && echo "NTL not found.")

mfv5-arprec.o: mfv5-arprec.cc mfv5.h
	@(test -f $(ARPREC)/lib/libmp.a && $(CXX) $(INCLUDES) -I$(ARPREC)/include/ $(CFLAGS) -c $< && echo "Using ARPREC.") || ($(CXX) -c mfv5-void.cc -o mfv5-arprec.o && echo "Arprec not found.")

mfv5-pari.o: mfv5-pari.cc mfv5.h
	@(test -f $(PARI)/lib/libpari.a && $(CXX) $(INCLUDES) -I$(PARI)/include/ $(CFLAGS) -c $< && echo "Using PARI.") || ($(CXX) -c mfv5-void.cc -o mfv5-pari.o && echo "PARI not found.")

mfv5-cln.o: mfv5-cln.cc mfv5.h
	@(test -f $(CLN)/lib/libcln.a && $(CXX) $(INCLUDES) -I$(CLN)/include/ $(CFLAGS) -c $< && echo "Using CLN.") || ($(CXX) -c mfv5-void.cc -o mfv5-cln.o && echo "CLN not found.")

mfv5-lidia.o: mfv5-lidia.cc mfv5.h
	@(test -f $(LIDIA)/lib/liblidia.a && $(CXX) $(INCLUDES) -I$(LIDIA)/include/ $(CFLAGS) -c $< && echo "Using LIDIA.") || ($(CXX) -c mfv5-void.cc -o mfv5-lidia.o && echo "LIDIA not found.")

mfv5-crlibm.o: mfv5-crlibm.cc mfv5.h
	@(test -f $(CRLIBM)/lib/libcrlibm.a && $(CXX) $(INCLUDES) -I$(CRLIBM)/include/ $(CFLAGS) -c $< && echo "Using CRLIBM.") || ($(CXX) -c mfv5-void.cc -o mfv5-crlibm.o && echo "CRLIBM not found.")

mfv5:	mfv5.o mfv5-mpfr.o mfv5-mpf.o mfv5-ntl.o mfv5-arprec.o mfv5-pari.o mfv5-cln.o mfv5-libc.o mfv5-crlibm.o
	$(CXX) $(CFLAGS) mfv5.o mfv5-mpfr.o mfv5-mpf.o mfv5-ntl.o mfv5-arprec.o mfv5-pari.o mfv5-cln.o mfv5-libc.o mfv5-crlibm.o $(XLIBS) $(LIBS) -o mfv5

dist: $(DIST)
	rm -fr $(NAME)-$(VERSION) $(NAME)-$(VERSION).tar $(NAME)-$(VERSION).tar.bz2
	mkdir $(NAME)-$(VERSION)
	cp $(DIST) $(NAME)-$(VERSION)
	tar cf $(NAME)-$(VERSION).tar $(NAME)-$(VERSION)
	bzip2 $(NAME)-$(VERSION).tar
	rm -fr $(NAME)-$(VERSION)