From: Michal Sojka Date: Thu, 10 May 2018 20:42:23 +0000 (+0200) Subject: Build native *-tblgen during cross builds X-Git-Tag: debian/2017.11-2~2 X-Git-Url: http://rtime.felk.cvut.cz/gitweb/hercules2020/hercules-compiler.git/commitdiff_plain/e714f232748c08eee438c7722cf78e0e1999a2f7?ds=sidebyside 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. --- 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