Subversion Repositories slepc-dev

Rev

Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
808 dsic.upv.es!antodo 1
#!/usr/bin/env python
1377 slepc 2
#
3
#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1672 slepc 4
#  SLEPc - Scalable Library for Eigenvalue Problem Computations
2575 eromero 5
#  Copyright (c) 2002-2011, Universitat Politecnica de Valencia, Spain
1377 slepc 6
#
1672 slepc 7
#  This file is part of SLEPc.
8
#    
9
#  SLEPc is free software: you can redistribute it and/or modify it under  the
10
#  terms of version 3 of the GNU Lesser General Public License as published by
11
#  the Free Software Foundation.
12
#
13
#  SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY
14
#  WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS
15
#  FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for
16
#  more details.
17
#
18
#  You  should have received a copy of the GNU Lesser General  Public  License
19
#  along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
1377 slepc 20
#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
21
#
808 dsic.upv.es!antodo 22
 
23
import os
24
import sys
939 dsic.upv.es!jroman 25
import time
2269 jroman 26
import commands
2478 jroman 27
import tempfile
28
import shutil
808 dsic.upv.es!antodo 29
 
2467 jroman 30
# Use en_US as language so that compiler messages are in English
2282 jroman 31
if 'LC_LOCAL' in os.environ and os.environ['LC_LOCAL'] != '' and os.environ['LC_LOCAL'] != 'en_US' and os.environ['LC_LOCAL']!= 'en_US.UTF-8': os.environ['LC_LOCAL'] = 'en_US.UTF-8'
32
if 'LANG' in os.environ and os.environ['LANG'] != '' and os.environ['LANG'] != 'en_US' and os.environ['LANG'] != 'en_US.UTF-8': os.environ['LANG'] = 'en_US.UTF-8'
33
 
2211 jroman 34
# should be run from the toplevel
35
configDir = os.path.abspath('config')
36
if not os.path.isdir(configDir):
37
  raise RuntimeError('Run configure from $SLEPC_DIR, not '+os.path.abspath('.'))
38
sys.path.insert(0, configDir)
39
 
1527 slepc 40
import petscversion
912 dsic.upv.es!antodo 41
import petscconf
923 dsic.upv.es!antodo 42
import log
912 dsic.upv.es!antodo 43
import check
44
import arpack
45
import blzpack
46
import trlan  
47
import lapack
1187 slepc 48
import primme
2423 jroman 49
import blopex
1714 jroman 50
import slepc4py
808 dsic.upv.es!antodo 51
 
2698 jroman 52
if not hasattr(sys, 'version_info') or not sys.version_info[0] == 2 or not sys.version_info[1] >= 4:
53
  print '*****  You must have Python2 version 2.4 or higher to run ./configure.py   ******'
861 dsic.upv.es!antodo 54
  print '*           Python is easy to install for end users or sys-admin.               *'
55
  print '*                   http://www.python.org/download/                             *'
56
  print '*                                                                               *'
912 dsic.upv.es!antodo 57
  print '*            You CANNOT configure SLEPc without Python                          *'
861 dsic.upv.es!antodo 58
  print '*********************************************************************************'
59
  sys.exit(4)
60
 
808 dsic.upv.es!antodo 61
# support a few standard configure option types
62
for l in range(1,len(sys.argv)):
63
  name = sys.argv[l]
64
  if name.startswith('--enable'):
65
    sys.argv[l] = name.replace('--enable','--with')
66
    if name.find('=') == -1: sys.argv[l] += '=1'
67
  if name.startswith('--disable'):
68
    sys.argv[l] = name.replace('--disable','--with')
69
    if name.find('=') == -1: sys.argv[l] += '=0'
70
    elif name.endswith('=1'): sys.argv[l].replace('=1','=0')
71
  if name.startswith('--without'):
72
    sys.argv[l] = name.replace('--without','--with')
73
    if name.find('=') == -1: sys.argv[l] += '=0'
74
    elif name.endswith('=1'): sys.argv[l].replace('=1','=0')
75
 
76
# Check configure parameters
77
havearpack = 0
78
arpackdir = ''
79
arpacklibs = []
80
haveblzpack = 0
81
blzpackdir = ''
82
blzpacklibs = []
83
havetrlan = 0
84
trlandir = ''
85
trlanlibs = []
1187 slepc 86
haveprimme = 0
87
primmedir = ''
1189 slepc 88
primmelibs = []
2423 jroman 89
getblopex = 0
90
haveblopex = 0
91
blopexurl = ''
1714 jroman 92
getslepc4py = 0
1366 slepc 93
prefixdir = ''
808 dsic.upv.es!antodo 94
 
