[builds] Consume llvm + cross compilers from mono's package. (#5254)

* [builds] Consume LLVM from mono's package.

* Fix mono sdk paths in makefile to be relative to the top.

* [builds] Make curl verbose if V=1.

* [builds] Improve llvm build targets.

* Fix dependencies so that 'make -j llvm' (and other variations of the same
  target) work properly.
* Rename things a bit to make it clear there are 32-bit and 64-bit llvm
  targets.

* [builds] Consume cross compilers from mono's package as well.

Compiling the cross compilers while using LLVM from mono's package becomes
complicated, so just go ahead and get the cross compilers from the mono
package as well.

* Make llvm rules symmetric between llvm32 and llvm64.
This commit is contained in:
Rolf Bjarne Kvinge 2018-12-17 10:22:54 +01:00 коммит произвёл GitHub
Родитель 68049f9180
Коммит d205f2215b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 37 добавлений и 30 удалений

Просмотреть файл

@ -331,8 +331,8 @@ ifeq ($(MONO_BUILD_FROM_SOURCE),)
MONO_HASH:=$(shell git --git-dir=$(abspath $(TOP)/.git) --work-tree=$(abspath $(TOP)) ls-tree HEAD --full-tree -- external/mono | awk -F' ' '{printf "%s",$$3}')
MONO_FILENAME:=ios-release-Darwin-$(MONO_HASH).zip
MONO_URL:=https://xamjenkinsartifact.azureedge.net/mono-sdks/$(MONO_FILENAME)
MONO_SDK_BUILDDIR:=$(abspath builds/downloads/$(basename $(MONO_FILENAME)))
MONO_SDK_DESTDIR:=$(abspath builds/downloads/$(basename $(MONO_FILENAME)))
MONO_SDK_BUILDDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_FILENAME)))
MONO_SDK_DESTDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_FILENAME)))
MONO_BUILD_MODE=download
else
MONO_SDK_BUILDDIR:=$(abspath $(MONO_PATH)/sdks/builds)

Просмотреть файл

