# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 # $Id$ PortSystem 1.0 PortGroup github 1.0 PortGroup muniversal 1.0 name OpenBLAS categories math science license BSD maintainers nicos michaelld openmaintainer description OpenBLAS is an optimized BLAS library based on GotoBLAS2 long_description ${description} platforms darwin # Prevent precompiled binaries to let compilation optimise the library # for the user processor archive_sites subport OpenBLAS-devel {} if {[string first "-devel" $subport] > 0} { github.setup xianyi OpenBLAS e54b6ddaa09a96b85109f437755e7ddf86220451 version 20161018 checksums rmd160 4711bd348001240d73eb53de0364079d2721df4a \ sha256 cea9270f4df134fd0eac1c12ecdfa8546887539ba76acbbd7ddd31c920c281f3 name ${github.project}-devel conflicts OpenBLAS patchfiles patch-libnoarch.devel.diff \ patch-linkLib.devel.diff livecheck.url ${github.homepage}/commits/develop.atom } else { github.setup xianyi OpenBLAS 0.2.19 v conflicts OpenBLAS-devel checksums rmd160 11f85eb4bb382e10298ac40d1e1fd4ecc46bb3da \ sha256 878353b52940e0d5be32011cd5ba8440758f5270c3fa0f6f6200c26eabc53f1c patchfiles patch-libnoarch.release.diff \ patch-linkLib.release.diff } variant gcc45 conflicts gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 clang \ description "Use Gcc45 as compiler" { configure.compiler macports-gcc-4.5 } variant gcc46 conflicts gcc45 gcc47 gcc48 gcc49 gcc5 gcc6 clang \ description "Use Gcc46 as compiler" { configure.compiler macports-gcc-4.6 } variant gcc47 conflicts gcc45 gcc46 gcc48 gcc49 gcc5 gcc6 clang \ description "Use Gcc47 as compiler" { configure.compiler macports-gcc-4.7 } variant gcc48 conflicts gcc45 gcc46 gcc47 gcc49 gcc5 gcc6 clang \ description "Use Gcc48 as compiler" { configure.compiler macports-gcc-4.8 } variant gcc49 conflicts gcc45 gcc46 gcc47 gcc48 gcc5 gcc6 clang \ description "Use Gcc49 as compiler" { configure.compiler macports-gcc-4.9 } variant gcc5 conflicts gcc45 gcc46 gcc47 gcc48 gcc49 gcc6 clang \ description "Use Gcc5 as compiler" { configure.compiler macports-gcc-5 } variant gcc6 conflicts gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 clang \ description "Use Gcc6 as compiler" { configure.compiler macports-gcc-6 } variant clang conflicts gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 \ description "Use Clang as compiler" { if {[vercmp $xcodeversion 5.0] >= 0} { configure.compiler clang } else { # Xcode's clang < 5.0 does not support avx #Use a compiler depending on system if {${configure.cxx_stdlib} eq "libc++"} { configure.compiler macports-clang-3.7 } else { configure.compiler macports-clang-3.4 } } depends_build-append port:gcc5 configure.fc ${prefix}/bin/gfortran-mp-5 } if {![variant_isset gcc45] && ![variant_isset gcc46] && ![variant_isset gcc47] && \ ![variant_isset gcc48] && ![variant_isset gcc49] && ![variant_isset gcc5] && \ ![variant_isset gcc6] && ![variant_isset clang]} { if { ![catch {sysctl hw.optional.avx1_0} has_avx] && $has_avx == 1 } { #Use clang if the processor has avx instructions default_variants +clang } else { #Else, use gcc5 as default default_variants +gcc5 } } variant lapack description "Add Lapack/CLapack support to the library" { } default_variants-append +lapack use_configure no pre-build { if {[variant_isset universal]} { foreach arch ${universal_archs_to_use} { set makeINC [open ${worksrcpath}-${arch}/Makefile.rule "w"] puts $makeINC "VERSION = 1" puts $makeINC "LIBNAMESUFFIX = " puts $makeINC "CC = ${configure.cc}" puts $makeINC "FC = ${configure.fc}" if {${arch} eq "x86_64" || ${arch} eq "ppc64"} { puts $makeINC "BINARY = 64" } else { puts $makeINC "BINARY = 32" } if {![variant_isset clang]} { puts $makeINC "COMMON_OPT = -O3" } else { #Ensure to use the AVX-capable assembler puts $makeINC "COMMON_OPT = -O3" } puts $makeINC "COMMON_PROF = -pg" if {![variant_isset lapack]} { puts $makeINC "NO_LAPACK = 1" } if {![variant_isset clang]} { puts $makeINC "NO_AVX = 1" } close $makeINC } } else { set makeINC [open ${worksrcpath}/Makefile.rule "w"] puts $makeINC "VERSION = 1" puts $makeINC "LIBNAMESUFFIX = " puts $makeINC "CC = ${configure.cc}" puts $makeINC "FC = ${configure.fc}" if {${build_arch} eq "x86_64" || ${build_arch} eq "ppc64"} { puts $makeINC "BINARY = 64" } else { puts $makeINC "BINARY = 32" } if {![variant_isset clang]} { puts $makeINC "COMMON_OPT = -O3" } else { #Ensure to use the AVX-capable assembler puts $makeINC "COMMON_OPT = -O3" } puts $makeINC "COMMON_PROF = -pg" if {![variant_isset lapack]} { puts $makeINC "NO_LAPACK = 1" } if {![variant_isset clang]} { if { ![catch {sysctl hw.optional.avx1_0} has_avx] && $has_avx == 1 } { ui_msg "Warning: the chosen compiler cannot handle advanced optimisation instructions." ui_msg " AVX instructions are disabled." } puts $makeINC "NO_AVX = 1" } close $makeINC } } #Using system ones as default is set to bin/gcc-ar which does not exist, #and using gcc-mp ones end up in an error about a missing plugin #(see ticket #38551 for example) build.args "AR=/usr/bin/ar RANLIB=/usr/bin/ranlib" destroot.args "PREFIX=${prefix}" if {[variant_isset universal]} { merger-post-destroot { foreach arch ${universal_archs_to_use} { move ${destroot}-${arch}${prefix}/include/cblas.h \ ${destroot}-${arch}${prefix}/include/cblas_openblas.h #Correct library name system "install_name_tool -id \ ${prefix}/lib/libopenblas-r1.dylib \ ${destroot}-${arch}${prefix}/lib/libopenblas-r1.dylib" delete file ${destroot}-${arch}/${prefix}/lib/cmake if {[variant_isset lapack]} { #Install lapacke headers too set LAPACKE_DIR [exec /bin/ls ${worksrcpath}/lapack-netlib | \ grep -i lapacke] xinstall -m 755 ${worksrcpath}-${arch}/lapack-netlib/${LAPACKE_DIR}/include/lapacke_config.h \ ${destroot}-${arch}${prefix}/include/lapacke_config.h xinstall -m 755 ${worksrcpath}-${arch}/lapack-netlib/${LAPACKE_DIR}/include/lapacke_mangling.h \ ${destroot}-${arch}${prefix}/include/lapacke_mangling.h xinstall -m 755 ${worksrcpath}-${arch}/lapack-netlib/${LAPACKE_DIR}/include/lapacke_utils.h \ ${destroot}-${arch}${prefix}/include/lapacke_utils.h xinstall -m 755 ${worksrcpath}-${arch}/lapack-netlib/${LAPACKE_DIR}/include/lapacke.h \ ${destroot}-${arch}${prefix}/include/lapacke.h } } } } else { post-destroot { #Avoid conflict with Atlas move ${destroot}${prefix}/include/cblas.h \ ${destroot}${prefix}/include/cblas_openblas.h #Correct library name system "install_name_tool -id \ ${prefix}/lib/libopenblas-r1.dylib \ ${destroot}${prefix}/lib/libopenblas-r1.dylib" delete file ${destroot}/${prefix}/lib/cmake if {[variant_isset lapack]} { #Install lapacke headers too set LAPACKE_DIR [exec /bin/ls ${worksrcpath}/lapack-netlib | \ grep -i lapacke] xinstall -m 755 ${worksrcpath}/lapack-netlib/${LAPACKE_DIR}/include/lapacke_config.h \ ${destroot}${prefix}/include/lapacke_config.h xinstall -m 755 ${worksrcpath}/lapack-netlib/${LAPACKE_DIR}/include/lapacke_mangling.h \ ${destroot}${prefix}/include/lapacke_mangling.h xinstall -m 755 ${worksrcpath}/lapack-netlib/${LAPACKE_DIR}/include/lapacke_utils.h \ ${destroot}${prefix}/include/lapacke_utils.h xinstall -m 755 ${worksrcpath}/lapack-netlib/${LAPACKE_DIR}/include/lapacke.h \ ${destroot}${prefix}/include/lapacke.h } } }