95
for i in sys.argv[1:]:
96
  if   i.startswith('--with-arpack-dir='):
97
    arpackdir = i.split('=')[1]
98
    havearpack = 1
912 dsic.upv.es!antodo 99
  elif i.startswith('--with-arpack-flags='):
808 dsic.upv.es!antodo 100
    arpacklibs = i.split('=')[1].split(',')
101
    havearpack = 1
102
  elif i.startswith('--with-arpack'):
103
    havearpack = not i.endswith('=0')
104
  elif i.startswith('--with-blzpack-dir='):
105
    blzpackdir = i.split('=')[1]
106
    haveblzpack = 1
912 dsic.upv.es!antodo 107
  elif i.startswith('--with-blzpack-flags='):
808 dsic.upv.es!antodo 108
    blzpacklibs = i.split('=')[1].split(',')
109
    haveblzpack = 1
110
  elif i.startswith('--with-blzpack'):
111
    haveblzpack = not i.endswith('=0')
112
  elif i.startswith('--with-trlan-dir='):
113
    trlandir = i.split('=')[1]
114
    havetrlan = 1
912 dsic.upv.es!antodo 115
  elif i.startswith('--with-trlan-flags='):
808 dsic.upv.es!antodo 116
    trlanlibs = i.split('=')[1].split(',')
117
    havetrlan = 1
118
  elif i.startswith('--with-trlan'):
119
    havetrlan = not i.endswith('=0')
1187 slepc 120
  elif i.startswith('--with-primme-dir'):
121
    primmedir = i.split('=')[1]
122
    haveprimme = 1
1189 slepc 123
  elif i.startswith('--with-primme-flags='):
124
    primmelibs = i.split('=')[1].split(',')
125
    haveprimme = 1
1239 slepc 126
  elif i.startswith('--with-primme'):
127
    haveprimme = not i.endswith('=0')
2423 jroman 128
  elif i.startswith('--download-blopex'):
129
    getblopex = not i.endswith('=0')
130
    try: blopexurl = i.split('=')[1]
131
    except IndexError: pass
1714 jroman 132
  elif i.startswith('--download-slepc4py'):
133
    getslepc4py = not i.endswith('=0')
1366 slepc 134
  elif i.startswith('--prefix='):
135
    prefixdir = i.split('=')[1]
912 dsic.upv.es!antodo 136
  elif i.startswith('--h') or i.startswith('-h') or i.startswith('-?'):
939 dsic.upv.es!jroman 137
    print 'SLEPc Configure Help'
138
    print '-'*80
2478 jroman 139
    print '  --prefix=<dir>                   : Specify location to install SLEPc (e.g., /usr/local)'
939 dsic.upv.es!jroman 140
    print 'ARPACK:'
141
    print '  --with-arpack                    : Indicate if you wish to test for ARPACK (PARPACK)'
142
    print '  --with-arpack-dir=<dir>          : Indicate the directory for ARPACK libraries'
143
    print '  --with-arpack-flags=<flags>      : Indicate comma-separated flags for linking ARPACK'
144
    print 'BLZPACK:'
145
    print '  --with-blzpack                   : Indicate if you wish to test for BLZPACK'
146
    print '  --with-blzpack-dir=<dir>         : Indicate the directory for BLZPACK libraries'
147
    print '  --with-blzpack-flags=<flags>     : Indicate comma-separated flags for linking BLZPACK'
148
    print 'TRLAN:'
149
    print '  --with-trlan                     : Indicate if you wish to test for TRLAN'
150
    print '  --with-trlan-dir=<dir>           : Indicate the directory for TRLAN libraries'
151
    print '  --with-trlan-flags=<flags>       : Indicate comma-separated flags for linking TRLAN'
1187 slepc 152
    print 'PRIMME:'
1188 slepc 153
    print '  --with-primme                    : Indicate if you wish to test for PRIMME'
1187 slepc 154
    print '  --with-primme-dir=<dir>          : Indicate the directory for PRIMME libraries'
1189 slepc 155
    print '  --with-primme-flags=<flags>      : Indicate comma-separated flags for linking PRIMME'
2423 jroman 156
    print 'BLOPEX:'
157
    print '  --download-blopex                : Download and install BLOPEX in SLEPc directory'
1714 jroman 158
    print 'slepc4py:'
