Skip to content

Commit e005a04

Browse files
committed
Add OpenBLAS BinaryBuilder installation scaffolding
Also make it easier to add more BB-cached versions of dependencies in the future
1 parent 67e610e commit e005a04

File tree

7 files changed

+74
-28
lines changed

7 files changed

+74
-28
lines changed

Make.inc

+1-2
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,8 @@ INSTALL_F := $(JULIAHOME)/contrib/install.sh 644
232232
INSTALL_M := $(JULIAHOME)/contrib/install.sh 755
233233

234234
# BinaryBuilder options
235-
BINARYBUILDER_TRIPLET = $(shell contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)))
236-
USE_BINARYBUILDER_LLVM := 0
237235
USE_BINARYBUILDER_OPENBLAS := 0
236+
USE_BINARYBUILDER_LLVM := 0
238237
# Use the Assertions build
239238
BINARYBUILDER_LLVM_ASSERTS := 0
240239

contrib/normalize_triplet.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# a method `platform_key_abi()` to parse uname-like output into something standarized.
77

88
if len(sys.argv) < 2:
9-
print("Usage: %s <host triplet>")
9+
print("Usage: %s <host triplet> [<gcc version>]")
1010
sys.exit(1)
1111

1212
arch_mapping = {
@@ -100,6 +100,20 @@ def p(x):
100100
return '-' + x
101101
return x
102102

103+
# If the user passes in a GCC version (like 8.2.0) use that to force a
104+
# "-gcc8" tag at the end of the triplet, but only if it has otherwise
105+
# not been specified
106+
if gcc_version == "blank_gcc":
107+
if len(sys.argv) == 3:
108+
gcc_version = {
109+
"4": "gcc4",
110+
"5": "gcc4",
111+
"6": "gcc4",
112+
"7": "gcc7",
113+
"8": "gcc8",
114+
}[sys.argv[2][0]]
115+
116+
103117
print(arch+p(platform)+p(libc)+r(call_abi)+p(gcc_version)+p(cxx_abi))
104118

105119
# Testing suite:

deps/Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ include $(SRCDIR)/Versions.make
1212
include $(JULIAHOME)/Make.inc
1313
include $(SRCDIR)/tools/common.mk
1414
include $(SRCDIR)/tools/git-external.mk
15+
include $(SRCDIR)/tools/bb-install.mk
1516

1617
# Special comments:
1718
#

deps/blas.mk

+21
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ endif
9292
# Do not overwrite the "-j" flag
9393
OPENBLAS_BUILD_OPTS += MAKE_NB_JOBS=0
9494

95+
ifneq ($(USE_BINARYBUILDER_OPENBLAS), 1)
96+
9597
$(BUILDDIR)/$(OPENBLAS_SRC_DIR)/build-configured: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/source-extracted
9698
perl -i -ple 's/^\s*(EXTRALIB\s*\+=\s*-lSystemStubs)\s*$$/# $$1/g' $(dir $<)/Makefile.system
9799
echo 1 > $@
@@ -194,3 +196,22 @@ configure-lapack: extract-lapack
194196
compile-lapack: $(BUILDDIR)/lapack-$(LAPACK_VER)/build-compiled
195197
fastcheck-lapack: check-lapack
196198
check-lapack: $(BUILDDIR)/lapack-$(LAPACK_VER)/build-checked
199+
200+
else # USE_BINARYBUILDER_OPENBLAS
201+
202+
203+
OPENBLAS_BB_URL_BASE := https://github.com/JuliaLinearAlgebra/OpenBLASBuilder/releases/download
204+
OPENBLAS_BB_NAME := OpenBLAS.v$(OPENBLAS_VER)
205+
OPENBLAS_BB_URL := $(OPENBLAS_BB_URL_BASE)/v$(OPENBLAS_VER)-$(OPENBLAS_BB_REL)/$(OPENBLAS_BB_NAME).$(BINARYBUILDER_TRIPLET).tar.gz
206+
207+
$(eval $(call bb-install,openblas,OPENBLAS,true))
208+
get-lapack: get-openblas
209+
extract-lapack: extract-openblas
210+
configure-lapack: configure-openblas
211+
compile-lapack: compile-openblas
212+
fastcheck-lapack: fastcheck-openblas
213+
check-lapack: check-openblas
214+
clean-lapack: clean-openblas
215+
distclean-lapack: distclean-openblas
216+
install-lapack: install-openblas
217+
endif

deps/llvm.mk

+1-25
Original file line numberDiff line numberDiff line change
@@ -520,30 +520,6 @@ else
520520
LLVM_BB_NAME := LLVM.asserts
521521
endif
522522
LLVM_BB_NAME := $(LLVM_BB_NAME).v$(LLVM_VER)
523-
LLVM_BB_URL := $(LLVM_BB_URL_BASE)/v$(LLVM_VER)-$(LLVM_BB_REL)/$(LLVM_BB_NAME).$(BINARYBUILDER_TRIPLET).tar.gz
524523

525-
526-
$(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL):
527-
mkdir -p $@
528-
529-
$(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL)/LLVM.$(BINARYBUILDER_TRIPLET).tar.gz: | $(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL)
530-
$(JLDOWNLOAD) $@ $(LLVM_BB_URL)
531-
532-
$(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL)/build-compiled: | $(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL)/LLVM.$(BINARYBUILDER_TRIPLET).tar.gz
533-
echo 1 > $@
534-
535-
$(eval $(call staged-install,llvm,llvm-$$(LLVM_VER)-$$(LLVM_BB_REL),,,,))
536-
537-
#Override provision of stage tarball
538-
$(build_staging)/llvm-$(LLVM_VER)-$(LLVM_BB_REL).tgz: $(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL)/LLVM.$(BINARYBUILDER_TRIPLET).tar.gz | $(build_staging)
539-
cp $< $@
540-
541-
clean-llvm:
542-
distclean-llvm:
543-
get-llvm: $(BUILDDIR)/llvm-$(LLVM_VER)-$(LLVM_BB_REL)/LLVM.$(BINARYBUILDER_TRIPLET).tar.gz
544-
extract-llvm:
545-
configure-llvm:
546-
compile-llvm:
547-
fastcheck-llvm:
548-
check-llvm:
524+
$(eval $(call bb-install,llvm,LLVM,false))
549525
endif # USE_BINARYBUILDER_LLVM

deps/openblas.version

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
OPENBLAS_BRANCH=v0.3.3
22
OPENBLAS_SHA1=fd8d1868a126bb9f12bbc43b36ee30d1ba943fbb
3+
OPENBLAS_VER=0.3.0
4+
OPENBLAS_BB_REL=3

deps/tools/bb-install.mk

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
define bb-install
2+
# If the user has signified that this is a GCC-multiversioned tarball, then generate the proper tarball
3+
ifeq ($(3),true)
4+
$(2)_BB_TRIPLET := $(shell $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) $(lastword $(shell $(FC) --version | head -1)))
5+
else
6+
$(2)_BB_TRIPLET := $(shell $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)))
7+
endif
8+
$(2)_BB_URL := $$($(2)_BB_URL_BASE)/v$$($(2)_VER)-$($(2)_BB_REL)/$$($(2)_BB_NAME).$$($(2)_BB_TRIPLET).tar.gz
9+
10+
$$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL):
11+
mkdir -p $$@
12+
13+
$$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL)/$(2).$$($(2)_BB_TRIPLET).tar.gz: | $$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL)
14+
$$(JLDOWNLOAD) $$@ $$($(2)_BB_URL)
15+
16+
$$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL)/build-compiled: | $$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL)/$(2).$$($(2)_BB_TRIPLET).tar.gz
17+
echo 1 > $$@
18+
19+
$$(eval $$(call staged-install,$(1),$(1)-$$$$($(2)_VER)-$$$$($(2)_BB_REL),,,,))
20+
21+
#Override provision of stage tarball
22+
$$(build_staging)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL).tgz: $$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL)/$(2).$$($(2)_BB_TRIPLET).tar.gz | $$(build_staging)
23+
cp $$< $$@
24+
25+
clean-$(1):
26+
distclean-$(1):
27+
get-$(1): $$(BUILDDIR)/$(1)-$$($(2)_VER)-$$($(2)_BB_REL)/$(2).$$($(2)_BB_TRIPLET).tar.gz
28+
extract-$(1):
29+
configure-$(1):
30+
compile-$(1):
31+
fastcheck-$(1):
32+
check-$(1):
33+
endef

0 commit comments

Comments
 (0)