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