159
    print '  --download-slepc4py              : Download and install slepc4py in SLEPc directory'
912 dsic.upv.es!antodo 160
    sys.exit(0)
861 dsic.upv.es!antodo 161
  else:
2157 jroman 162
    sys.exit('ERROR: Invalid argument ' + i +'. Use -h for help')
808 dsic.upv.es!antodo 163
 
1871 antodo 164
prefixinstall = not prefixdir==''
165
 
912 dsic.upv.es!antodo 166
# Check if enviroment is ok
167
print 'Checking environment...'
1871 antodo 168
if 'SLEPC_DIR' in os.environ:
169
  slepcdir = os.environ['SLEPC_DIR']
170
  if not os.path.exists(slepcdir) or not os.path.exists(os.sep.join([slepcdir,'config'])):
171
    sys.exit('ERROR: SLEPC_DIR enviroment variable is not valid')
172
  if os.path.realpath(os.getcwd()) != os.path.realpath(slepcdir):
173
    sys.exit('ERROR: SLEPC_DIR is not the current directory')
174
else:
175
  slepcdir = os.getcwd();
176
  if not os.path.exists(os.sep.join([slepcdir,'config'])):
177
    sys.exit('ERROR: Current directory is not valid')
1659 slepc 178
 
1871 antodo 179
if 'PETSC_DIR' in os.environ:
180
  petscdir = os.environ['PETSC_DIR']
181
  if not os.path.exists(petscdir):
182
    sys.exit('ERROR: PETSC_DIR enviroment variable is not valid')
183
else:
184
  if prefixdir:
185
    petscdir = prefixdir
186
    os.environ['PETSC_DIR'] = petscdir
187
  else:
188
    sys.exit('ERROR: PETSC_DIR enviroment variable is not set')
912 dsic.upv.es!antodo 189
 
1527 slepc 190
# Check PETSc version
191
petscversion.Load(petscdir)
2491 jroman 192
if petscversion.VERSION < '3.2':
1527 slepc 193
  sys.exit('ERROR: This SLEPc version is not compatible with PETSc version '+petscversion.VERSION)
194
 
1105 slepc 195
# Check some information about PETSc configuration
912 dsic.upv.es!antodo 196
petscconf.Load(petscdir)
2393 jroman 197
if not petscconf.PRECISION in ['double','single','__float128']:
1105 slepc 198
  sys.exit('ERROR: This SLEPc version does not work with '+petscconf.PRECISION+' precision')
2157 jroman 199
if prefixinstall and not petscconf.ISINSTALL:
1528 slepc 200
  sys.exit('ERROR: SLEPc cannot be configured for non-source installation if PETSc is not configured in the same way.')
912 dsic.upv.es!antodo 201
 
2269 jroman 202
# Check whether this is a working copy of the Subversion repository
203
subversion = 0
2290 jroman 204
if os.path.exists(os.sep.join([slepcdir,'src','docs'])) and os.path.exists(os.sep.join([slepcdir,'.svn'])):
2269 jroman 205
  (result, output) = commands.getstatusoutput('svn info')
206
  if result:
207
    print 'WARNING: SLEPC_DIR appears to be a subversion working copy, but svn is not found in PATH'
208
  else:
209
    subversion = 1
2467 jroman 210
    svnrev = '-1'
211
    svndate = '-1'
2269 jroman 212
    for line in output.split('\n'):
213
      if line.startswith('Last Changed Rev: '):
214
        svnrev = line.split('Rev: ')[-1]
215
      if line.startswith('Last Changed Date: '):
216
        svndate = line.split('Date: ')[-1]
217
 
1714 jroman 218
# Create architecture directory and configuration files
1523 slepc 219
archdir = os.sep.join([slepcdir,petscconf.ARCH])
1105 slepc 220
if not os.path.exists(archdir):
221
  try:
222
    os.mkdir(archdir)
223
  except:
224
    sys.exit('ERROR: cannot create architecture directory ' + archdir)
1523 slepc 225
confdir = os.sep.join([archdir,'conf'])
226
if not os.path.exists(confdir):
227
  try:
228
    os.mkdir(confdir)
229
  except:
230
    sys.exit('ERROR: cannot create configuration directory ' + confdir)
1553 slepc 231
incdir = os.sep.join([archdir,'include'])
232
if not os.path.exists(incdir):
233
  try:
234
    os.mkdir(incdir)
235
  except:
236
    sys.exit('ERROR: cannot create include directory ' + incdir)
