From e714f232748c08eee438c7722cf78e0e1999a2f7 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Thu, 10 May 2018 22:42:23 +0200 Subject: [PATCH] Build native *-tblgen during cross builds For some reason, LLVM buildsystem does treat our crossbuilds as native builds. Perhaps because we use qemu-user-static to allow running cross binaries. To build everything correcly, native tblgen binaries are needed. This commit build native tblgen binaries and uses them for the cross build. --- Makefile | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ef0edf3..938764d 100644 --- a/Makefile +++ b/Makefile @@ -14,11 +14,14 @@ llvm/tools/clang: llvm/projects/openmp: ln -s ../../openmp $@ -build build_passes: +build build_passes build_native: mkdir $@ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +LLVM_TBLGEN=$(CURDIR)/build_native/bin/llvm-tblgen +CLANG_TBLGEN=$(CURDIR)/build_native/bin/clang-tblgen + LLVM_CROSS_FLAGS += -DCMAKE_C_COMPILER=$(DEB_HOST_GNU_TYPE)-gcc LLVM_CROSS_FLAGS += -DCMAKE_CXX_COMPILER=$(DEB_HOST_GNU_TYPE)-g++ LLVM_CROSS_FLAGS += -DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_GNU_CPU) @@ -28,9 +31,23 @@ LLVM_CROSS_FLAGS += -DCMAKE_CROSSCOMPILING=True ## arm64 binaries on x86 # LLVM_CROSS_FLAGS += -DLLVM_TABLEGEN="/llvm-tblgen" # LLVM_CROSS_FLAGS += -DCLANG_TABLEGEN="/clang-tblgen" +LLVM_CROSS_FLAGS += -DLLVM_TABLEGEN="$(LLVM_TBLGEN)" +LLVM_CROSS_FLAGS += -DCLANG_TABLEGEN="$(CLANG_TBLGEN)" LLVM_CROSS_FLAGS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(DEB_HOST_GNU_TYPE) LLVM_CROSS_FLAGS += -DLLVM_TARGET_ARCH=$(DEB_TARGET_GNU_CPU) #LLVM_CROSS_FLAGS += -DLLVM_TARGETS_TO_BUILD=$(shell echo $(DEB_HOST_ARCH)|tr '[:lower:]' '[:upper:]') + +build/build.ninja: | $(LLVM_TBLGEN) $(CLANG_TBLGEN) + +$(LLVM_TBLGEN) $(CLANG_TBLGEN): | build_native/build.ninja + ninja -C build_native bin/llvm-tblgen bin/clang-tblgen + +build_native/build.ninja: | build_native + cd $(@D) && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(PREFIX)" \ + -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_BACKTRACES=ON -DLLVM_ENABLE_WERROR=OFF \ + -DBUILD_SHARED_LIBS=OFF -DLLVM_ENABLE_RTTI=ON \ + -DCMAKE_CXX_FLAGS='-DHERCULES_PASS_ROOT=\"$(PREFIX)/lib/hercules\"' \ + -G "Ninja" $(CURDIR)/llvm endif -- 2.39.2