xref: /petsc/config/BuildSystem/config/packages/pragmatic.py (revision bb1d7374b64f295b2ed5ff23b89435d65e905a54)
1import config.package
2
3class Configure(config.package.CMakePackage):
4  def __init__(self, framework):
5    import os
6    config.package.CMakePackage.__init__(self, framework)
7    self.download          = ['GitOnly']
8    self.gitcommit         = '134468543d3c6052803c69fca3a714f6e2ce0275'
9    self.giturls           = ['https://github.com/meshadaptation/pragmatic.git']
10    self.functions         = ['pragmatic_2d_init']
11    self.includes          = ['pragmatic.h']
12    self.liblist           = [['libpragmatic.a']]
13    self.needsMath         = 1
14    self.includedir        = os.path.join('include', 'pragmatic')
15    return
16
17  def setupDependencies(self, framework):
18    config.package.CMakePackage.setupDependencies(self, framework)
19    self.compilerFlags   = framework.require('config.compilerFlags', self)
20    self.sharedLibraries = framework.require('PETSc.options.sharedLibraries', self)
21    self.scalartypes     = framework.require('PETSc.options.scalarTypes',self)
22    self.indexTypes      = framework.require('PETSc.options.indexTypes', self)
23    self.metis           = framework.require('config.packages.metis', self)
24    return
25
26  def formCMakeConfigureArgs(self):
27    if not self.cmake.found:
28      raise RuntimeError('CMake > 2.5 is needed to build Pragmatic')
29
30    args = config.package.CMakePackage.formCMakeConfigureArgs(self)
31    args.append('-DMETIS_DIR='+self.metis.getInstallDir())
32    args.append('-DENABLE_VTK=OFF')
33    args.append('-DENABLE_OPENMP=OFF')
34    if self.indexTypes.integerSize == 64:
35      raise RuntimeError('Pragmatic cannot be built with 64-bit integers')
36    if self.scalartypes.precision == 'single':
37      raise RuntimeError('Pragmatic cannot be built with single precision')
38    elif self.scalartypes.precision == 'quad':
39      raise RuntimeError('Pragmatic cannot be built with quad precision')
40    return args
41