2424 jroman 237
libdir = os.sep.join([archdir,'lib'])
238
if not os.path.exists(libdir):
239
  try:
240
    os.mkdir(libdir)
241
  except:
242
    sys.exit('ERROR: cannot create lib directory ' + libdir)
1105 slepc 243
try:
2265 jroman 244
  slepcvars = open(os.sep.join([confdir,'slepcvariables']),'w')
1366 slepc 245
  if not prefixdir:
1527 slepc 246
    prefixdir = archdir
2358 jroman 247
  slepcvars.write('SLEPC_DESTDIR = ' + prefixdir +'\n')
2360 jroman 248
  testruns = set(petscconf.TEST_RUNS.split())
2537 jroman 249
  testruns = testruns.intersection(set(['C','F90','Fortran','C_NoComplex','Fortran_NoComplex']))
2358 jroman 250
  slepcvars.write('TEST_RUNS = ' + ' '.join(testruns) +'\n')
1105 slepc 251
except:
1523 slepc 252
  sys.exit('ERROR: cannot create configuration file in ' + confdir)
1714 jroman 253
try:
254
  slepcrules = open(os.sep.join([confdir,'slepcrules']),'w')
255
except:
256
  sys.exit('ERROR: cannot create rules file in ' + confdir)
2250 jroman 257
try:
2265 jroman 258
  slepcconf = open(os.sep.join([incdir,'slepcconf.h']),'w')
259
  slepcconf.write('#if !defined(__SLEPCCONF_H)\n')
2269 jroman 260
  slepcconf.write('#define __SLEPCCONF_H\n\n')
261
  if subversion:
262
    slepcconf.write('#ifndef SLEPC_VERSION_SVN\n#define SLEPC_VERSION_SVN ' + svnrev + '\n#endif\n\n')
263
    slepcconf.write('#ifndef SLEPC_VERSION_DATE_SVN\n#define SLEPC_VERSION_DATE_SVN "' + svndate + '"\n#endif\n\n')
2282 jroman 264
  slepcconf.write('#ifndef SLEPC_LIB_DIR\n#define SLEPC_LIB_DIR "' + prefixdir + '/lib"\n#endif\n\n')
2265 jroman 265
except:
2282 jroman 266
  sys.exit('ERROR: cannot create configuration header in ' + confdir)
2265 jroman 267
try:
2250 jroman 268
  cmake = open(os.sep.join([confdir,'SLEPcConfig.cmake']),'w')
269
except:
270
  sys.exit('ERROR: cannot create CMake configuration file in ' + confdir)
2159 jroman 271
if prefixinstall and os.path.isfile(os.sep.join([prefixdir,'include','slepc.h'])):
1955 jroman 272
  sys.exit('ERROR: prefix directory ' + prefixdir + ' contains files from a previous installation')
923 dsic.upv.es!antodo 273
 
2478 jroman 274
# Create temporary directory and makefile for running tests
275
try:
276
  tmpdir = tempfile.mkdtemp(prefix='slepc-')
277
  if not os.path.isdir(tmpdir): os.mkdir(tmpdir)
278
except:
279
  sys.exit('ERROR: cannot create temporary directory')
280
try:
281
  makefile = open(os.sep.join([tmpdir,'makefile']),'w')
282
  makefile.write('checklink: checklink.o chkopts\n')
283
  makefile.write('\t${CLINKER} -o checklink checklink.o ${TESTFLAGS} ${PETSC_KSP_LIB}\n')
284
  makefile.write('\t@${RM} -f checklink checklink.o\n')
285
  makefile.write('LOCDIR = ./\n')
2679 jroman 286
  makefile.write('include ${PETSC_DIR}/conf/variables\n')
287
  makefile.write('include ${PETSC_DIR}/conf/rules\n')
2478 jroman 288
  makefile.close()
289
except:
290
  sys.exit('ERROR: cannot create makefile in temporary directory')
291
 
1105 slepc 292
# Open log file
1523 slepc 293
log.Open(os.sep.join([confdir,'configure.log']))
2257 jroman 294
log.write('='*80)
295
log.write('Starting Configure Run at '+time.ctime(time.time()))
296
log.write('Configure Options: '+str.join(' ',sys.argv))
297
log.write('Working directory: '+os.getcwd())
298
log.write('Python version:\n' + sys.version)
299
log.write('make: ' + petscconf.MAKE)
300
log.write('PETSc source directory: ' + petscdir)
301
log.write('PETSc install directory: ' + petscconf.DESTDIR)
302
log.write('PETSc version: ' + petscversion.VERSION)
303
log.write('PETSc architecture: ' + petscconf.ARCH)
304
log.write('SLEPc source directory: ' + slepcdir)
305
log.write('SLEPc install directory: ' + prefixdir)
306
log.write('='*80)
939 dsic.upv.es!jroman 307
 
