Skip to content

Commit d966213

Browse files
authored
[sdks] Add download/pack capabilities for LLVM (mono#10806)
1 parent 8c1acd4 commit d966213

File tree

1 file changed

+29
-61
lines changed

1 file changed

+29
-61
lines changed

sdks/builds/llvm.mk

Lines changed: 29 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
LLVM_SRC?=$(TOP)/sdks/builds/toolchains/llvm
23

34
$(TOP)/sdks/builds/toolchains/llvm:
@@ -16,84 +17,49 @@ $(TOP)/sdks/builds/toolchains/llvm36:
1617

1718
$(LLVM36_SRC)/configure: | $(LLVM36_SRC)
1819

19-
.stamp-llvm-download:
20-
ifeq ($(UNAME),Darwin)
21-
ifeq ($(DISABLE_DOWNLOAD_LLVM),)
22-
mkdir -p $(TOP)/sdks/builds/toolchains/llvm-download
23-
-$(MAKE) -C $(TOP)/llvm -f build.mk download-llvm \
24-
LLVM_PREFIX="$(TOP)/sdks/builds/toolchains/llvm-download/usr"
25-
touch $@
26-
endif
27-
endif
28-
29-
.stamp-llvm36-download:
30-
ifeq ($(UNAME),Darwin)
31-
ifeq ($(DISABLE_DOWNLOAD_LLVM),)
32-
mkdir -p $(TOP)/sdks/builds/toolchains/llvm36-download
33-
-wget --no-verbose -O - http://xamjenkinsartifact.blob.core.windows.net/$(LLVM36_JENKINS_LANE)/llvm-osx64-$(LLVM36_HASH).tar.gz | tar -xC $(TOP)/sdks/builds/toolchains/llvm36-download -f -
34-
touch $@
35-
endif
36-
endif
37-
3820
##
3921
# Parameters
4022
# $(1): version
4123
# $(2): target
42-
# $(3): bitness
43-
# $(4): configure script
24+
# $(3): configure script
4425
define LLVMProvisionTemplate
45-
ifeq ($(UNAME),Darwin)
46-
.stamp-$(1)-$(2)-unpack:
47-
cp -r $$(TOP)/sdks/builds/toolchains/$(1)-download/usr$(3)/* $$(TOP)/sdks/out/$(1)-$(2)
26+
ifeq ($$(UNAME),Darwin)
27+
_$(1)-$(2)_HASH = $$(shell git -C $$(dir $(3)) rev-parse HEAD)
28+
_$(1)-$(2)_PACKAGE = $(1)-$(2)-$$(_$(1)-$(2)_HASH).tar.gz
29+
_$(1)-$(2)_URL = "http://xamjenkinsartifact.blob.core.windows.net/mono-sdks/$$(_$(1)-$(2)_PACKAGE)"
30+
31+
$$(TOP)/sdks/out/$(1)-$(2)/.stamp-download:
32+
curl --location --silent --show-error $$(_$(1)-$(2)_URL) | tar -xvzf - -C $$(TOP)/sdks/out/$(1)-$(2)
4833
touch $$@
4934

50-
.PHONY: unpack-$(1)-$(2)
51-
unpack-$(1)-$(2): .stamp-$(1)-$(2)-unpack
35+
.PHONY: download-$(1)-$(2)
36+
download-$(1)-$(2): | setup-$(1)-$(2)
37+
-$$(MAKE) $$(TOP)/sdks/out/$(1)-$(2)/.stamp-download
5238

53-
.PHONY: provision-$(1)-$(2)
54-
provision-$(1)-$(2): .stamp-$(1)-download | setup-$(1)-$(2) $(4)
55-
$$(MAKE) $$(if $$(wildcard $$(TOP)/sdks/builds/toolchains/$(1)-download/usr$(3)),unpack,package)-$(1)-$(2)
39+
.PHONY: pack-$(1)-$(2)
40+
pack-$(1)-$(2): package-$(1)-$(2)
41+
tar -cvzf $$(TOP)/sdks/out/$$(_$(1)-$(2)_PACKAGE) -C $$(TOP)/sdks/out/$(1)-$(2) .
5642

57-
.PHONY: clean-$(1)-$(2)
58-
clean-$(1)-$(2)::
59-
rm -rf .stamp-$(1)-download .stamp-$(1)-$(2)-unpack $$(TOP)/sdks/builds/toolchains/$(1)-download $$(TOP)/sdks/out/$(1)-$(2)
43+
.PHONY: provision-$(1)-$(2)
44+
provision-$(1)-$(2): $(3) | download-$(1)-$(2)
45+
$$(if $$(wildcard $$(TOP)/sdks/out/$(1)-$(2)/.stamp-download),,$$(MAKE) pack-$(1)-$(2))
6046
else
6147
.PHONY: provision-$(1)-$(2)
6248
provision-$(1)-$(2): package-$(1)-$(2)
6349
endif
64-
65-
.PHONY: provision
66-
provision: provision-$(1)-$(2)
6750
endef
6851

69-
$(eval $(call LLVMProvisionTemplate,llvm,llvm32,32,$(LLVM_SRC)/CMakeLists.txt))
70-
$(eval $(call LLVMProvisionTemplate,llvm,llvm64,64,$(LLVM_SRC)/CMakeLists.txt))
71-
$(eval $(call LLVMProvisionTemplate,llvm36,llvm32,32,$(LLVM36_SRC)/configure))
72-
73-
##
74-
# Parameters
75-
# $(1): version
76-
# $(2): target
77-
# $(3): bitness
78-
# $(4): configure script
79-
define LLVMMXEProvisionTemplate
80-
.PHONY: provision-$(1)-$(2)
81-
provision-$(1)-$(2): | package-$(1)-$(2) $(4)
82-
83-
.PHONY: provision
84-
provision: provision-$(1)-$(2)
85-
endef
86-
87-
$(eval $(call LLVMMXEProvisionTemplate,llvm,llvmwin32,32,$(LLVM_SRC)/CMakeLists.txt))
88-
$(eval $(call LLVMMXEProvisionTemplate,llvm,llvmwin64,64,$(LLVM_SRC)/CMakeLists.txt))
52+
$(eval $(call LLVMProvisionTemplate,llvm,llvm32,$(LLVM_SRC)/CMakeLists.txt))
53+
$(eval $(call LLVMProvisionTemplate,llvm,llvm64,$(LLVM_SRC)/CMakeLists.txt))
54+
$(eval $(call LLVMProvisionTemplate,llvm,llvmwin32,$(LLVM_SRC)/CMakeLists.txt))
55+
$(eval $(call LLVMProvisionTemplate,llvm,llvmwin64,$(LLVM_SRC)/CMakeLists.txt))
56+
ifeq ($(UNAME),Darwin)
57+
$(eval $(call LLVMProvisionTemplate,llvm36,llvm32,$(LLVM36_SRC)/configure))
58+
endif
8959

9060
##
9161
# Parameters
9262
# $(1): target
93-
# $(2): arch
94-
# $(3): src dir
95-
# $(4): download stamp
96-
# $(5): llvm version (llvm/llvm36)
9763
define LLVMTemplate
9864

9965
_llvm-$(1)_CMAKE_ARGS = \
@@ -121,8 +87,8 @@ clean-llvm-$(1)::
12187
endef
12288

12389
llvm-llvm32_CMAKE_ARGS=-DLLVM_BUILD_32_BITS=On
124-
$(eval $(call LLVMTemplate,llvm32,i386))
125-
$(eval $(call LLVMTemplate,llvm64,x86_64))
90+
$(eval $(call LLVMTemplate,llvm32))
91+
$(eval $(call LLVMTemplate,llvm64))
12692

12793
##
12894
# Parameters
@@ -177,7 +143,9 @@ clean-llvm36-$(1)::
177143

178144
endef
179145

146+
ifeq ($(UNAME),Darwin)
180147
$(eval $(call LLVM36Template,llvm32,i386))
148+
endif
181149

182150
##
183151
# Parameters

0 commit comments

Comments
 (0)