Update SymEngine package (#2919)
Take advantage of new configuration options in the @develop branch
This commit is contained in:
		 Jean-Paul Pelteret
					Jean-Paul Pelteret
				
			
				
					committed by
					
						 Todd Gamblin
						Todd Gamblin
					
				
			
			
				
	
			
			
			 Todd Gamblin
						Todd Gamblin
					
				
			
						parent
						
							db7a786d1c
						
					
				
				
					commit
					416e52c150
				
			| @@ -23,9 +23,10 @@ | ||||
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ############################################################################## | ||||
| from spack import * | ||||
| import sys | ||||
|  | ||||
|  | ||||
| class Symengine(Package): | ||||
| class Symengine(CMakePackage): | ||||
|     """SymEngine is a fast symbolic manipulation library, written in C++.""" | ||||
|  | ||||
|     homepage = "https://github.com/symengine/symengine" | ||||
| @@ -35,7 +36,9 @@ class Symengine(Package): | ||||
|     version('0.1.0', '41ad7daed61fc5a77c285eb6c7303425') | ||||
|     version('develop', git='https://github.com/symengine/symengine.git') | ||||
|  | ||||
|     variant('flint',        default=True, | ||||
|     variant('boostmp',      default=False, | ||||
|             description='Compile with Boost multi-precision integer library') | ||||
|     variant('flint',        default=False, | ||||
|             description='Compile with Flint integer library') | ||||
|     variant('mpc',          default=True, | ||||
|             description='Compile with MPC library') | ||||
| @@ -54,20 +57,22 @@ class Symengine(Package): | ||||
|     depends_on('cmake',    type='build') | ||||
|  | ||||
|     # Other dependencies | ||||
|     depends_on('gmp')  # mpir is a drop-in replacement for this | ||||
|     depends_on('mpc',      when='+mpc')  # Could also be built against mpir | ||||
|     depends_on('mpfr',     when='+mpfr')  # Could also be built against mpir | ||||
|     depends_on('flint',    when='+flint')  # Could also be built against mpir | ||||
|     depends_on('piranha',  when='+piranha~flint')  # Could also be built against mpir  # NOQA | ||||
|     # NOTE: mpir is a drop-in replacement for gmp | ||||
|     # NOTE: [mpc,mpfr,flint,piranha] could also be built against mpir | ||||
|     depends_on('boost',    when='+boostmp') | ||||
|     depends_on('gmp',      when='~boostmp') | ||||
|     depends_on('mpc',      when='+mpc~boostmp') | ||||
|     depends_on('mpfr',     when='+mpfr~boostmp') | ||||
|     depends_on('flint',    when='+flint~boostmp') | ||||
|     depends_on('piranha',  when='+piranha~flint~boostmp') | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|     def build_type(self): | ||||
|         # CMAKE_BUILD_TYPE should be  Debug | Release | ||||
|         return 'Release' | ||||
|  | ||||
|     def cmake_args(self): | ||||
|         spec = self.spec | ||||
|         options = [] | ||||
|         options.extend(std_cmake_args) | ||||
|  | ||||
|         # CMAKE_BUILD_TYPE should be Debug | Release | ||||
|         for word in options[:]: | ||||
|             if word.startswith('-DCMAKE_BUILD_TYPE'): | ||||
|                 options.remove(word) | ||||
|  | ||||
|         # See https://github.com/symengine/symengine/blob/master/README.md | ||||
|         # for build options | ||||
| @@ -76,38 +81,47 @@ def install(self, spec, prefix): | ||||
|             '-DWITH_SYMENGINE_RCP:BOOL=ON', | ||||
|             '-DWITH_SYMENGINE_THREAD_SAFE:BOOL=%s' % ( | ||||
|                 'ON' if ('+thread_safe' or '+openmp') in spec else 'OFF'), | ||||
|             '-DBUILD_TESTS:BOOL=ON', | ||||
|             '-DBUILD_TESTS:BOOL=%s' % ( | ||||
|                 'ON' if self.run_tests else 'OFF'), | ||||
|             '-DBUILD_BENCHMARKS:BOOL=ON', | ||||
|             '-DWITH_MPC:BOOL=%s' % ( | ||||
|                 'ON' if '+mpc' in spec else 'OFF'), | ||||
|             '-DWITH_MPFR:BOOL=%s' % ( | ||||
|                 'ON' if '+mpfr' in spec else 'OFF'), | ||||
|             '-DINTEGER_CLASS:STRING=gmp', | ||||
|             '-DWITH_OPENMP:BOOL=%s' % ( | ||||
|                 'ON' if '+openmp' in spec else 'OFF'), | ||||
|             '-DBUILD_SHARED_LIBS:BOOL=%s' % ( | ||||
|                 'ON' if '+shared' in spec else 'OFF'), | ||||
|         ]) | ||||
|  | ||||
|         if '+flint' in spec: | ||||
|         if sys.platform == 'darwin': | ||||
|             options.extend([ | ||||
|                 '-DWITH_FLINT:BOOL=ON', | ||||
|                 '-DINTEGER_CLASS:STRING=flint' | ||||
|                 '-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=on' | ||||
|             ]) | ||||
|         elif '+piranha' in spec: | ||||
|  | ||||
|         if '+boostmp' in spec: | ||||
|             options.extend([ | ||||
|                 '-DWITH_PIRANHA:BOOL=ON', | ||||
|                 '-DINTEGER_CLASS:STRING=piranha' | ||||
|                 '-DINTEGER_CLASS:STRING=boostmp', | ||||
|                 '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, | ||||
|                 '-DWITH_MPC:BOOL=OFF', | ||||
|                 '-DWITH_MPFR:BOOL=OFF', | ||||
|             ]) | ||||
|         else: | ||||
|             options.extend([ | ||||
|                 '-DINTEGER_CLASS:STRING=gmp' | ||||
|                 '-DWITH_MPC:BOOL=%s' % ( | ||||
|                     'ON' if '+mpc' in spec else 'OFF'), | ||||
|                 '-DWITH_MPFR:BOOL=%s' % ( | ||||
|                     'ON' if '+mpfr' in spec else 'OFF'), | ||||
|             ]) | ||||
|             if '+flint' in spec: | ||||
|                 options.extend([ | ||||
|                     '-DWITH_FLINT:BOOL=ON', | ||||
|                     '-DINTEGER_CLASS:STRING=flint' | ||||
|                 ]) | ||||
|             elif '+piranha' in spec: | ||||
|                 options.extend([ | ||||
|                     '-DWITH_PIRANHA:BOOL=ON', | ||||
|                     '-DINTEGER_CLASS:STRING=piranha' | ||||
|                 ]) | ||||
|             else: | ||||
|                 options.extend([ | ||||
|                     '-DINTEGER_CLASS:STRING=gmp' | ||||
|                 ]) | ||||
|  | ||||
|         with working_dir('spack-build', create=True): | ||||
|             cmake('..', *options) | ||||
|  | ||||
|             make() | ||||
|             make('install') | ||||
|             if self.run_tests: | ||||
|                 ctest() | ||||
|         return options | ||||
|   | ||||
		Reference in New Issue
	
	Block a user