You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.142
Former-commit-id: 7467d4b717762eeaf652d77f1486dd11ffb1ff1f
This commit is contained in:
parent
e52655b4dc
commit
0abdbe5a7d
@@ -1,30 +1,50 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
LLVM_PATH=llvm
|
||||
EXTRA_DIST=SUBMODULES.json build.mk build_llvm_config.sh
|
||||
|
||||
SUBMODULES_CONFIG_FILE = $(top_srcdir)/llvm/SUBMODULES.json
|
||||
include $(top_srcdir)/scripts/submodules/versions.mk
|
||||
if ENABLE_LLVM
|
||||
|
||||
$(eval $(call ValidateVersionTemplate,llvm,LLVM))
|
||||
if HOST_WIN32
|
||||
llvm_config=llvm-config.exe
|
||||
else
|
||||
llvm_config=llvm-config
|
||||
endif
|
||||
|
||||
# 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
|
||||
if HAVE_ZLIB
|
||||
llvm_extra_libs=-lz
|
||||
else
|
||||
llvm_extra_libs=
|
||||
endif
|
||||
|
||||
# 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
|
||||
if INTERNAL_LLVM
|
||||
|
||||
# Bump the given submodule to its current GIT version
|
||||
# If COMMIT is 1, commit the change
|
||||
bump-current-llvm: __bump-current-version-llvm
|
||||
all-local: configure-llvm build-llvm install-llvm llvm_config.mk
|
||||
|
||||
clean-local:
|
||||
$(RM) -r $(LLVM_PATH)
|
||||
clean-local: clean-llvm clean-llvm-config
|
||||
|
||||
EXTRA_DIST=SUBMODULES.json
|
||||
$(mono_build_root)/llvm/llvm_config.mk: install-llvm
|
||||
$(top_srcdir)/llvm/build_llvm_config.sh "$(top_srcdir)/llvm/usr/bin/$(llvm_config)" "$(LLVM_CODEGEN_LIBS)" "$(llvm_extra_libs)" > $@
|
||||
|
||||
else
|
||||
all-local: llvm_config.mk
|
||||
|
||||
clean-local: clean-llvm-config
|
||||
|
||||
$(mono_build_root)/llvm/llvm_config.mk: $(top_srcdir)/llvm/Makefile.am
|
||||
$(top_srcdir)/llvm/build_llvm_config.sh "$(EXTERNAL_LLVM_CONFIG)" "$(LLVM_CODEGEN_LIBS)" "$(llvm_extra_libs)" > $@
|
||||
endif
|
||||
|
||||
llvm_config.mk: $(mono_build_root)/llvm/llvm_config.mk
|
||||
|
||||
clean-llvm-config:
|
||||
- rm -rf llvm_config.mk
|
||||
|
||||
else
|
||||
all-local:
|
||||
|
||||
clean-local:
|
||||
endif
|
||||
|
||||
# Override this so we don't try to re-copy llvm when we install mono
|
||||
install:
|
||||
|
||||
include build.mk
|
||||
|
||||
135
llvm/Makefile.in
135
llvm/Makefile.in
@@ -90,7 +90,8 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
DIST_COMMON = $(top_srcdir)/scripts/submodules/versions.mk \
|
||||
DIST_COMMON = $(srcdir)/build.mk \
|
||||
$(top_srcdir)/scripts/submodules/versions.mk \
|
||||
$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/mkinstalldirs
|
||||
subdir = llvm
|
||||
@@ -156,7 +157,7 @@ CCDEPMODE = @CCDEPMODE@
|
||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
CMAKE = @CMAKE@
|
||||
CMAKE := $(or $(CMAKE),$(shell which cmake))
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSC = @CSC@
|
||||
@@ -164,6 +165,8 @@ CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_ADD_CFLAGS = @CXX_ADD_CFLAGS@
|
||||
CXX_REMOVE_CFLAGS = @CXX_REMOVE_CFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_PROFILE = @DEFAULT_PROFILE@
|
||||
DEFS = @DEFS@
|
||||
@@ -179,6 +182,7 @@ ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTERNAL_LLVM_CONFIG = @EXTERNAL_LLVM_CONFIG@
|
||||
FGREP = @FGREP@
|
||||
GDKX11 = @GDKX11@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
@@ -219,11 +223,7 @@ LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LLVM_CFLAGS = @LLVM_CFLAGS@
|
||||
LLVM_CONFIG = @LLVM_CONFIG@
|
||||
LLVM_CXXFLAGS = @LLVM_CXXFLAGS@
|
||||
LLVM_LDFLAGS = @LLVM_LDFLAGS@
|
||||
LLVM_LIBS = @LLVM_LIBS@
|
||||
LLVM_CODEGEN_LIBS = @LLVM_CODEGEN_LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTCOMPILE = @LTCOMPILE@
|
||||
LTCXXCOMPILE = @LTCXXCOMPILE@
|
||||
@@ -359,14 +359,21 @@ target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
LLVM_PATH = llvm
|
||||
EXTRA_DIST = SUBMODULES.json build.mk build_llvm_config.sh
|
||||
@ENABLE_LLVM_TRUE@@HOST_WIN32_FALSE@llvm_config = llvm-config
|
||||
@ENABLE_LLVM_TRUE@@HOST_WIN32_TRUE@llvm_config = llvm-config.exe
|
||||
@ENABLE_LLVM_TRUE@@HAVE_ZLIB_FALSE@llvm_extra_libs =
|
||||
@ENABLE_LLVM_TRUE@@HAVE_ZLIB_TRUE@llvm_extra_libs = -lz
|
||||
|
||||
# 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"
|
||||
NINJA := $(shell which ninja)
|
||||
SUBMODULES_CONFIG_FILE = $(top_srcdir)/llvm/SUBMODULES.json
|
||||
SCRIPT = $(top_srcdir)/scripts/submodules/versions.py
|
||||
EXTRA_DIST = SUBMODULES.json
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/submodules/versions.mk $(am__configure_deps)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/build.mk $(top_srcdir)/scripts/submodules/versions.mk $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
@@ -387,7 +394,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/scripts/submodules/versions.mk:
|
||||
$(srcdir)/build.mk $(top_srcdir)/scripts/submodules/versions.mk:
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@@ -442,9 +449,8 @@ distdir: $(DISTFILES)
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
all-am: Makefile all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
@@ -542,19 +548,52 @@ uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
clean-local cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-libtool clean-local cscopelist-am ctags-am distclean \
|
||||
distclean-generic distclean-libtool distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_TRUE@all-local: configure-llvm build-llvm install-llvm llvm_config.mk
|
||||
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_TRUE@clean-local: clean-llvm clean-llvm-config
|
||||
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_TRUE@$(mono_build_root)/llvm/llvm_config.mk: install-llvm
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_TRUE@ $(top_srcdir)/llvm/build_llvm_config.sh "$(top_srcdir)/llvm/usr/bin/$(llvm_config)" "$(LLVM_CODEGEN_LIBS)" "$(llvm_extra_libs)" > $@
|
||||
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_FALSE@all-local: llvm_config.mk
|
||||
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_FALSE@clean-local: clean-llvm-config
|
||||
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_FALSE@$(mono_build_root)/llvm/llvm_config.mk: $(top_srcdir)/llvm/Makefile.am
|
||||
@ENABLE_LLVM_TRUE@@INTERNAL_LLVM_FALSE@ $(top_srcdir)/llvm/build_llvm_config.sh "$(EXTERNAL_LLVM_CONFIG)" "$(LLVM_CODEGEN_LIBS)" "$(llvm_extra_libs)" > $@
|
||||
|
||||
@ENABLE_LLVM_TRUE@llvm_config.mk: $(mono_build_root)/llvm/llvm_config.mk
|
||||
|
||||
@ENABLE_LLVM_TRUE@clean-llvm-config:
|
||||
@ENABLE_LLVM_TRUE@ - rm -rf llvm_config.mk
|
||||
|
||||
@ENABLE_LLVM_FALSE@all-local:
|
||||
|
||||
@ENABLE_LLVM_FALSE@clean-local:
|
||||
|
||||
# Override this so we don't try to re-copy llvm when we install mono
|
||||
install:
|
||||
|
||||
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)
|
||||
|
||||
# usage $(call ValidateVersionTemplate (name,MAKEFILE VAR,repo name))
|
||||
# usage $(call ValidateVersionTemplate (mono,MONO,mono))
|
||||
|
||||
@@ -621,7 +660,7 @@ reset-$(1)::
|
||||
echo "*** git fetch `basename $$($(2)_PATH)`" && (cd $($(2)_PATH) && git fetch); \
|
||||
fi; \
|
||||
else \
|
||||
echo "*** git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2))" && (cd `dirname $($(2)_PATH)` && git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2)) || exit 1 ); \
|
||||
echo "*** git clone $(MODULE_$(2)) -b $(NEEDED_$(2)_BRANCH) --recursive $(DIRECTORY_$(2))" && (cd `dirname $($(2)_PATH)` && git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2)) || exit 1 ); \
|
||||
fi
|
||||
@if test x$$(IGNORE_$(2)_VERSION) = "x"; then \
|
||||
echo "*** [$(1)] git checkout -f" $(NEEDED_$(2)_BRANCH) && (cd $($(2)_PATH) ; git checkout -f $(NEEDED_$(2)_BRANCH) || git checkout -f -b $($(2)_BRANCH_AND_REMOTE)); \
|
||||
@@ -685,8 +724,50 @@ bump-branch-llvm: __bump-branch-llvm
|
||||
# If COMMIT is 1, commit the change
|
||||
bump-current-llvm: __bump-current-version-llvm
|
||||
|
||||
clean-local:
|
||||
$(RM) -r $(LLVM_PATH)
|
||||
$(LLVM_BUILD) $(LLVM_PREFIX):
|
||||
mkdir -p $@
|
||||
|
||||
$(LLVM_PATH):
|
||||
$(MAKE) -f build.mk reset-llvm
|
||||
|
||||
$(LLVM_PATH)/CMakeLists.txt: | $(LLVM_PATH)
|
||||
|
||||
$(LLVM_BUILD)/$(if $(NINJA),build.ninja,Makefile): $(LLVM_PATH)/CMakeLists.txt | $(LLVM_BUILD)
|
||||
cd $(LLVM_BUILD) && $(CMAKE) \
|
||||
$(if $(NINJA),-G Ninja) \
|
||||
-DCMAKE_INSTALL_PREFIX="$(LLVM_PREFIX)" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_BUILD_TESTS=Off \
|
||||
-DLLVM_INCLUDE_TESTS=Off \
|
||||
-DLLVM_BUILD_EXAMPLES=Off \
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off \
|
||||
-DLLVM_TOOLS_TO_BUILD="opt;llc;llvm-config;llvm-dis" \
|
||||
-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
|
||||
-DLLVM_ENABLE_ASSERTIONS=$(if $(INTERNAL_LLVM_ASSERTS),On,Off) \
|
||||
$(LLVM_CMAKE_ARGS) \
|
||||
$(dir $<)
|
||||
|
||||
.PHONY: configure-llvm
|
||||
configure-llvm: $(LLVM_BUILD)/$(if $(NINJA),build.ninja,Makefile)
|
||||
|
||||
# The DESTDIR fix is to prevent the build from trying to install this out-of-build-tree
|
||||
# as the DESTDIR hasn't been created when we're building mono
|
||||
|
||||
.PHONY: build-llvm
|
||||
build-llvm: configure-llvm
|
||||
DESTDIR="" $(if $(NINJA),$(NINJA),$(MAKE)) -C $(LLVM_BUILD)
|
||||
|
||||
.PHONY: install-llvm
|
||||
install-llvm: build-llvm | $(LLVM_PREFIX)
|
||||
DESTDIR="" $(if $(NINJA),$(NINJA),$(MAKE)) -C $(LLVM_BUILD) install
|
||||
|
||||
.PHONY: download-llvm
|
||||
download-llvm:
|
||||
(wget --no-verbose -O - $(LLVM_DOWNLOAD_LOCATION) || curl -L $(LLVM_DOWNLOAD_LOCATION)) | tar -xzf - -C $(dir $(LLVM_PREFIX))
|
||||
|
||||
.PHONY: clean-llvm
|
||||
clean-llvm:
|
||||
$(RM) -r $(LLVM_BUILD) $(LLVM_PREFIX)
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
{
|
||||
"name": "llvm",
|
||||
"url": "git://github.com/mono/llvm.git",
|
||||
"rev": "9f79399f87282524fee099b328bd8cbf07929daf",
|
||||
"remote-branch": "origin/master",
|
||||
"branch": "master",
|
||||
"rev": "fc854b8ec5873d294b80afa3e6cf6a88c5c48886",
|
||||
"remote-branch": "origin/release_60",
|
||||
"branch": "release_60",
|
||||
"directory": "llvm"
|
||||
}
|
||||
]
|
||||
|
||||
80
llvm/build.mk
Normal file
80
llvm/build.mk
Normal file
@@ -0,0 +1,80 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
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"
|
||||
|
||||
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)
|
||||
|
||||
$(LLVM_BUILD)/$(if $(NINJA),build.ninja,Makefile): $(LLVM_PATH)/CMakeLists.txt | $(LLVM_BUILD)
|
||||
cd $(LLVM_BUILD) && $(CMAKE) \
|
||||
$(if $(NINJA),-G Ninja) \
|
||||
-DCMAKE_INSTALL_PREFIX="$(LLVM_PREFIX)" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_BUILD_TESTS=Off \
|
||||
-DLLVM_INCLUDE_TESTS=Off \
|
||||
-DLLVM_BUILD_EXAMPLES=Off \
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off \
|
||||
-DLLVM_TOOLS_TO_BUILD="opt;llc;llvm-config;llvm-dis" \
|
||||
-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
|
||||
-DLLVM_ENABLE_ASSERTIONS=$(if $(INTERNAL_LLVM_ASSERTS),On,Off) \
|
||||
$(LLVM_CMAKE_ARGS) \
|
||||
$(dir $<)
|
||||
|
||||
.PHONY: configure-llvm
|
||||
configure-llvm: $(LLVM_BUILD)/$(if $(NINJA),build.ninja,Makefile)
|
||||
|
||||
# The DESTDIR fix is to prevent the build from trying to install this out-of-build-tree
|
||||
# as the DESTDIR hasn't been created when we're building mono
|
||||
|
||||
.PHONY: build-llvm
|
||||
build-llvm: configure-llvm
|
||||
DESTDIR="" $(if $(NINJA),$(NINJA),$(MAKE)) -C $(LLVM_BUILD)
|
||||
|
||||
.PHONY: install-llvm
|
||||
install-llvm: build-llvm | $(LLVM_PREFIX)
|
||||
DESTDIR="" $(if $(NINJA),$(NINJA),$(MAKE)) -C $(LLVM_BUILD) install
|
||||
|
||||
.PHONY: download-llvm
|
||||
download-llvm:
|
||||
(wget --no-verbose -O - $(LLVM_DOWNLOAD_LOCATION) || curl -L $(LLVM_DOWNLOAD_LOCATION)) | tar -xzf - -C $(dir $(LLVM_PREFIX))
|
||||
|
||||
.PHONY: clean-llvm
|
||||
clean-llvm:
|
||||
$(RM) -r $(LLVM_BUILD) $(LLVM_PREFIX)
|
||||
172
llvm/build_llvm_config.sh
Executable file
172
llvm/build_llvm_config.sh
Executable file
@@ -0,0 +1,172 @@
|
||||
#!/bin/bash
|
||||
|
||||
llvm_config=$1
|
||||
llvm_codegen_libs="$2"
|
||||
llvm_extra_libs="${@:3}"
|
||||
|
||||
use_llvm_config=1
|
||||
llvm_host_win32=0
|
||||
llvm_host_win32_wsl=0
|
||||
llvm_host_win32_cygwin=0
|
||||
|
||||
function win32_format_path {
|
||||
local formatted_path=$1
|
||||
if [[ $llvm_host_win32_wsl = 1 ]] && [[ $1 != "/mnt/"* ]]; then
|
||||
# if path is not starting with /mnt under WSL it could be a windows path, convert using wslpath.
|
||||
formatted_path="$(wslpath -a "$1")"
|
||||
elif [[ $llvm_host_win32_cygwin = 1 ]] && [[ $1 != "/cygdrive/"* ]]; then
|
||||
# if path is not starting with /cygdrive under CygWin it could be a windows path, convert using cygpath.
|
||||
formatted_path="$(cygpath -a "$1")"
|
||||
fi
|
||||
echo "$formatted_path"
|
||||
}
|
||||
|
||||
if [[ $llvm_config = *".exe" ]]; then
|
||||
llvm_host_win32=1
|
||||
# llvm-config is a windows binary. Check if we are running CygWin or WSL since then we might still be able to run llvm-config.exe
|
||||
host_uname="$(uname -a)"
|
||||
case "$host_uname" in
|
||||
*Microsoft*)
|
||||
use_llvm_config=1
|
||||
llvm_host_win32_wsl=1
|
||||
;;
|
||||
CYGWIN*)
|
||||
use_llvm_config=1
|
||||
llvm_host_win32_cygwin=1
|
||||
;;
|
||||
*)
|
||||
use_llvm_config=0
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ $llvm_host_win32 = 1 ]]; then
|
||||
llvm_config=$(win32_format_path "$llvm_config")
|
||||
fi
|
||||
|
||||
if [[ $use_llvm_config = 1 ]]; then
|
||||
llvm_api_version=`$llvm_config --mono-api-version` || "0"
|
||||
with_llvm=`$llvm_config --prefix`
|
||||
llvm_config_cflags=`$llvm_config --cflags`
|
||||
llvm_system=`$llvm_config --system-libs`
|
||||
llvm_core_components=`$llvm_config --libs analysis core bitwriter`
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_old_jit=`$llvm_config --libs mcjit jit 2>>/dev/null`
|
||||
else
|
||||
llvm_old_jit=`$llvm_config --libs mcjit 2>>/dev/null`
|
||||
fi
|
||||
llvm_new_jit=`$llvm_config --libs orcjit 2>>/dev/null`
|
||||
|
||||
if [[ ! -z $llvm_codegen_libs ]]; then
|
||||
llvm_extra=`$llvm_config --libs $llvm_codegen_libs`
|
||||
fi
|
||||
|
||||
# When building for Windows subsystem using WSL or CygWin the path returned from llvm-config.exe
|
||||
# could be a Windows style path, make sure to format it into a path usable for WSL/CygWin.
|
||||
if [[ $llvm_host_win32 = 1 ]]; then
|
||||
with_llvm=$(win32_format_path "$with_llvm")
|
||||
fi
|
||||
fi
|
||||
|
||||
# When cross compiling for Windows on system not capable of running Windows binaries, llvm-config.exe can't be used to query for
|
||||
# LLVM parameters. In that scenario we will need to fallback to default values.
|
||||
if [[ $llvm_host_win32 = 1 ]] && [[ $use_llvm_config = 0 ]]; then
|
||||
# Assume we have llvm-config sitting in llvm-install-root/bin directory, get llvm-install-root directory.
|
||||
with_llvm="$(dirname $llvm_config)"
|
||||
with_llvm="$(dirname $with_llvm)"
|
||||
llvm_config_path=$with_llvm/include/llvm/Config/llvm-config.h
|
||||
|
||||
# llvm-config.exe --mono-api-version
|
||||
llvm_api_version=`awk '/MONO_API_VERSION/ { print $3 }' $llvm_config_path`
|
||||
|
||||
# llvm-config.exe --cflags, returned information currently not used.
|
||||
llvm_config_cflags=
|
||||
|
||||
# llvm-config.exe --system-libs
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_system="-limagehlp -lpsapi -lshell32"
|
||||
else
|
||||
llvm_system="-lpsapi -lshell32 -lole32 -luuid -ladvapi32"
|
||||
fi
|
||||
|
||||
# llvm-config.exe --libs analysis core bitwriter
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_core_components="-lLLVMBitWriter -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMCore -lLLVMSupport"
|
||||
else
|
||||
llvm_core_components="-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle"
|
||||
fi
|
||||
|
||||
# llvm-config.exe --libs mcjit jit
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_old_jit="-lLLVMJIT -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMMCJIT -lLLVMTarget -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMExecutionEngine -lLLVMMC -lLLVMCore -lLLVMSupport"
|
||||
else
|
||||
# Current build of LLVM 60 for cross Windows builds doesn't support LLVM JIT.
|
||||
llvm_old_jit=
|
||||
fi
|
||||
|
||||
# LLVM 36 doesn't support new JIT and LLVM 60 is build without LLVM JIT support for cross Windows builds.
|
||||
llvm_new_jit=
|
||||
|
||||
# Check codegen libs and add needed libraries.
|
||||
case "$llvm_codegen_libs" in
|
||||
*x86codegen*)
|
||||
# llvm-config.exe --libs x86codegen
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_extra="-lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMObject -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMCore -lLLVMSupport"
|
||||
else
|
||||
llvm_extra="-lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle"
|
||||
fi
|
||||
;;
|
||||
*armcodegen*)
|
||||
# llvm-config.exe --libs armcodegen
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_extra="-lLLVMARMCodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMCore -lLLVMARMDesc -lLLVMMCDisassembler -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMMC -lLLVMSupport"
|
||||
else
|
||||
llvm_extra="-lLLVMARMCodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMARMDesc -lLLVMMCDisassembler -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMMC -lLLVMSupport -lLLVMDemangle"
|
||||
fi
|
||||
;;
|
||||
*aarch64codegen*)
|
||||
# llvm-config.exe --libs aarch64codegen
|
||||
if [[ $llvm_api_version -lt 600 ]]; then
|
||||
llvm_extra="-lLLVMAArch64CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMCore -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMAArch64Utils -lLLVMSupport"
|
||||
else
|
||||
llvm_extra="-lLLVMAArch64CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMAArch64Utils -lLLVMSupport -lLLVMDemangle"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
llvm_extra=$llvm_codegen_libs
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ $llvm_config_cflags = *"stdlib=libc++"* ]]; then
|
||||
llvm_libc_c="-stdlib=libc++"
|
||||
llvm_libc_link="-lc++"
|
||||
else
|
||||
llvm_libc_c=""
|
||||
llvm_libc_link="-lstdc++"
|
||||
fi
|
||||
|
||||
if [[ $llvm_host_win32 = 1 ]]; then
|
||||
host_cxxflag_additions="-std=gnu++11"
|
||||
host_cflag_additions="-DNDEBUG"
|
||||
else
|
||||
host_cxxflag_additions="-std=c++11"
|
||||
host_cflag_additions=""
|
||||
fi
|
||||
|
||||
if [[ ! -z $llvm_extra_libs ]]; then
|
||||
llvm_extra="$llvm_extra $llvm_extra_libs"
|
||||
fi
|
||||
|
||||
# llvm-config --clfags adds warning and optimization flags we don't want
|
||||
cflags_additions="-I$with_llvm/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DLLVM_API_VERSION=$llvm_api_version $llvm_libc_c $host_cflag_additions"
|
||||
|
||||
cxxflag_additions="-fno-rtti -fexceptions $host_cxxflag_additions"
|
||||
|
||||
ldflags="-L$with_llvm/lib"
|
||||
|
||||
llvm_lib_components="$llvm_core_components $llvm_old_jit $llvm_new_jit $llvm_extra"
|
||||
|
||||
echo "LLVM_CFLAGS_INTERNAL=$cflags_additions"
|
||||
echo "LLVM_CXXFLAGS_INTERNAL=$cflags_additions $cxxflag_additions"
|
||||
echo "LLVM_LDFLAGS_INTERNAL=$ldflags"
|
||||
echo "LLVM_LIBS_INTERNAL=$llvm_lib_components $ldflags $llvm_system $llvm_libc_link"
|
||||
Reference in New Issue
Block a user