diff options
-rw-r--r-- | .gitmodules | 4 | ||||
m--------- | external/llvm | 0 | ||||
-rw-r--r-- | llvm/Makefile.am | 2 | ||||
-rw-r--r-- | llvm/SUBMODULES.json | 10 | ||||
-rw-r--r-- | llvm/build.mk | 42 | ||||
-rw-r--r-- | sdks/builds/llvm.mk | 37 |
6 files changed, 23 insertions, 72 deletions
diff --git a/.gitmodules b/.gitmodules index 4e968d7a066..2a1d0e3521f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,3 +58,7 @@ [submodule "external/api-snapshot"] path = external/api-snapshot url = git://github.com/mono/api-snapshot.git +[submodule "external/llvm"] + path = external/llvm + url = git://github.com/mono/llvm.git + branch = release_60 diff --git a/external/llvm b/external/llvm new file mode 160000 +Subproject 117a508c0ca65b754008e94e3eb97e77edfef04 diff --git a/llvm/Makefile.am b/llvm/Makefile.am index 09c0c4bec0d..d97b311ad7a 100644 --- a/llvm/Makefile.am +++ b/llvm/Makefile.am @@ -1,5 +1,5 @@ -EXTRA_DIST=SUBMODULES.json build.mk build_llvm_config.sh +EXTRA_DIST=build.mk build_llvm_config.sh if ENABLE_LLVM diff --git a/llvm/SUBMODULES.json b/llvm/SUBMODULES.json deleted file mode 100644 index fe3046ebcce..00000000000 --- a/llvm/SUBMODULES.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "name": "llvm", - "url": "git://github.com/mono/llvm.git", - "rev": "117a508c0ca65b754008e94e3eb97e77edfef04b", - "remote-branch": "origin/release_60", - "branch": "release_60", - "directory": "llvm" - } -] diff --git a/llvm/build.mk b/llvm/build.mk index 16ad795ab9f..9b4607a65b5 100644 --- a/llvm/build.mk +++ b/llvm/build.mk @@ -1,53 +1,23 @@ -# -# Conditional submodule for llvm -# -# make reset-llvm will checkout a version of llvm which is suitable for this version of mono -# into $top_srcdir/llvm/llvm. -# -# Input variables -# - LLVM_TARGET: if set to wasm32 will trigger a 32bits build that enable the experimental WebAssembly backend -# - top_srcdir ?= $(abspath $(CURDIR)/..) -LLVM_PATH ?= $(abspath $(top_srcdir)/external/llvm) LLVM_BUILD ?= $(abspath $(top_srcdir)/llvm/build) LLVM_PREFIX ?= $(abspath $(top_srcdir)/llvm/usr) -# FIXME: URL should be http://xamjenkinsartifact.blob.core.windows.net/build-package-osx-llvm-$(NEEDED_LLVM_BRANCH)/llvm-osx64-$(NEEDED_LLVM_VERSION).tar.gz -LLVM_DOWNLOAD_LOCATION = "http://xamjenkinsartifact.blob.core.windows.net/build-package-osx-llvm-release60/llvm-osx64-$(NEEDED_LLVM_VERSION).tar.gz" +# LLVM_BRANCH := $(shell git -C "$(top_srcdir)/external/llvm" rev-parse --abbrev-ref HEAD) +LLVM_VERSION := $(shell git -C "$(top_srcdir)/external/llvm" rev-parse HEAD) + +# FIXME: URL should be http://xamjenkinsartifact.blob.core.windows.net/build-package-osx-llvm-$(LLVM_BRANCH)/llvm-osx64-$(LLVM_VERSION).tar.gz +LLVM_DOWNLOAD_LOCATION = "http://xamjenkinsartifact.blob.core.windows.net/build-package-osx-llvm-release60/llvm-osx64-$(LLVM_VERSION).tar.gz" CMAKE := $(or $(CMAKE),$(shell which cmake)) NINJA := $(shell which ninja) -SUBMODULES_CONFIG_FILE = $(top_srcdir)/llvm/SUBMODULES.json -include $(top_srcdir)/scripts/submodules/versions.mk - -$(eval $(call ValidateVersionTemplate,llvm,LLVM)) - -# Bump the given submodule to the revision given by the REV make variable -# If COMMIT is 1, commit the change -bump-llvm: __bump-version-llvm - -# Bump the given submodule to the branch given by the BRANCH/REMOTE_BRANCH make variables -# If COMMIT is 1, commit the change -bump-branch-llvm: __bump-branch-llvm - -# Bump the given submodule to its current GIT version -# If COMMIT is 1, commit the change -bump-current-llvm: __bump-current-version-llvm - $(LLVM_BUILD) $(LLVM_PREFIX): mkdir -p $@ -$(LLVM_PATH): - $(MAKE) -f build.mk reset-llvm - -$(LLVM_PATH)/CMakeLists.txt: | $(LLVM_PATH) - EXTRA_LLVM_ARGS = $(if $(filter $(LLVM_TARGET),wasm32), -DLLVM_BUILD_32_BITS=On -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="WebAssembly",) -$(LLVM_BUILD)/$(if $(NINJA),build.ninja,Makefile): $(LLVM_PATH)/CMakeLists.txt | $(LLVM_BUILD) +$(LLVM_BUILD)/$(if $(NINJA),build.ninja,Makefile): $(top_srcdir)/external/llvm/CMakeLists.txt | $(LLVM_BUILD) $(LLVM_PREFIX) cd $(LLVM_BUILD) && $(CMAKE) \ $(if $(NINJA),-G Ninja) \ -DCMAKE_INSTALL_PREFIX="$(LLVM_PREFIX)" \ diff --git a/sdks/builds/llvm.mk b/sdks/builds/llvm.mk index d88c7e39975..77b499c86d0 100644 --- a/sdks/builds/llvm.mk +++ b/sdks/builds/llvm.mk @@ -1,13 +1,4 @@ -LLVM_SRC?=$(TOP)/sdks/builds/toolchains/llvm - -$(TOP)/sdks/builds/toolchains/llvm: - mkdir -p $(dir $@) - $(MAKE) -C $(TOP)/llvm -f build.mk $@/CMakeLists.txt \ - LLVM_PATH="$@" - -$(LLVM_SRC)/CMakeLists.txt: | $(LLVM_SRC) - LLVM36_SRC?=$(TOP)/sdks/builds/toolchains/llvm36 $(TOP)/sdks/builds/toolchains/llvm36: @@ -21,9 +12,9 @@ $(LLVM36_SRC)/configure: | $(LLVM36_SRC) # Parameters # $(1): version # $(2): target -# $(3): configure script +# $(3): src define LLVMProvisionTemplate -_$(1)-$(2)_HASH = $$(shell git -C $$(dir $(3)) rev-parse HEAD) +_$(1)-$(2)_HASH = $$(shell git -C $(3) rev-parse HEAD) _$(1)-$(2)_PACKAGE = $(1)-$(2)-$$(_$(1)-$(2)_HASH)-$$(UNAME).tar.gz _$(1)-$(2)_URL = "http://xamjenkinsartifact.blob.core.windows.net/mono-sdks/$$(_$(1)-$(2)_PACKAGE)" @@ -32,11 +23,11 @@ $$(TOP)/sdks/out/$(1)-$(2)/.stamp-download: touch $$@ .PHONY: download-$(1)-$(2) -download-$(1)-$(2): $(3) | setup-$(1)-$(2) +download-$(1)-$(2): | $(3) setup-$(1)-$(2) -$$(MAKE) $$(TOP)/sdks/out/$(1)-$(2)/.stamp-download .PHONY: provision-$(1)-$(2) -provision-$(1)-$(2): $(3) | download-$(1)-$(2) +provision-$(1)-$(2): | $(3) download-$(1)-$(2) $$(if $$(wildcard $$(TOP)/sdks/out/$(1)-$(2)/.stamp-download),,$$(MAKE) package-$(1)-$(2)) .PHONY: archive-$(1)-$(2) @@ -44,12 +35,12 @@ archive-$(1)-$(2): package-$(1)-$(2) tar -cvzf $$(TOP)/$$(_$(1)-$(2)_PACKAGE) -C $$(TOP)/sdks/out/$(1)-$(2) . endef -$(eval $(call LLVMProvisionTemplate,llvm,llvm32,$(LLVM_SRC)/CMakeLists.txt)) -$(eval $(call LLVMProvisionTemplate,llvm,llvm64,$(LLVM_SRC)/CMakeLists.txt)) -$(eval $(call LLVMProvisionTemplate,llvm,llvmwin32,$(LLVM_SRC)/CMakeLists.txt)) -$(eval $(call LLVMProvisionTemplate,llvm,llvmwin64,$(LLVM_SRC)/CMakeLists.txt)) +$(eval $(call LLVMProvisionTemplate,llvm,llvm32,$(TOP)/external/llvm)) +$(eval $(call LLVMProvisionTemplate,llvm,llvm64,$(TOP)/external/llvm)) +$(eval $(call LLVMProvisionTemplate,llvm,llvmwin32,$(TOP)/external/llvm)) +$(eval $(call LLVMProvisionTemplate,llvm,llvmwin64,$(TOP)/external/llvm)) ifeq ($(UNAME),Darwin) -$(eval $(call LLVMProvisionTemplate,llvm36,llvm32,$(LLVM36_SRC)/configure)) +$(eval $(call LLVMProvisionTemplate,llvm36,llvm32,$(LLVM36_SRC))) endif ## @@ -65,9 +56,8 @@ setup-llvm-$(1): mkdir -p $$(TOP)/sdks/out/llvm-$(1) .PHONY: package-llvm-$(1) -package-llvm-$(1): setup-llvm-$(1) $$(LLVM_SRC)/CMakeLists.txt +package-llvm-$(1): setup-llvm-$(1) $$(MAKE) -C $$(TOP)/llvm -f build.mk install-llvm \ - LLVM_PATH="$$(LLVM_SRC)" \ LLVM_BUILD="$$(TOP)/sdks/builds/llvm-$(1)" \ LLVM_PREFIX="$$(TOP)/sdks/out/llvm-$(1)" \ LLVM_CMAKE_ARGS="$$(_llvm-$(1)_CMAKE_ARGS)" @@ -75,7 +65,6 @@ package-llvm-$(1): setup-llvm-$(1) $$(LLVM_SRC)/CMakeLists.txt .PHONY: clean-llvm-$(1) clean-llvm-$(1):: $$(MAKE) -C $$(TOP)/llvm -f build.mk clean-llvm \ - LLVM_PATH="$$(LLVM_SRC)" \ LLVM_BUILD="$$(TOP)/sdks/builds/llvm-$(1)" \ LLVM_PREFIX="$$(TOP)/sdks/out/llvm-$(1)" @@ -154,7 +143,7 @@ _llvm-$(1)_CMAKE=$$(MXE_PREFIX)/bin/$(2)-w64-mingw32$$(if $$(filter $$(UNAME),Da # -DLLVM_ENABLE_THREADS=0 is needed because mxe doesn't define std::mutex etc. # -DLLVM_BUILD_EXECUTION_ENGINE=Off is needed because it depends on threads _llvm-$(1)_CMAKE_ARGS = \ - -DCROSS_TOOLCHAIN_FLAGS_NATIVE=-DCMAKE_TOOLCHAIN_FILE=$(LLVM_SRC)/cmake/modules/NATIVE.cmake \ + -DCROSS_TOOLCHAIN_FLAGS_NATIVE=-DCMAKE_TOOLCHAIN_FILE=$$(TOP)/external/llvm/cmake/modules/NATIVE.cmake \ -DLLVM_ENABLE_THREADS=Off \ -DLLVM_BUILD_EXECUTION_ENGINE=Off \ $$(llvm-$(1)_CMAKE_ARGS) @@ -164,10 +153,9 @@ setup-llvm-$(1): mkdir -p $$(TOP)/sdks/out/llvm-$(1) .PHONY: package-llvm-$(1) -package-llvm-$(1): setup-llvm-$(1) $$(LLVM_SRC)/CMakeLists.txt +package-llvm-$(1): setup-llvm-$(1) $$(MAKE) -C $$(TOP)/llvm -f build.mk install-llvm \ CMAKE=$$(_llvm-$(1)_CMAKE) \ - LLVM_PATH="$$(LLVM_SRC)" \ LLVM_BUILD="$$(TOP)/sdks/builds/llvm-$(1)" \ LLVM_PREFIX="$$(TOP)/sdks/out/llvm-$(1)" \ LLVM_CMAKE_ARGS="$$(_llvm-$(1)_CMAKE_ARGS)" @@ -176,7 +164,6 @@ package-llvm-$(1): setup-llvm-$(1) $$(LLVM_SRC)/CMakeLists.txt clean-llvm-$(1):: $$(MAKE) -C $$(TOP)/llvm -f build.mk clean-llvm \ CMAKE=$$(_llvm-$(1)_CMAKE) \ - LLVM_PATH="$$(LLVM_SRC)" \ LLVM_BUILD="$$(TOP)/sdks/builds/llvm-$(1)" \ LLVM_PREFIX="$$(TOP)/sdks/out/llvm-$(1)" |