netlib-xblas 1.0.248: new package (#7024)
* netlib-xblas@1.0.248: new package * netlib-lapack: add xblas option
This commit is contained in:
		
				
					committed by
					
						
						Massimiliano Culpo
					
				
			
			
				
	
			
			
			
						parent
						
							a62e1a0451
						
					
				
				
					commit
					b5daa51c06
				
			@@ -55,6 +55,8 @@ class NetlibLapack(Package):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    variant('lapacke', default=True,
 | 
					    variant('lapacke', default=True,
 | 
				
			||||||
            description='Activates the build of the LAPACKE C interface')
 | 
					            description='Activates the build of the LAPACKE C interface')
 | 
				
			||||||
 | 
					    variant('xblas', default=False,
 | 
				
			||||||
 | 
					            description='Builds extended precision routines using XBLAS')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    patch('ibm-xl.patch', when='@3:6%xl')
 | 
					    patch('ibm-xl.patch', when='@3:6%xl')
 | 
				
			||||||
    patch('ibm-xl.patch', when='@3:6%xl_r')
 | 
					    patch('ibm-xl.patch', when='@3:6%xl_r')
 | 
				
			||||||
@@ -65,6 +67,7 @@ class NetlibLapack(Package):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    depends_on('cmake', type='build')
 | 
					    depends_on('cmake', type='build')
 | 
				
			||||||
    depends_on('blas', when='+external-blas')
 | 
					    depends_on('blas', when='+external-blas')
 | 
				
			||||||
 | 
					    depends_on('netlib-xblas+fortran+plain_blas', when='+xblas')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def patch(self):
 | 
					    def patch(self):
 | 
				
			||||||
        # Fix cblas CMakeLists.txt -- has wrong case for subdirectory name.
 | 
					        # Fix cblas CMakeLists.txt -- has wrong case for subdirectory name.
 | 
				
			||||||
@@ -155,6 +158,13 @@ def install_one(self, spec, prefix, shared):
 | 
				
			|||||||
                '-DBLAS_LIBRARIES:PATH=%s' % spec['blas'].libs.joined(';')
 | 
					                '-DBLAS_LIBRARIES:PATH=%s' % spec['blas'].libs.joined(';')
 | 
				
			||||||
            ])
 | 
					            ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if spec.satisfies('+xblas'):
 | 
				
			||||||
 | 
					            xblas_include_dir = spec['netlib-xblas'].prefix.include
 | 
				
			||||||
 | 
					            xblas_library = spec['netlib-xblas'].libs.joined(';')
 | 
				
			||||||
 | 
					            cmake_args.extend([
 | 
				
			||||||
 | 
					                '-DXBLAS_INCLUDE_DIR={0}'.format(xblas_include_dir),
 | 
				
			||||||
 | 
					                '-DXBLAS_LIBRARY={0}'.format(xblas_library)])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cmake_args.extend(std_cmake_args)
 | 
					        cmake_args.extend(std_cmake_args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        build_dir = 'spack-build' + ('-shared' if shared else '-static')
 | 
					        build_dir = 'spack-build' + ('-shared' if shared else '-static')
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										90
									
								
								var/spack/repos/builtin/packages/netlib-xblas/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								var/spack/repos/builtin/packages/netlib-xblas/package.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
 | 
				
			||||||
 | 
					# Produced at the Lawrence Livermore National Laboratory.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of Spack.
 | 
				
			||||||
 | 
					# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
 | 
				
			||||||
 | 
					# LLNL-CODE-647188
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# For details, see https://github.com/spack/spack
 | 
				
			||||||
 | 
					# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU Lesser General Public License (as
 | 
				
			||||||
 | 
					# published by the Free Software Foundation) version 2.1, February 1999.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is distributed in the hope that it will be useful, but
 | 
				
			||||||
 | 
					# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
 | 
				
			||||||
 | 
					# conditions of the GNU Lesser General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU Lesser General Public
 | 
				
			||||||
 | 
					# License along with this program; if not, write to the Free Software
 | 
				
			||||||
 | 
					# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					from spack import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class NetlibXblas(AutotoolsPackage):
 | 
				
			||||||
 | 
					    """XBLAS is a reference implementation for extra precision BLAS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       XBLAS is a reference implementation for the dense and banded BLAS
 | 
				
			||||||
 | 
					       routines, along with extended and mixed precision version. Extended
 | 
				
			||||||
 | 
					       precision is only used internally; input and output arguments remain
 | 
				
			||||||
 | 
					       the same as in the existing BLAS. Extra precisions is implemented as
 | 
				
			||||||
 | 
					       double-double (i.e., 128-bit total, 106-bit significand). Mixed
 | 
				
			||||||
 | 
					       precision permits some input/output arguments of different types
 | 
				
			||||||
 | 
					       (mixing real and complex) or precisions (mixing single and
 | 
				
			||||||
 | 
					       double). This implementation is proof of concept, and no attempt was
 | 
				
			||||||
 | 
					       made to optimize performance; performance should be as good as
 | 
				
			||||||
 | 
					       straightforward but careful code written by hand."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    homepage = "http://www.netlib.org/xblas"
 | 
				
			||||||
 | 
					    url      = "http://www.netlib.org/xblas/xblas.tar.gz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version('1.0.248', '990c680fb5e446bb86c10936e4cd7f88')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    variant('fortran', default=True,
 | 
				
			||||||
 | 
					            description='Build Fortran interfaces')
 | 
				
			||||||
 | 
					    variant('plain_blas', default=True,
 | 
				
			||||||
 | 
					            description='As part of XBLAS, build plain BLAS routines')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    provides('blas', when='+plain_blas')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def libs(self):
 | 
				
			||||||
 | 
					        return find_libraries(['libxblas'], root=self.prefix,
 | 
				
			||||||
 | 
					                              shared=False, recurse=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure_args(self):
 | 
				
			||||||
 | 
					        args = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.spec.satisfies('~fortran'):
 | 
				
			||||||
 | 
					            args += ['--disable-fortran']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.spec.satisfies('~plain_blas'):
 | 
				
			||||||
 | 
					            args += ['--disable-plain-blas']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def install(self, spec, prefix):
 | 
				
			||||||
 | 
					        mkdirp(prefix.lib)
 | 
				
			||||||
 | 
					        install('libxblas.a', prefix.lib)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.spec.satisfies('+plain_blas'):
 | 
				
			||||||
 | 
					            # XBLAS should be a drop-in BLAS replacement
 | 
				
			||||||
 | 
					            install('libxblas.a', join_path(prefix.lib, 'libblas.a'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        headers = ['f2c-bridge.h',
 | 
				
			||||||
 | 
					                   'blas_dense_proto.h',
 | 
				
			||||||
 | 
					                   'blas_enum.h',
 | 
				
			||||||
 | 
					                   'blas_extended.h',
 | 
				
			||||||
 | 
					                   'blas_extended_private.h',
 | 
				
			||||||
 | 
					                   'blas_extended_proto.h',
 | 
				
			||||||
 | 
					                   'blas_fpu.h',
 | 
				
			||||||
 | 
					                   'blas_malloc.h']
 | 
				
			||||||
 | 
					        mkdirp(prefix.include)
 | 
				
			||||||
 | 
					        for h in headers:
 | 
				
			||||||
 | 
					            install(join_path('src', h), prefix.include)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
		Reference in New Issue
	
	Block a user