xref: /petsc/config/BuildSystem/config/packages/netlib-lapack.py (revision 09b68a49ed2854d1e4985cc2aa6af33c7c4e69b3)
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