diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/.gitignore | 1 | ||||
-rw-r--r-- | llvm/Makefile.am | 25 | ||||
-rwxr-xr-x | llvm/build_llvm_config.sh | 47 |
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" + + + + + + + + + |