easyblock = 'ConfigureMake'

name = 'OpenBLAS'
version = '0.2.6'

local_lapackver = '3.4.2'
versionsuffix = '-LAPACK-%s' % local_lapackver

homepage = 'http://xianyi.github.com/OpenBLAS/'
description = """OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version."""

toolchain = {'name': 'ictce', 'version': '5.3.0'}

local_lapack_src = 'lapack-%s.tgz' % local_lapackver
local_large_src = 'large.tgz'
local_timing_src = 'timing.tgz'
sources = [
    'v%(version)s.tar.gz',
    local_lapack_src,
    local_large_src,
    local_timing_src,
]
source_urls = [
    # order matters, trying to download the LAPACK tarball from GitHub causes
    # trouble
    "http://www.netlib.org/lapack/",
    "http://www.netlib.org/lapack/timing/",
    "https://github.com/xianyi/OpenBLAS/archive/",
]

patches = [
    'OpenBLAS-%(version)s_Makefile-LAPACK-sources.patch',
    (local_lapack_src, '.'),  # copy LAPACK tarball to unpacked OpenBLAS dir
    (local_large_src, '.'),
    (local_timing_src, '.'),
]

skipsteps = ['configure']

local_threading = 'USE_THREAD=1'
buildopts = 'BINARY=64 ' + local_threading + ' CC="$CC" FC="$F77"'
installopts = local_threading + " PREFIX=%(installdir)s"

# extensive testing can be enabled by uncommenting the line below
#runtest = 'PATH=.:$PATH lapack-timing'

sanity_check_paths = {
    'files': [
        'include/cblas.h',
        'include/f77blas.h',
        'include/lapacke_config.h',
        'include/lapacke.h',
        'include/lapacke_mangling.h',
        'include/lapacke_utils.h',
        'include/openblas_config.h',
        'lib/libopenblas.a',
        'lib/libopenblas.%s' %
        SHLIB_EXT],
    'dirs': [],
}

moduleclass = 'numlib'