1#===============================================================================
2# UFconfig.mk:  common configuration file for the SuiteSparse
3#===============================================================================
4
5# This file contains all configuration settings for all packages authored or
6# co-authored by Tim Davis at the University of Florida:
7#
8# Package Version       Description
9# ------- -------       -----------
10# AMD	  1.2 or later  approximate minimum degree ordering
11# COLAMD  2.4 or later  column approximate minimum degree ordering
12# CCOLAMD 1.0 or later  constrained column approximate minimum degree ordering
13# CAMD    any		constrained approximate minimum degree ordering
14# UMFPACK 4.5 or later	sparse LU factorization, with the BLAS
15# CHOLMOD any		sparse Cholesky factorization, update/downdate
16# KLU	  0.8 or later  sparse LU factorization, BLAS-free
17# BTF	  0.8 or later  permutation to block triangular form
18# LDL	  1.2 or later	concise sparse LDL'
19# LPDASA  any		linear program solve (dual active set algorithm)
20#
21# The UFconfig directory and the above packages should all appear in a single
22# directory, in order for the Makefile's within each package to find this file.
23#
24# To enable an option of the form "# OPTION = ...", edit this file and
25# delete the "#" in the first column of the option you wish to use.
26
27#------------------------------------------------------------------------------
28# Generic configuration
29#------------------------------------------------------------------------------
30
31# C compiler and compiler flags:  These will normally not give you optimal
32# performance.  You should select the optimization parameters that are best
33# for your system.  On Linux, use "CFLAGS = -O3 -fexceptions" for example.
34CC = FF_CC
35CFLAGS = -I../../AMD/Include -I../../UFconfig FF_CFLAGS
36
37
38# ranlib, and ar, for generating libraries
39RANLIB = FF_RANLIB
40AR = FF_AR FF_ARFLAGS
41
42# delete and rename a file
43RM = rm -f
44MV = mv -f
45
46# Fortran compiler (not normally required)
47F77 = FF_F77
48F77FLAGS =FF_F77FLAGS
49F77LIB = #FF_F77LIB
50
51# C and Fortran libraries
52LIB = FF_LIB
53
54# For compiling MATLAB mexFunctions
55MEX = mex -O
56
57# Which version of MAKE you are using (default is "make")
58# MAKE = make
59# MAKE = gmake
60
61#------------------------------------------------------------------------------
62# BLAS and LAPACK configuration:
63#------------------------------------------------------------------------------
64
65# UMFPACK and CHOLMOD both require the BLAS.  CHOLMOD also requires LAPACK.
66# See Kazushige Goto's BLAS at http://www.cs.utexas.edu/users/flame/goto/ or
67# http://www.tacc.utexas.edu/~kgoto/ for the best BLAS to use with CHOLMOD.
68# LAPACK is at http://www.netlib.org/lapack/ .  You can use the standard
69# Fortran LAPACK along with Goto's BLAS to obtain very good performance.
70# CHOLMOD gets a peak numeric factorization rate of 3.6 Gflops on a 3.2 GHz
71# Pentium 4 (512K cache, 4GB main memory) with the Goto BLAS, and 6 Gflops
72# on a 2.5Ghz dual-core AMD Opteron.
73
74# These settings will probably not work, since there is no fixed convention for
75# naming the BLAS and LAPACK library (*.a or *.so) files.  Assume the Goto
76# BLAS are available.
77#BLAS = -lgoto -lgfortran -lgfortranbegin
78#LAPACK = -llapack
79
80# The BLAS might not contain xerbla, an error-handling routine for LAPACK and
81# the BLAS.  Also, the standard xerbla requires the Fortran I/O library, and
82# stops the application program if an error occurs.  A C version of xerbla
83# distributed with this software (UFconfig/xerbla/libcerbla.a) includes a
84# Fortran-callable xerbla routine that prints nothing and does not stop the
85# application program.  This is optional.
86# XERBLA = ../../UFconfig/xerbla/libcerbla.a
87
88# If you wish to use the XERBLA in LAPACK and/or the BLAS instead,
89# use this option:
90#XERBLA =
91
92# If you wish to use the Fortran UFconfig/xerbla/xerbla.f instead, use this:
93# XERBLA = ../../UFconfig/xerbla/libxerbla.a
94
95#------------------------------------------------------------------------------
96# METIS, optionally used by CHOLMOD
97#------------------------------------------------------------------------------
98
99# If you do not have METIS, or do not wish to use it in CHOLMOD, you must
100# compile CHOLMOD with the -DNPARTITION flag.  You must also use the
101# "METIS =" option, below.
102
103# The path is relative to where it is used, in CHOLMOD/Lib, CHOLMOD/MATLAB, etc.
104# You may wish to use an absolute path.  METIS is optional.  Compile
105# CHOLMOD with -DNPARTITION if you do not wish to use METIS.
106METIS_PATH = # FF_DWL/include
107METIS = # FF_DWL/lib/metis/libmetis.a
108
109# If you use CHOLMOD_CONFIG = -DNPARTITION then you must use the following
110# options:
111# METIS_PATH =
112# METIS =
113
114#------------------------------------------------------------------------------
115# UMFPACK configuration:
116#------------------------------------------------------------------------------
117
118# Configuration flags for UMFPACK.  See UMFPACK/Source/umf_config.h for details.
119#
120# -DNBLAS	do not use the BLAS.  UMFPACK will be very slow.
121# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by
122#  		LAPACK and the BLAS (defaults to 'int')
123# -DNSUNPERF	do not use the Sun Perf. Library (default is use it on Solaris)
124# -DNPOSIX	do not use POSIX routines sysconf and times.
125# -DGETRUSAGE	use getrusage
126# -DNO_TIMER	do not use any timing routines
127# -DNRECIPROCAL	do not multiply by the reciprocal
128# -DNO_DIVIDE_BY_ZERO	do not divide by zero
129
130UMFPACK_CONFIG = FF_CONFIG
131
132#------------------------------------------------------------------------------
133# CHOLMOD configuration
134#------------------------------------------------------------------------------
135
136# CHOLMOD Library Modules, which appear in libcholmod.a:
137# Core		requires: none
138# Check		requires: Core
139# Cholesky	requires: Core, AMD, COLAMD.  optional: Partition, Supernodal
140# MatrixOps	requires: Core
141# Modify	requires: Core
142# Partition	requires: Core, CCOLAMD, METIS.  optional: Cholesky
143# Supernodal	requires: Core, BLAS, LAPACK
144#
145# CHOLMOD test/demo Modules (all are GNU GPL, do not appear in libcholmod.a):
146# Tcov		requires: Core, Check, Cholesky, MatrixOps, Modify, Supernodal
147#		optional: Partition
148# Valgrind	same as Tcov
149# Demo		requires: Core, Check, Cholesky, MatrixOps, Supernodal
150#		optional: Partition
151#
152# Configuration flags:
153# -DNCHECK	    do not include the Check module.	   License GNU LGPL
154# -DNCHOLESKY	    do not include the Cholesky module.	   License GNU LGPL
155# -DNPARTITION	    do not include the Partition module.   License GNU LGPL
156#		    also do not include METIS.
157# -DNGPL	    do not include any GNU GPL Modules in the CHOLMOD library:
158# -DNMATRIXOPS	    do not include the MatrixOps module.   License GNU GPL
159# -DNMODIFY	    do not include the Modify module.      License GNU GPL
160# -DNSUPERNODAL     do not include the Supernodal module.  License GNU GPL
161#
162# -DNPRINT	    do not print anything.
163# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by
164#  		    	LAPACK and the BLAS (defaults to 'int')
165# -DNSUNPERF	    for Solaris only.  If defined, do not use the Sun
166#			Performance Library
167
168CHOLMOD_CONFIG = -DNPARTITION
169
170#------------------------------------------------------------------------------
171# Linux
172#------------------------------------------------------------------------------
173
174# Using default compilers:
175# CC = gcc
176# CFLAGS = -O3
177
178# alternatives:
179# CFLAGS = -g -fexceptions \
180#   	-Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
181#    	-Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi
182# CFLAGS = -O3 -fexceptions \
183#   	-Wall -W -Werror -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
184#    	-Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi
185#CFLAGS = -O3 -fexceptions -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
186# CFLAGS = -O3
187
188# consider:
189# -fforce-addr -fmove-all-movables -freduce-all-givs -ftsp-ordering
190# -frename-registers -ffast-math -funroll-loops
191
192# Using the Goto BLAS:
193# BLAS = -lgoto -lfrtbegin -lg2c $(XERBLA) -lpthread
194
195# Using Intel's icc and ifort compilers:
196#   (does not work for mexFunctions unless you add a mexopts.sh file)
197# F77 = ifort
198# CC = icc
199# CFLAGS = -O3 -xN -vec_report=0
200# CFLAGS = -g
201# old (broken): CFLAGS = -ansi -O3 -ip -tpp7 -xW -vec_report0
202
203# 64bit:
204# F77FLAGS = -O -m64
205# CFLAGS = -O3 -fexceptions -m64
206# BLAS = -lgoto64 -lfrtbegin -lg2c -lpthread $(XERBLA)
207# LAPACK = -llapack64
208
209
210# SUSE Linux 10.1, AMD Opteron
211# F77 = gfortran
212# BLAS = -lgoto_opteron64 -lgfortran
213
214# SUSE Linux 10.1, Intel Pentium
215# F77 = gfortran
216# BLAS = -lgoto -lgfortran
217
218#------------------------------------------------------------------------------
219# Solaris
220#------------------------------------------------------------------------------
221
222# 32-bit
223# CFLAGS = -KPIC -dalign -xc99=%none -Xc -xlibmieee -xO5 -xlibmil
224
225# 64-bit
226# CFLAGS = -KPIC -dalign -xc99=%none -Xc -xlibmieee -xO5 -xlibmil -xarch=v9
227
228# BLAS = -xlic_lib=sunperf
229# LAPACK =
230
231#------------------------------------------------------------------------------
232# Compaq Alpha
233#------------------------------------------------------------------------------
234
235# 64-bit mode only
236# CFLAGS = -O2 -std1
237# BLAS = -ldxml
238# LAPACK =
239
240#------------------------------------------------------------------------------
241# Macintosh
242#------------------------------------------------------------------------------
243
244# CC = gcc
245# CFLAGS = -O3 -fno-common -no-cpp-precomp -fexceptions
246# LIB = -lstdc++
247# BLAS = -framework Accelerate
248# LAPACK = -framework Accelerate
249
250#------------------------------------------------------------------------------
251# IBM RS 6000
252#------------------------------------------------------------------------------
253
254# BLAS = -lessl
255# LAPACK =
256
257# 32-bit mode:
258# CFLAGS   = -O4 -qipa -qmaxmem=16384 -qproto
259# F77FLAGS = -O4 -qipa -qmaxmem=16384
260
261# 64-bit mode:
262# CFLAGS   = -O4 -qipa -qmaxmem=16384 -q64 -qproto
263# F77FLAGS = -O4 -qipa -qmaxmem=16384 -q64
264# AR = ar -X64
265
266#------------------------------------------------------------------------------
267# SGI IRIX
268#------------------------------------------------------------------------------
269
270# BLAS = -lscsl
271# LAPACK =
272
273# 32-bit mode
274# CFLAGS = -O
275
276# 64-bit mode (32 bit int's and 64-bit long's):
277# CFLAGS = -64
278# F77FLAGS = -64
279
280# SGI doesn't have ranlib
281# RANLIB = echo
282
283#------------------------------------------------------------------------------
284# AMD Opteron (64 bit)
285#------------------------------------------------------------------------------
286
287# BLAS = -lgoto_opteron64 -lg2c
288# LAPACK = -llapack_opteron64
289
290# SUSE Linux 10.1, AMD Opteron
291# F77 = gfortran
292# BLAS = -lgoto_opteron64 -lgfortran
293# LAPACK = -llapack_opteron64
294
295#------------------------------------------------------------------------------
296# remove object files and profile output
297#------------------------------------------------------------------------------
298
299CLEAN = *.o *.obj *.ln *.bb *.bbg *.da *.tcov *.gcov gmon.out *.bak *.d
300