Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/.gitignore1
-rw-r--r--llvm/Makefile.am25
-rwxr-xr-xllvm/build_llvm_config.sh47
3 files changed, 71 insertions, 2 deletions
diff --git a/llvm/.gitignore b/llvm/.gitignore
index b336cc7cec9..32c9cdda7eb 100644
--- a/llvm/.gitignore
+++ b/llvm/.gitignore
@@ -1,2 +1,3 @@
/Makefile
/Makefile.in
+/llvm_config.mk
diff --git a/llvm/Makefile.am b/llvm/Makefile.am
index 0f287070d68..52fcfd8e09d 100644
--- a/llvm/Makefile.am
+++ b/llvm/Makefile.am
@@ -1,12 +1,33 @@
EXTRA_DIST=SUBMODULES.json build.mk
+if ENABLE_LLVM
if INTERNAL_LLVM
-all-local: configure-llvm build-llvm install-llvm
+all-local: configure-llvm build-llvm install-llvm llvm_config.mk
-clean-local: clean-llvm
+clean-local: clean-llvm clean-llvm-config
+llvm_config.mk: install-llvm
+ ./build_llvm_config.sh $(abspath $(CURDIR))/usr/bin/llvm-config $(LLVM_CODEGEN_LIBS) > llvm_config.mk
+
+else
+all-local: llvm_config.mk
+
+clean-local: clean-llvm-config
+
+llvm_config.mk:
+ ./build_llvm_config.sh `which llvm-config` $(LLVM_CODEGEN_LIBS) > llvm_config.mk
endif
+else
+all-local:
+
+clean-local:
+endif
+
+clean-llvm-config:
+ - rm -rf llvm_config.mk
+
+.PHONY: clean-llvm-config llvm_config.mk
include build.mk
diff --git a/llvm/build_llvm_config.sh b/llvm/build_llvm_config.sh
new file mode 100755
index 00000000000..d6d06f269bd
--- /dev/null
+++ b/llvm/build_llvm_config.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+llvm_config=$1
+extra_libs="${@:2}"
+
+llvm_api_version=`$llvm_config --mono-api-version` || "0"
+with_llvm=`$llvm_config --prefix`
+
+llvm_config_cflags=`$llvm_config --cflags`
+
+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
+
+# llvm-config --clfags adds warning and optimization flags we don't want
+shared_llvm_cflags="-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"
+cxxflag_additions="-std=c++11 -fno-rtti -fexceptions"
+
+ldflags="-L$with_llvm/lib"
+
+llvm_system=`$llvm_config --system-libs`
+
+
+
+llvm_core_components=`$llvm_config --libs analysis core bitwriter`
+llvm_old_jit=`$llvm_config --libs mcjit jit 2>>/dev/null`
+llvm_new_jit=`$llvm_config --libs orcjit 2>>/dev/null`
+llvm_extra=`$llvm_config --libs $extra_libs`
+llvm_lib_components="$llvm_core_components $llvm_old_jit $llvm_new_jit $llvm_extra"
+
+echo "LLVM_CFLAGS_INTERNAL=$shared_llvm_cflags"
+echo "LLVM_CXXFLAGS_INTERNAL=$shared_llvm_cflags $cxxflag_additions"
+echo "LLVM_LDFLAGS_INTERNAL=$ldflags"
+echo "LLVM_LIBS_INTERNAL=$llvm_lib_components $ldflags $llvm_system $llvm_libc_link"
+
+
+
+
+
+
+
+
+