1import config.package 2 3class Configure(config.package.CMakePackage): 4 def __init__(self, framework): 5 config.package.CMakePackage.__init__(self, framework) 6 self.gitcommit = 'v3.12.0' 7 self.download = ['git://https://github.com/Reference-LAPACK/lapack.git','https://github.com/Reference-LAPACK/lapack/archive/'+self.gitcommit+'.tar.gz'] 8 self.downloaddirnames = ['netlib-lapack','lapack'] 9 self.includes = [] 10 self.liblist = [['libnlapack.a','libnblas.a']] 11 self.precisions = ['single','double'] 12 self.functionsFortran = 1 13 self.buildLanguages = ['FC'] 14 self.minCmakeVersion = (2,8,3) 15 self.cinterface = False 16 return 17 18 def setupHelp(self, help): 19 import nargs 20 config.package.Package.setupHelp(self, help) 21 help.addArgument(self.PACKAGE,'-with-netlib-lapack-c-bindings=<bool>',nargs.ArgBool(None,0,'Use/build the C interface (CBLAS and LAPACKE) for '+self.name+' (PETSc does not need it)')) 22 return 23 24 def setupDependencies(self, framework): 25 config.package.CMakePackage.setupDependencies(self, framework) 26 self.compilerFlags = framework.require('config.compilerFlags', self) 27 return 28 29 def formCMakeConfigureArgs(self): 30 args = config.package.CMakePackage.formCMakeConfigureArgs(self) 31 if not self.cinterface: 32 # use a prefix to avoid conflict with another LAPACK already installed in the system 33 args.append('-DLIBRARY_PREFIX=n') 34 else: 35 # build the C interface; in this case we do not use a prefix because PaStiX build 36 # system does not support it (requires CBLAS/LAPACKE) 37 args.append('-DCBLAS:BOOL=ON') 38 args.append('-DLAPACKE:BOOL=ON') 39 return args 40 41 def generateLibList(self, framework): 42 if self.cinterface: 43 self.liblist = [['liblapacke.a','libcblas.a','liblapack.a','libblas.a']] 44 return config.package.Package.generateLibList(self, framework) 45 46 def configureLibrary(self): 47 self.cinterface = self.argDB['with-netlib-lapack-c-bindings'] 48 config.package.Package.configureLibrary(self) 49