xref: /petsc/config/BuildSystem/config/packages/pragmatic.py (revision 487a658c8b32ba712a1dc8280daad2fd70c1dcd9)
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          = ['git://https://github.com/meshadaptation/pragmatic.git']
8    self.gitcommit         = 'f56251de6ff39680d4ead2140b635e16fa6d604e'
9    self.functions         = ['pragmatic_2d_init']
10    self.includes          = ['pragmatic.h']
11    self.liblist           = [['libpragmatic.a']]
12    self.includedir        = os.path.join('include', 'pragmatic')
13    self.requirescxx11     = 1
14    return
15
16  def setupDependencies(self, framework):
17    config.package.CMakePackage.setupDependencies(self, framework)
18    self.compilerFlags   = framework.require('config.compilerFlags', self)
19    self.sharedLibraries = framework.require('PETSc.options.sharedLibraries', self)
20    self.scalartypes     = framework.require('PETSc.options.scalarTypes',self)
21    self.indexTypes      = framework.require('PETSc.options.indexTypes', self)
22    self.metis           = framework.require('config.packages.metis', self)
23    self.eigen           = framework.require('config.packages.eigen', self)
24    self.mathlib         = framework.require('config.packages.mathlib',self)
25    self.deps            = [self.metis, self.eigen, self.mathlib]
26    return
27
28  def formCMakeConfigureArgs(self):
29    if not self.cmake.found:
30      raise RuntimeError('CMake > 2.5 is needed to build Pragmatic')
31
32    args = config.package.CMakePackage.formCMakeConfigureArgs(self)
33    args.append('-DMETIS_DIR='+self.metis.getInstallDir())
34    args.append('-DENABLE_VTK=OFF')
35    args.append('-DENABLE_OPENMP=OFF')
36    args.append('-DEIGEN_INCLUDE_DIR='+self.eigen.include[0])
37    if not self.compilerFlags.debugging:
38      args.append('-DCMAKE_BUILD_TYPE=Release')
39    if self.checkSharedLibrariesEnabled():
40      args.append('-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON')
41    if self.indexTypes.integerSize == 64:
42      raise RuntimeError('Pragmatic cannot be built with 64-bit integers')
43    if self.scalartypes.precision == 'single':
44      raise RuntimeError('Pragmatic cannot be built with single precision')
45    elif self.scalartypes.precision == '__float128':
46      raise RuntimeError('Pragmatic cannot be built with quad precision')
47    return args
48