# Contributor: Isaac Dunham # Contributor: Jakub Jirutka # Maintainer: Isaac Dunham global pkgname := 'openblas' global _pkgname := 'OpenBLAS' global pkgver := '0.2.19' global pkgrel := '3' global pkgdesc := '"A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK'" global url := '"http://www.openblas.net'" # does not build yet on s390x global arch := '"all !s390x'" global license := '"BSD'" global depends := ''"" global depends_dev := '"gfortran'" global makedepends := ""$depends_dev perl linux-headers"" global subpackages := ""$pkgname-dev $pkgname-doc"" global source := ""$pkgname-$pkgver.tar.gz::http://github.com/xianyi/$_pkgname/archive/v$pkgver.tar.gz"" global builddir := ""$srcdir/$_pkgname-$pkgver"" global _builddir64 := ""$builddir-64"" # ILP64 is not supported on aarch64 (https://github.com/xianyi/OpenBLAS/issues/956) global _ilp64 := 'false' if test $CARCH = "x86_64" { global subpackages := ""$subpackages $pkgname-ilp64"" global _ilp64 := 'true' } # USE_OPENMP=0: see GCC bug 60035 # NO_AFFINITY: don't expect to work on musl, also breaks R and not # recommended for Julia global _flags := '"USE_OPENMP=0 NO_LAPACK=0 MAJOR_VERSION=3 NO_AFFINITY=1'" matchstr $CARCH { ppc64le { global _flags := ""$_flags NUM_THREADS=64""} # POWER machines are big *64 { global _flags := ""$_flags NUM_THREADS=32""} # match kernel's CONFIG_NR_CPUS * { global _flags := ""$_flags NUM_THREADS=8""} # 32bit machines usually have less cores } # DYNAMIC_ARCH is supported on x86* only, see https://github.com/xianyi/OpenBLAS/issues/709 matchstr $CARCH { x86* { global _flags := ""$_flags TARGET=core2 DYNAMIC_ARCH=1""} armhf { global _flags := ""$_flags TARGET=ARMV7 DYNAMIC_ARCH=0""} aarch64 { global _flags := ""$_flags TARGET=ARMV8 DYNAMIC_ARCH=0""} ppc64le { global _flags := ""$_flags TARGET=POWER8 DYNAMIC_ARCH=0""} * { global _flags := ""$_flags DYNAMIC_ARCH=0""} } # Flags for ILP64 variant. global _flags64 := ""$_flags INTERFACE64=1 SYMBOLSUFFIX=64_"" proc prepare { default_prepare || return 1 if test $CARCH = "ppc64le" { # Skip test level 3 on ppc64le for a while sed 's/level2 level3/level2/g' -i "$builddir"/test/Makefile sed 's/all2 all3/all2/g' -i "$builddir"/ctest/Makefile } cp -ar $builddir $_builddir64 } proc build { env CFLAGS= make -C $builddir \ $_flags CFLAGS="$CFLAGS" PREFIX=/usr || return 1 if $_ilp64 { msg "Building with ILP64..." env CFLAGS= make -C $_builddir64 \ $_flags64 CFLAGS="$CFLAGS" PREFIX=/usr || return 1 } } proc package { if $_ilp64 { make -C $_builddir64 $_flags64 \ PREFIX="$pkgdir/usr" install || return 1 } cd $builddir make $_flags PREFIX="$pkgdir/usr" install || return 1 # Remove reference to $pkgdir. sed -i "s|$pkgdir||" "$pkgdir"/usr/lib/cmake/$pkgname/OpenBLASConfig.cmake mkdir -p "$pkgdir"/usr/share/doc/$pkgname install -m 0644 Changelog.txt TargetList.txt USAGE.md \ "$pkgdir"/usr/share/doc/$pkgname/ || return 1 install -Dm 0644 LICENSE \ "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } proc ilp64 { global pkgdesc := ""$pkgdesc (ILP64)"" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libopenblas64_* "$subpkgdir"/usr/lib/ } global sha512sums := '"7081a8540b8037c0d4d6db0ec4b51277856c0e0f4e2575671984e5deb3482102da8936c43691087c8475d67070f89ac6925e4867ead60802aa2a29e8517e7495 openblas-0.2.19.tar.gz'" (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(openblas)} spids:[9])] spids: [9] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_pkgname) op:Equal rhs:{(OpenBLAS)} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(0.2.19)} spids:[15])] spids: [15] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(3)} spids:[18])] spids: [18] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"))} spids: [21] ) ] spids: [21] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ ("http://www.openblas.net"))} spids: [26] ) ] spids: [26] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:arch) op:Equal rhs:{(DQ ("all !s390x"))} spids:[34])] spids: [34] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ (BSD))} spids:[39])] spids: [39] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ )} spids:[44])] spids: [44] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends_dev) op:Equal rhs:{(DQ (gfortran))} spids:[48])] spids: [48] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:makedepends) op: Equal rhs: {(DQ ($ VSub_Name "$depends_dev") (" perl linux-headers"))} spids: [53] ) ] spids: [53] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: {(DQ ($ VSub_Name "$pkgname") ("-dev ") ($ VSub_Name "$pkgname") (-doc))} spids: [59] ) ] spids: [59] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:source) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver") (".tar.gz::http://github.com/xianyi/") ($ VSub_Name "$_pkgname") (/archive/v) ($ VSub_Name "$pkgver") (.tar.gz) ) } spids: [67] ) ] spids: [67] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:builddir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir") (/) ($ VSub_Name "$_pkgname") (-) ($ VSub_Name "$pkgver"))} spids: [79] ) ] spids: [79] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_builddir64) op: Equal rhs: {(DQ ($ VSub_Name "$builddir") (-64))} spids: [89] ) ] spids: [89] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_ilp64) op:Equal rhs:{(false)} spids:[99])] spids: [99] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$CARCH"))} {(Lit_Other "=")} {(DQ (x86_64))} {(Lit_Other "]")} ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: {(DQ ($ VSub_Name "$subpackages") (" ") ($ VSub_Name "$pkgname") (-ilp64))} spids: [122] ) ] spids: [122] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_ilp64) op:Equal rhs:{(true)} spids:[131])] spids: [131] ) ] spids: [-1 119] ) ] spids: [-1 134] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ("USE_OPENMP=0\n") ("\tNO_LAPACK=0\n") ("\tMAJOR_VERSION=3\n") ("\tNO_AFFINITY=1"))} spids: [146] ) ] spids: [146] ) (Case to_match: {(DQ ($ VSub_Name "$CARCH"))} arms: [ (case_arm pat_list: [{(ppc64le)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" NUM_THREADS=64"))} spids: [165] ) ] spids: [165] ) ] spids: [162 163 170 -1] ) (case_arm pat_list: [{(Lit_Other "*") (64)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" NUM_THREADS=32"))} spids: [179] ) ] spids: [179] ) ] spids: [175 177 184 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" NUM_THREADS=8"))} spids: [192] ) ] spids: [192] ) ] spids: [189 190 197 -1] ) ] spids: [154 160 202] ) (Case to_match: {(DQ ($ VSub_Name "$CARCH"))} arms: [ (case_arm pat_list: [{(x86) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" TARGET=core2 DYNAMIC_ARCH=1"))} spids: [220] ) ] spids: [220] ) ] spids: [216 218 225 -1] ) (case_arm pat_list: [{(armhf)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" TARGET=ARMV7 DYNAMIC_ARCH=0"))} spids: [230] ) ] spids: [230] ) ] spids: [227 228 235 -1] ) (case_arm pat_list: [{(aarch64)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" TARGET=ARMV8 DYNAMIC_ARCH=0"))} spids: [240] ) ] spids: [240] ) ] spids: [237 238 245 -1] ) (case_arm pat_list: [{(ppc64le)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" TARGET=POWER8 DYNAMIC_ARCH=0"))} spids: [250] ) ] spids: [250] ) ] spids: [247 248 255 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") (" DYNAMIC_ARCH=0"))} spids: [260] ) ] spids: [260] ) ] spids: [257 258 265 -1] ) ] spids: [208 214 267] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_flags64) op: Equal rhs: {(DQ ($ VSub_Name "$_flags") ("\n") ("\tINTERFACE64=1\n") ("\tSYMBOLSUFFIX=64_"))} spids: [273] ) ] spids: [273] ) (FuncDef name: prepare body: (BraceGroup children: [ (AndOr children: [ (C {(default_prepare)}) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$CARCH"))} {(Lit_Other "=")} {(DQ (ppc64le))} {(Lit_Other "]")} ) terminator: ) ] action: [ (C {(sed)} {(SQ <"s/level2 level3/level2/g">)} {(-i)} {(DQ ($ VSub_Name "$builddir")) (/test/Makefile)} ) (C {(sed)} {(SQ <"s/all2 all3/all2/g">)} {(-i)} {(DQ ($ VSub_Name "$builddir")) (/ctest/Makefile)} ) ] spids: [-1 317] ) ] spids: [-1 352] ) (C {(cp)} {(-ar)} {(DQ ($ VSub_Name "$builddir"))} {(DQ ($ VSub_Name "$_builddir64"))}) ] spids: [286] ) spids: [282 285] ) (FuncDef name: build body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [ {(make)} {(-C)} {(DQ ($ VSub_Name "$builddir"))} {($ VSub_Name "$_flags")} {(Lit_VarLike "CFLAGS=") (DQ ($ VSub_Name "$CFLAGS"))} {(Lit_VarLike "PREFIX=") (/usr)} ] more_env: [(env_pair name:CFLAGS val:{(SQ )} spids:[377])] ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [(Sentence child:(C {($ VSub_Name "$_ilp64")}) terminator:)] action: [ (C {(msg)} {(DQ ("Building with ILP64..."))}) (AndOr children: [ (SimpleCommand words: [ {(make)} {(-C)} {(DQ ($ VSub_Name "$_builddir64"))} {($ VSub_Name "$_flags64")} {(Lit_VarLike "CFLAGS=") (DQ ($ VSub_Name "$CFLAGS"))} {(Lit_VarLike "PREFIX=") (/usr)} ] more_env: [(env_pair name:CFLAGS val:{(SQ )} spids:[422])] ) (ControlFlow token: arg_word: {(1)} ) ] op_id: Op_DPipe ) ] spids: [-1 412] ) ] spids: [-1 451] ) ] spids: [374] ) spids: [370 373] ) (FuncDef name: package body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(Sentence child:(C {($ VSub_Name "$_ilp64")}) terminator:)] action: [ (AndOr children: [ (C {(make)} {(-C)} {(DQ ($ VSub_Name "$_builddir64"))} {($ VSub_Name "$_flags64")} {(Lit_VarLike "PREFIX=") (DQ ($ VSub_Name "$pkgdir") (/usr))} {(install)} ) (ControlFlow token: arg_word: {(1)} ) ] op_id: Op_DPipe ) ] spids: [-1 468] ) ] spids: [-1 498] ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(make)} {($ VSub_Name "$_flags")} {(Lit_VarLike "PREFIX=") (DQ ($ VSub_Name "$pkgdir") (/usr))} {(install)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(sed)} {(-i)} {(DQ ("s|") ($ VSub_Name "$pkgdir") ("||"))} {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/cmake/) ($ VSub_Name "$pkgname") (/OpenBLASConfig.cmake) } ) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/doc/) ($ VSub_Name "$pkgname")} ) (AndOr children: [ (C {(install)} {(-m)} {(0644)} {(Changelog.txt)} {(TargetList.txt)} {(USAGE.md)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/doc/) ($ VSub_Name "$pkgname") (/)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(install)} {(-Dm)} {(0644)} {(LICENSE)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/licenses/) ($ VSub_Name "$pkgname") (/LICENSE)} ) ] spids: [460] ) spids: [456 459] ) (FuncDef name: ilp64 body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ($ VSub_Name "$pkgdesc") (" (ILP64)"))} spids: [620] ) ] spids: [620] ) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)}) (C {(mv)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/libopenblas64_) (Lit_Other "*")} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib/)} ) ] spids: [617] ) spids: [613 616] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sha512sums) op: Equal rhs: { (DQ ( "7081a8540b8037c0d4d6db0ec4b51277856c0e0f4e2575671984e5deb3482102da8936c43691087c8475d67070f89ac6925e4867ead60802aa2a29e8517e7495 openblas-0.2.19.tar.gz" ) ) } spids: [654] ) ] spids: [654] ) ] )