xref: /petsc/config/BuildSystem/config/packages/pragmatic.py (revision 0ad0c1ec7a872c20da3a5c6725b8f75b66f77acf)
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.gitcommit         = 'ef941eddf50a6de307a5d6b54b5d44504dd3ce89' #joe/old-no-debug Sep 15, 2021 - with fixes for 1dfe81f in master Sep 21, 2018
8    self.download          = ['git://https://github.com/meshadaptation/pragmatic.git','https://github.com/meshadaptation/pragmatic/archive/'+self.gitcommit+'.tar.gz']
9    self.functions         = ['pragmatic_2d_init']
10    self.includes          = ['pragmatic/pragmatic.h']
11    self.liblist           = [['libpragmatic.a']]
12    self.need35policy      = True
13    return
14
15  def setupDependencies(self, framework):
16    config.package.CMakePackage.setupDependencies(self, framework)
17    self.compilerFlags   = framework.require('config.compilerFlags', self)
18    self.sharedLibraries = framework.require('PETSc.options.sharedLibraries', self)
19    self.scalartypes     = framework.require('PETSc.options.scalarTypes',self)
20    self.indexTypes      = framework.require('PETSc.options.indexTypes', self)
21    self.mpi             = framework.require('config.packages.MPI',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.mpi, self.metis, self.eigen, self.mathlib]
26    return
27
28  def formCMakeConfigureArgs(self):
29    args = config.package.CMakePackage.formCMakeConfigureArgs(self)
30    args.append('-DMETIS_DIR='+self.metis.directory)
31    args.append('-DENABLE_VTK=OFF')
32    args.append('-DENABLE_OPENMP=OFF')
33    args.append('-DEIGEN_INCLUDE_DIR='+self.eigen.include[0])
34
35    args.append('-DMPI_C_INCLUDE_PATH:STRING=""')
36    args.append('-DMPI_C_COMPILE_FLAGS:STRING=""')
37    args.append('-DMPI_C_LINK_FLAGS:STRING=""')
38    args.append('-DMPI_C_LIBRARIES:STRING=""')
39    args.append('-DMPI_CXX_INCLUDE_PATH:STRING=""')
40    args.append('-DMPI_CXX_COMPILE_FLAGS:STRING=""')
41    args.append('-DMPI_CXX_LINK_FLAGS:STRING=""')
42    args.append('-DMPI_CXX_LIBRARIES:STRING=""')
43
44    if self.indexTypes.integerSize == 64:
45      raise RuntimeError('Pragmatic cannot be built with 64-bit integers')
46    if self.scalartypes.precision == 'single':
47      raise RuntimeError('Pragmatic cannot be built with single precision')
48    elif self.scalartypes.precision == '__float128':
49      raise RuntimeError('Pragmatic cannot be built with quad precision')
50    return args
51