912 dsic.upv.es!antodo 308
# Check if PETSc is working
1043 slepc 309
log.Println('Checking PETSc installation...')
2491 jroman 310
if petscversion.VERSION > '3.2':
1527 slepc 311
  log.Println('WARNING: PETSc version '+petscversion.VERSION+' is newer than SLEPc version')
312
if petscversion.RELEASE != '1':
1070 slepc 313
  log.Println('WARNING: using PETSc development version')
1527 slepc 314
if petscconf.ISINSTALL:
2217 jroman 315
  if os.path.realpath(petscconf.DESTDIR) != os.path.realpath(petscdir):
1527 slepc 316
    log.Println('WARNING: PETSC_DIR does not point to PETSc installation path')
2478 jroman 317
if not check.Link(tmpdir,[],[],[]):
1105 slepc 318
  log.Exit('ERROR: Unable to link with PETSc')
912 dsic.upv.es!antodo 319
 
808 dsic.upv.es!antodo 320
# Check for external packages
321
if havearpack:
2478 jroman 322
  arpacklibs = arpack.Check(slepcconf,slepcvars,cmake,tmpdir,arpackdir,arpacklibs)
808 dsic.upv.es!antodo 323
if haveblzpack:
2478 jroman 324
  blzpacklibs = blzpack.Check(slepcconf,slepcvars,cmake,tmpdir,blzpackdir,blzpacklibs)
808 dsic.upv.es!antodo 325
if havetrlan:
2478 jroman 326
  trlanlibs = trlan.Check(slepcconf,slepcvars,cmake,tmpdir,trlandir,trlanlibs)
1187 slepc 327
if haveprimme:
2478 jroman 328
  primmelibs = primme.Check(slepcconf,slepcvars,cmake,tmpdir,primmedir,primmelibs)
2423 jroman 329
if getblopex:
2478 jroman 330
  blopexlibs = blopex.Install(slepcconf,slepcvars,cmake,tmpdir,blopexurl,archdir)
2423 jroman 331
  haveblopex = 1
808 dsic.upv.es!antodo 332
 
1530 slepc 333
# Check for missing LAPACK functions
2478 jroman 334
missing = lapack.Check(slepcconf,slepcvars,cmake,tmpdir)
1530 slepc 335
 
1714 jroman 336
# Download and install slepc4py
337
if getslepc4py:
338
  slepc4py.Install()
1717 jroman 339
slepc4py.addMakeRule(slepcrules,prefixdir,prefixinstall,getslepc4py)
1714 jroman 340
 
2285 jroman 341
# Make Fortran stubs if necessary
2571 jroman 342
if subversion and hasattr(petscconf,'FC'):
343
  try:
344
    import generatefortranstubs
345
    generatefortranstubs.main(petscconf.BFORT)
346
  except AttributeError:
347
    sys.exit('ERROR: cannot generate Fortran stubs; try configuring PETSc with --download-sowing or use a mercurial version of PETSc')
2285 jroman 348
 
2257 jroman 349
# CMake stuff
2753 jroman 350
cmake.write('set (SLEPC_PACKAGE_LIBS "${ARPACK_LIB}" "${BLZPACK_LIB}" "${TRLAN_LIB}" "${PRIMME_LIB}" "${BLOPEX_LIB}" )\n')
2475 jroman 351
cmake.write('set (SLEPC_PACKAGE_INCLUDES "${PRIMME_INCLUDE}")\n')
352
cmake.write('find_library (PETSC_LIB petsc HINTS ${PETSc_BINARY_DIR}/lib )\n')
2728 jroman 353
cmake.write('''
354
if (NOT PETSC_LIB) # Interpret missing libpetsc to mean that PETSc was built --with-single-library=0
355
  set (PETSC_LIB "")
356
  foreach (pkg sys vec mat dm ksp snes ts)
357
    string (TOUPPER ${pkg} PKG)
358
    find_library(PETSC${PKG}_LIB "petsc${pkg}" HINTS ${PETSc_BINARY_DIR}/lib)
359
    list (APPEND PETSC_LIB "${PETSC${PKG}_LIB}")
360
  endforeach ()
361
endif ()
362
''')
2475 jroman 363
cmake.close()
364
cmakeok = False
365
if sys.version_info >= (2,5) and not petscconf.ISINSTALL and petscconf.BUILD_USING_CMAKE:
2281 jroman 366
  import cmakegen
