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