@ -8,7 +8,7 @@ download: downloads/$(basename $(MONO_FILENAME))
downloads/$(MONO_FILENAME):
$(Q) mkdir -p downloads
$(Q) echo "Downloading $(MONO_URL)..."
$(Q) curl -s -f -L $(MONO_URL) --output $@.tmp
$(Q) curl -f -L $(if $(V),-v,-s) $(MONO_URL) --output $@.tmp
$(Q) mv $@.tmp $@
$(Q) echo "Downloaded $(MONO_URL)"
@ -1429,48 +1429,53 @@ ifdef INCLUDE_DEVICE
clean-local:: clean-llvm
endif
build-llvm32: .stamp-build-llvm .stamp-build-llvm32
build-llvm64: .stamp-build-llvm .stamp-build-llvm32
build-llvm32: .stamp-build-llvm32
build-llvm64: .stamp-build-llvm64
.stamp-build-llvm: $(SDK_CONFIG)
$(MAKE) -C $(SDK_BUILDDIR) provision-llvm-llvm64 $(SDK_ARGS)
.stamp-compile-llvm64: $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) provision-llvm-llvm64 $(SDK_ARGS)
$(Q) touch $@
.stamp-build-llvm32: $(SDK_CONFIG)
$(MAKE) -C $(SDK_BUILDDIR) provision-llvm36-llvm32 $(SDK32_ARGS)
.stamp-compile-llvm32: $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) provision-llvm36-llvm32 $(SDK32_ARGS)
$(Q) touch $@
.stamp-build-llvm64: .stamp-$(MONO_BUILD_MODE)-llvm64
.stamp-build-llvm32: .stamp-$(MONO_BUILD_MODE)-llvm32
clean-llvm: $(SDK_CONFIG)
$(MAKE) -C $(SDK_BUILDDIR) clean-llvm36-llvm32 clean-llvm-llvm64 $(SDK_ARGS)
$(MAKE) -C $(MONO_SDK_BUILDDIR) clean-llvm36-llvm32 clean-llvm-llvm64 $(SDK_ARGS)
$(RM) .stamp-*-llvm*
.PHONY: install-llvm64 llvm llvm64
.PHONY: install-llvm64 install-llvm32 llvm32 llvm64
install-llvm: install-llvm32 install-llvm64
LLVM_TARGETS = \
LLVM64_TARGETS = \
$(PREFIX)/LLVM/bin/opt \
$(PREFIX)/LLVM/bin/llc \
LLVM32_TARGETS = \
$(PREFIX)/LLVM36/bin/opt \
$(PREFIX)/LLVM36/bin/llc
$(PREFIX)/LLVM36/bin/llc \
$(PREFIX)/LLVM/bin/%: $(SDK_DESTDIR)/llvm-llvm64/bin/% | $(PREFIX)/LLVM/bin
$(MONO_SDK_DESTDIR)/llvm-llvm64/bin/%: .stamp-build-llvm64; @true
$(MONO_SDK_DESTDIR)/llvm36-llvm32/bin/%: .stamp-build-llvm32; @true
$(PREFIX)/LLVM/bin/%: $(MONO_SDK_DESTDIR)/llvm-llvm64/bin/% | $(PREFIX)/LLVM/bin
$(call Q_2,INSTALL ,[LLVM64]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@
$(PREFIX)/LLVM36/bin/%: $(SDK_DESTDIR)/llvm36-llvm32/bin/% | $(PREFIX)/LLVM36/bin
$(call Q_2,INSTALL ,[LLVM64]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@
$(PREFIX)/LLVM36/bin/%: $(MONO_SDK_DESTDIR)/llvm36-llvm32/bin/% | $(PREFIX)/LLVM36/bin
$(call Q_2,INSTALL ,[LLVM32]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@
$(PREFIX)/LLVM/bin:
$(PREFIX)/LLVM/bin $(PREFIX)/LLVM36/bin:
$(Q) mkdir -p $@
$(PREFIX)/LLVM36/bin:
$(Q) mkdir -p $@
install-llvm: install-llvm32 install-llvm64
install-llvm32: $(LLVM32_TARGETS)
install-llvm64: $(LLVM64_TARGETS)
install-llvm32:.stamp-build-llvm .stamp-build-llvm32 $(LLVM_TARGETS)
install-llvm64: .stamp-build-llvm .stamp-build-llvm32 $(LLVM_TARGETS)
llvm: build-llvm64 install-llvm
llvm: install-llvm
llvm64: install-llvm64
llvm32: install-llvm32
$(MONO_PATH)/tools/offsets-tool/MonoAotOffsetsDumper.exe: $(MONO_PATH)/configure $(wildcard $(MONO_PATH)/tools/offsets-tool/*.cs)
$(Q) $(MAKE) -C $(dir $@) MonoAotOffsetsDumper.exe
@ -1504,10 +1509,12 @@ build:: build-$(1)
install-local:: install-$(1)
clean-local:: clean-$(1)
.stamp-build-$(1): .stamp-build-llvm .stamp-build-llvm32 $(MONO_PATH)/configure $(MONO_PATH)/tools/offsets-tool/MonoAotOffsetsDumper.exe $(MONO_DEPENDENCIES) $(SDK_CONFIG)
$(MAKE) -C $(SDK_BUILDDIR) package-ios-$(1) $(SDK_ARGS) $(if $(5), XCODE_DIR=$(5))
.stamp-compile-$(1): .stamp-build-llvm64 .stamp-build-llvm32 $(MONO_PATH)/configure $(MONO_PATH)/tools/offsets-tool/MonoAotOffsetsDumper.exe $(MONO_DEPENDENCIES) $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) package-ios-$(1) $(SDK_ARGS) $(if $(5), XCODE_DIR=$(5))
$(Q) touch $$@
.stamp-build-$(1): .stamp-$(MONO_BUILD_MODE)-$(1)
build-$(1): .stamp-build-$(1)
_$(1)_CROSS_TARGETS = \
@ -1515,14 +1522,14 @@ _$(1)_CROSS_TARGETS = \
$(SDK_DESTDIR)/ios-$(1)/bin/$(4): .stamp-build-$(1)
$(PREFIX)/bin/$(3): $(SDK_DESTDIR)/ios-$(1)-release/bin/$(4) | $(PREFIX)/bin
$(PREFIX)/bin/$(3): $(MONO_SDK_DESTDIR)/ios-$(1)-release/bin/$(4) | $(PREFIX)/bin
$(call Q_2,INSTALL ,[CROSS]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $$< $$@
install-$(1): install-$(2) $$(_$(1)_CROSS_TARGETS)
clean-$(1): $(SDK_CONFIG)
$(MAKE) -C $(SDK_BUILDDIR) clean-ios-$(1) $(SDK_ARGS)
-rm -rf $(SDK_DESTDIR)/$(1) .stamp-build-$(1)
$(MAKE) -C $(MONO_SDK_BUILDDIR) clean-ios-$(1) $(SDK_ARGS)
-rm -rf $(MONO_SDK_DESTDIR)/$(1) .stamp-build-$(1)
endef