367
  try:
368
    cmakegen.main(slepcdir,petscdir,petscarch=petscconf.ARCH)
369
  except (OSError), e:
370
    log.Exit('ERROR: Generating CMakeLists.txt failed:\n' + str(e))
2277 jroman 371
  import cmakeboot
372
  try:
2378 jroman 373
    cmakeok = cmakeboot.main(slepcdir,petscdir,petscarch=petscconf.ARCH,log=log)
2277 jroman 374
  except (OSError), e:
375
    log.Exit('ERROR: Booting CMake in PETSC_ARCH failed:\n' + str(e))
376
  except (ImportError, KeyError), e:
377
    log.Exit('ERROR: Importing cmakeboot failed:\n' + str(e))
2411 jroman 378
  # remove files created by PETSc's script
379
  for f in ['build.log','build.log.bkp','RDict.log']:
380
    try: os.remove(f)
381
    except OSError: pass
2475 jroman 382
if cmakeok:
383
  slepcvars.write('SLEPC_BUILD_USING_CMAKE = 1\n')
2257 jroman 384
 
2475 jroman 385
# Finish with configuration files
386
slepcvars.close()
387
slepcrules.close()
388
slepcconf.write('#endif\n')
389
slepcconf.close()
2478 jroman 390
shutil.rmtree(tmpdir)
2475 jroman 391
 
2250 jroman 392
# Print summary
923 dsic.upv.es!antodo 393
log.Println('')
2378 jroman 394
log.Println('='*79)
923 dsic.upv.es!antodo 395
log.Println('SLEPc Configuration')
2378 jroman 396
log.Println('='*79)
923 dsic.upv.es!antodo 397
log.Println('')
2217 jroman 398
log.Println('SLEPc directory:')
923 dsic.upv.es!antodo 399
log.Println(' '+slepcdir)
2217 jroman 400
if archdir != prefixdir:
401
  log.Println('SLEPc prefix directory:')
402
  log.Println(' '+prefixdir)  
1375 slepc 403
log.Println('PETSc directory:')
923 dsic.upv.es!antodo 404
log.Println(' '+petscdir)
405
log.Println('Architecture "'+petscconf.ARCH+'" with '+petscconf.PRECISION+' precision '+petscconf.SCALAR+' numbers')
808 dsic.upv.es!antodo 406
if havearpack:
923 dsic.upv.es!antodo 407
  log.Println('ARPACK library flags:')
408
  log.Println(' '+str.join(' ',arpacklibs))
808 dsic.upv.es!antodo 409
if haveblzpack:
923 dsic.upv.es!antodo 410
  log.Println('BLZPACK library flags:')
411
  log.Println(' '+str.join(' ',blzpacklibs))
970 slepc 412
if havetrlan:
413
  log.Println('TRLAN library flags:')
414
  log.Println(' '+str.join(' ',trlanlibs))
1187 slepc 415
if haveprimme:
416
  log.Println('PRIMME library flags:')
417
  log.Println(' '+str.join(' ',primmelibs))
2423 jroman 418
if haveblopex:
419
  log.Println('BLOPEX library flags:')
420
  log.Println(' '+str.join(' ',blopexlibs))
808 dsic.upv.es!antodo 421
if missing:
1043 slepc 422
  log.Println('LAPACK missing functions:')
923 dsic.upv.es!antodo 423
  log.Print('  ')
424
  for i in missing: log.Print(i)
425
  log.Println('')
426
  log.Println('')
939 dsic.upv.es!jroman 427
  log.Println('WARNING: Some SLEPc functionality will not be available')
923 dsic.upv.es!antodo 428
  log.Println('PLEASE reconfigure and recompile PETSc with a full LAPACK implementation')
912 dsic.upv.es!antodo 429
print
2378 jroman 430
print 'xxx'+'='*73+'xxx'
2475 jroman 431
if cmakeok: buildtype = 'cmake'
432
else: buildtype = 'legacy'
433
print ' Configure stage complete. Now build the SLEPc library with ('+buildtype+' build):'
2378 jroman 434
print '   make SLEPC_DIR=$PWD PETSC_DIR='+petscdir+' PETSC_ARCH='+petscconf.ARCH
435
print 'xxx'+'='*73+'xxx'
436
print