From 0001ff9f31b8b0986b7c4e99d02583fbcab44074 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:59:04 +0200 Subject: [PATCH 01/21] cmake: use ON instead of YES for consistency --- debian/changelog | 5 ++++- debian/rules | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7967cfe6..9fc11ff3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,11 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium + * cmake: use ON instead of YES for consistency + + [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 - -- Gianfranco Costamagna Fri, 27 Aug 2021 10:43:26 +0200 + -- Sylvestre Ledru Sun, 29 Aug 2021 15:15:18 +0200 llvm-toolchain-12 (1:12.0.1-6) unstable; urgency=medium diff --git a/debian/rules b/debian/rules index 601d0371..948f55b9 100755 --- a/debian/rules +++ b/debian/rules @@ -205,7 +205,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc)) LIBUNWIND_ENABLE=no else PROJECTS+=;libunwind - CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=YES + CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON endif RUN_TEST=yes @@ -498,8 +498,8 @@ LIBCXX_CMAKE_OPTIONS := \ -DCMAKE_RANLIB=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ranlib \ -DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - -DLIBCXX_USE_COMPILER_RT=YES \ - -DLIBCXXABI_USE_COMPILER_RT=YES \ + -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ From 135e393ff76ace5b2cccda803e082a068ce400cd Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:59:33 +0200 Subject: [PATCH 02/21] Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON to libc++ when libunwind is built Matches what is done on brew: https://bit.ly/3kDNpC9 --- debian/changelog | 8 +++++++- debian/rules | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9fc11ff3..2ad12d2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,12 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium - * cmake: use ON instead of YES for consistency + * cmake: use ON instead of YES for consistency + * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON + LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF + LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON + to libc++ when libunwind is built + Matches what is done on brew: + https://bit.ly/3kDNpC9 [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 diff --git a/debian/rules b/debian/rules index 948f55b9..ced0e90d 100755 --- a/debian/rules +++ b/debian/rules @@ -205,7 +205,10 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc)) LIBUNWIND_ENABLE=no else PROJECTS+=;libunwind - CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON + CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ + -DDLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ + -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ + -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON endif RUN_TEST=yes From 5679c920dd632ea9cf54ac7fbb3bfc1ea959bbbc Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:32:25 +0200 Subject: [PATCH 03/21] check if clang-tidy is installed --- debian/qualify-clang.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index bc571f00..3e2a7222 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -68,6 +68,11 @@ if ! grep -q -E "scan-build: 0 bugs found." foo.log; then fi rm -rf scan-build +if test ! -f /usr/bin/clang-tidy-$VERSION; then + echo "Install clang-tidy-$VERSION" + exit 1 +fi + echo 'namespace mozilla { namespace dom { void foo(); From 296a093d1f6959dcaf948dfad27f305f4fa1f293 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 17:36:19 +0200 Subject: [PATCH 04/21] Add debian/source/options to ignore the diff (much much faster to repack) --- debian/changelog | 1 + debian/source/options | 1 + 2 files changed, 2 insertions(+) create mode 100644 debian/source/options diff --git a/debian/changelog b/debian/changelog index 2ad12d2f..5a21f50b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium * cmake: use ON instead of YES for consistency + * Add debian/source/options to ignore the diff (much much faster to repack) * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 00000000..976f27ab --- /dev/null +++ b/debian/source/options @@ -0,0 +1 @@ +extend-diff-ignore = "(^|/)(clang|clang-tools-extra|compiler-rt|CONTRIBUTING.md|debuginfo-tests|flang|integration-test-suite|libc|libclc|libcxx|libcxxabi|libunwind|lld|lldb|llvm|mlir|openmp|parallel-libs|polly|pstl|README.md|runtimes|utils|)" From 2903f4fa18e00527559daf4a92d3dd0e59b7c111 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 20:29:51 +0200 Subject: [PATCH 05/21] try to used runtimes and others refactors --- debian/changelog | 13 ++++++ debian/rules | 118 ++++++++++++++++------------------------------- 2 files changed, 52 insertions(+), 79 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5a21f50b..718ef8ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium +<<<<<<< * cmake: use ON instead of YES for consistency * Add debian/source/options to ignore the diff (much much faster to repack) * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON @@ -11,6 +12,18 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 +======= + * cmake: use ON instead of YES for consistency + * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON + LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF + LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON + to libc++ when libunwind is built + Matches what is done on brew: + https://bit.ly/3kDNpC9 + + [ Gianfranco Costamagna ] + * Add a patch to fix omp build on riscv64 +>>>>>>> -- Sylvestre Ledru Sun, 29 Aug 2021 15:15:18 +0200 diff --git a/debian/rules b/debian/rules index ced0e90d..bc2cba8c 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,8 @@ #!/usr/bin/make -f # polly, openmp & lldb aren't enabled for every platform -PROJECTS = clang;clang-tools-extra;libcxx;libcxxabi;compiler-rt;lld;debuginfo-tests +PROJECTS = clang;clang-tools-extra;lld;debuginfo-tests +RUNTIMES = compiler-rt;libcxx;libcxxabi TARGET_BUILD := build-llvm TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins @@ -103,7 +104,7 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF # Check for ancient libstdc++ fails due to atomics usage - CMAKE_EXTRA_LIBCXX += -DLLVM_COMPILER_CHECKED=ON + CMAKE_LIBCXX_EXTRA += -DLLVM_COMPILER_CHECKED=ON # Prevent clang from getting a > v4t default # See bug #868779 CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi @@ -195,8 +196,7 @@ OPENMP_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x x32)) OPENMP_ENABLE=no else - PROJECTS+=;openmp -# CMAKE_EXTRA += -DLIBOMPTARGET_BUILD_NVPTX_BCLIB=ON -DLLVM_ENABLE_RUNTIMES=openmp + RUNTIMES+=;openmp endif # Enable libunwind (or not) @@ -204,11 +204,12 @@ LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc)) LIBUNWIND_ENABLE=no else - PROJECTS+=;libunwind + RUNTIMES += ;libunwind CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ -DDLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ - -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON + -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \ + -DLIBUNWIND_USE_COMPILER_RT=ON endif RUN_TEST=yes @@ -328,6 +329,7 @@ endif # For some reasons, some spaces are added, removing them PROJECTS_LIST := $(shell echo "$(PROJECTS)"|sed -e "s| ||g") +RUNTIMES_LIST := $(shell echo "$(RUNTIMES)"|sed -e "s| ||g") preconfigure: @@ -344,6 +346,7 @@ preconfigure: @echo "DISTRO=$(DISTRO)" @echo "GCC_VERSION=$(GCC_VERSION)" @echo "PROJECTS=$(PROJECTS_LIST)" + @echo "RUNTIMES=$(RUNTIMES_LIST)" @echo "LLVM_VERSION=$(LLVM_VERSION)" @echo "LLVM_VERSION_FULL=$(LLVM_VERSION_FULL)" @echo "LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)" @@ -381,6 +384,25 @@ preconfigure: sed -i -e "s|#spv\ ||g" debian/libclc-$(LLVM_VERSION).install; \ fi +# The various options to build libc++ and libc++abi + +LIBCXX_CMAKE_OPTIONS := \ + -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ + -DLIBCXX_CXX_ABI=libcxxabi \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ + -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ + -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ + -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ + -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ + -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ + -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + $(CMAKE_LIBCXX_EXTRA) + # Override this two targets. They are trying to manage the .in conversion for me override_dh_ocamlinit: override_dh_ocamlclean: @@ -416,14 +438,15 @@ override_dh_auto_configure: preconfigure echo "Running tests: $(RUN_TEST)" echo "Using cmake: $(CMAKE_BIN)"; \ - cd $(TARGET_BUILD) && \ - LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../llvm/ \ + LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ + -DLLVM_ENABLE_RUNTIMES="$(RUNTIMES_LIST)" \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DLLVM_LINK_LLVM_DYLIB=ON \ -DLLVM_INSTALL_UTILS=ON \ -DLLVM_VERSION_SUFFIX= \ @@ -433,11 +456,11 @@ override_dh_auto_configure: preconfigure -DLLVM_ENABLE_FFI=ON \ -DLLVM_ENABLE_DUMP=ON \ $(CMAKE_EXTRA) \ + $(LIBCXX_CMAKE_OPTIONS) \ -DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DCLANG_LINK_CLANG_DYLIB=ON \ -DENABLE_LINKER_BUILD_ID=ON \ -DCOMPILER_RT_USE_LIBCXX=NO \ - -DLIBUNWIND_USE_COMPILER_RT=ON \ $(Z3_FLAG) \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ @@ -460,7 +483,7 @@ VERBOSE=VERBOSE=1 #VERBOSE=-v debian-full-build: - $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 $(BUILD_METHOD) + $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 stage2 compiler-rt runtimes # Check the stage 2 build worked if test "$(BUILD_METHOD)" = "stage2"; then \ @@ -473,6 +496,8 @@ debian-full-build: echo "libclang-$(LLVM_VERSION).so.1 depends on libclang-cpp. Should not be the case"; \ exit 2; \ fi +# $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 runtimes + touch $@ debian-libfuzzer-build: @@ -486,65 +511,6 @@ ifeq (${LIBFUZZER_ENABLE},yes) endif touch $@ - -LIBCXX_CMAKE_OPTIONS := \ - -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ - -DLLVM_CONFIG_PATH=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_CXX_COMPILER=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/clang++ \ - -DCMAKE_C_COMPILER=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/clang \ - -DCMAKE_CXX_FLAGS="$(LIBCXXFLAGS)" \ - -DCMAKE_EXE_LINKER_FLAGS="" \ - -DCMAKE_SHARED_LINKER_FLAGS="" \ - -DCMAKE_MODULE_LINKER_FLAGS="" \ - -DCMAKE_AR=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ar \ - -DCMAKE_RANLIB=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ranlib \ - -DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \ - -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - -DLIBCXX_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ - -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ - -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ - $(CMAKE_EXTRA) \ - $(CMAKE_EXTRA_LIBCXX) - -debian-libcxx-build: -# Builds libcxx - - mkdir -p libcxx/build - mkdir -p libcxxabi/build - echo "Using cmake: $(CMAKE_BIN)"; \ - cd libcxxabi/build && \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ - $(LIBCXX_CMAKE_OPTIONS) \ - -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ - -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ - -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ - -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - -DLLVM_ENABLE_RTTI=ON \ - $(CMAKE_LIBCXX_EXTRA) && \ - $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" - touch $@ - -debian-libcxxabi-build: -# Builds libcxxabi - - mkdir -p libcxxabi/build - - echo "Using cmake: $(CMAKE_BIN)"; \ - cd libcxx/build && \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ - $(LIBCXX_CMAKE_OPTIONS) \ - -DLIBCXX_CXX_ABI=libcxxabi \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ - -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ - -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ - $(CMAKE_LIBCXX_EXTRA) && \ - $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" - touch $@ - debian-libclc-build: # Builds libclc @@ -565,7 +531,7 @@ debian-libclc-build: make $(NJOBS) $(VERBOSE) touch $@ -override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxx-build debian-libcxxabi-build debian-libclc-build +override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libclc-build override_dh_prep: build_doc dh_prep @@ -624,7 +590,7 @@ override_dh_auto_install: rm -rf $(find $(TARGET_BUILD) -wholename '*CMakeFiles*' -not -name CMakeLists.txt -a -name "*.dir" -type d) # install/fast enables a make install without recompiling temporary files if test "$(BUILD_METHOD)" = "stage2"; then \ - $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install DESTDIR=$(DEB_INST)/; \ + $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install install-runtimes DESTDIR=$(DEB_INST)/; \ else \ $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) install DESTDIR=$(DEB_INST)/; \ fi @@ -701,9 +667,6 @@ endif rm -rf $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/__pycache__/ \ $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/*/__pycache__/ - - $(MAKE) -C libcxxabi/build install DESTDIR=$(DEB_INST) - $(MAKE) -C libcxx/build install DESTDIR=$(DEB_INST) $(MAKE) -C libclc/build install DESTDIR=$(DEB_INST) # Rename binaries @@ -898,11 +861,8 @@ endif # Sanitizer $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-sanitizer || true -# Libcxx - $(MAKE) $(NJOBS) -C libcxx/build check-libcxx || true - -# Libcxxabi - $(MAKE) $(MAKE) -C libcxxabi/build check-libcxxabi || true +# Libcxx & libcxxabi + $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-runtimes || true # Libclc $(MAKE) $(MAKE) -C libclc/build test || true From 4431d4bc187d56c54dd63b44ad62031b1f0a1d1f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 23:02:27 +0200 Subject: [PATCH 06/21] try back the old behavior --- debian/rules | 127 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 43 deletions(-) diff --git a/debian/rules b/debian/rules index bc2cba8c..d27efc6a 100755 --- a/debian/rules +++ b/debian/rules @@ -1,16 +1,12 @@ #!/usr/bin/make -f # polly, openmp & lldb aren't enabled for every platform -PROJECTS = clang;clang-tools-extra;lld;debuginfo-tests -RUNTIMES = compiler-rt;libcxx;libcxxabi +PROJECTS = clang;clang-tools-extra;libcxx;libcxxabi;compiler-rt;lld;debuginfo-tests TARGET_BUILD := build-llvm TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins DEB_INST := $(CURDIR)/debian/tmp/ -# Disable to move the previous method -BUILD_METHOD := stage2 - GXX_VERSIONED_PACKAGE := $(shell dpkg-query -W -f '$${Depends}' g++ | grep -o 'g++-[0-9][0-9.]*' | tail -n1 ) GXX_VERSIONED_EXECUTABLE := $(shell dpkg -L $(GXX_VERSIONED_PACKAGE) | grep '/usr/bin/g++-[0-9][0-9.]*' | xargs ls -d | tail -n1 ) GCC_VERSION := $(subst /usr/bin/g++-,,$(GXX_VERSIONED_EXECUTABLE)) @@ -196,7 +192,7 @@ OPENMP_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x x32)) OPENMP_ENABLE=no else - RUNTIMES+=;openmp + PROJECTS+=;openmp endif # Enable libunwind (or not) @@ -204,9 +200,9 @@ LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc)) LIBUNWIND_ENABLE=no else - RUNTIMES += ;libunwind + PROJECTS += ;libunwind CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DDLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ + -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \ -DLIBUNWIND_USE_COMPILER_RT=ON @@ -329,7 +325,7 @@ endif # For some reasons, some spaces are added, removing them PROJECTS_LIST := $(shell echo "$(PROJECTS)"|sed -e "s| ||g") -RUNTIMES_LIST := $(shell echo "$(RUNTIMES)"|sed -e "s| ||g") +#RUNTIMES_LIST := $(shell echo "$(RUNTIMES)"|sed -e "s| ||g") preconfigure: @@ -346,7 +342,7 @@ preconfigure: @echo "DISTRO=$(DISTRO)" @echo "GCC_VERSION=$(GCC_VERSION)" @echo "PROJECTS=$(PROJECTS_LIST)" - @echo "RUNTIMES=$(RUNTIMES_LIST)" +# @echo "RUNTIMES=$(RUNTIMES_LIST)" @echo "LLVM_VERSION=$(LLVM_VERSION)" @echo "LLVM_VERSION_FULL=$(LLVM_VERSION_FULL)" @echo "LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)" @@ -384,25 +380,6 @@ preconfigure: sed -i -e "s|#spv\ ||g" debian/libclc-$(LLVM_VERSION).install; \ fi -# The various options to build libc++ and libc++abi - -LIBCXX_CMAKE_OPTIONS := \ - -DLIBCXX_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ - -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ - -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ - -DLIBCXX_CXX_ABI=libcxxabi \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ - -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ - -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ - -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ - -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ - -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ - -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - $(CMAKE_LIBCXX_EXTRA) - # Override this two targets. They are trying to manage the .in conversion for me override_dh_ocamlinit: override_dh_ocamlclean: @@ -440,7 +417,6 @@ override_dh_auto_configure: preconfigure echo "Using cmake: $(CMAKE_BIN)"; \ LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ - -DLLVM_ENABLE_RUNTIMES="$(RUNTIMES_LIST)" \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_VERBOSE_MAKEFILE=ON \ @@ -456,7 +432,6 @@ override_dh_auto_configure: preconfigure -DLLVM_ENABLE_FFI=ON \ -DLLVM_ENABLE_DUMP=ON \ $(CMAKE_EXTRA) \ - $(LIBCXX_CMAKE_OPTIONS) \ -DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DCLANG_LINK_CLANG_DYLIB=ON \ -DENABLE_LINKER_BUILD_ID=ON \ @@ -483,14 +458,12 @@ VERBOSE=VERBOSE=1 #VERBOSE=-v debian-full-build: - $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 stage2 compiler-rt runtimes + $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 stage2 # Check the stage 2 build worked - if test "$(BUILD_METHOD)" = "stage2"; then \ if ! readelf --string-dump .comment $(TARGET_BUILD_STAGE2)/bin/clang 2>&1|grep -q "clang version"; then \ echo "clang hasn't been built using clang. Bye bye. Check that the stage2 build has been done."; \ exit 2; \ - fi; \ fi if ldd $(TARGET_BUILD_STAGE2)/lib/libclang-$(LLVM_VERSION).so.1|grep -q libclang-cpp-$(LLVM_VERSION); then \ echo "libclang-$(LLVM_VERSION).so.1 depends on libclang-cpp. Should not be the case"; \ @@ -511,6 +484,71 @@ ifeq (${LIBFUZZER_ENABLE},yes) endif touch $@ +# The various options to build libc++ and libc++abi + +LIBCXX_CMAKE_OPTIONS := \ + -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ + -DLLVM_CONFIG_PATH=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_CXX_COMPILER=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/clang++ \ + -DCMAKE_C_COMPILER=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/clang \ + -DCMAKE_CXX_FLAGS="$(LIBCXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="" \ + -DCMAKE_SHARED_LINKER_FLAGS="" \ + -DCMAKE_MODULE_LINKER_FLAGS="" \ + -DCMAKE_AR=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ar \ + -DCMAKE_RANLIB=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ranlib \ + -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ + -DLIBCXX_CXX_ABI=libcxxabi \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ + -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ + -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ + -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ + -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ + -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ + -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + $(CMAKE_EXTRA) \ + $(CMAKE_LIBCXX_EXTRA) + +debian-libcxx-build: +# Builds libcxx + mkdir -p libcxx/build + mkdir -p libcxxabi/build + echo "Using cmake: $(CMAKE_BIN)"; \ + cd libcxxabi/build && \ + $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ + $(LIBCXX_CMAKE_OPTIONS) \ + -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ + -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ + -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ + -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLLVM_ENABLE_RTTI=ON \ + $(CMAKE_LIBCXX_EXTRA) && \ + $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" + touch $@ + +debian-libcxxabi-build: +# Builds libcxxabi + mkdir -p libcxxabi/build + echo "Using cmake: $(CMAKE_BIN)"; \ + cd libcxx/build && \ + $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ + $(LIBCXX_CMAKE_OPTIONS) \ + -DLIBCXX_CXX_ABI=libcxxabi \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ + -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ + -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ + $(CMAKE_LIBCXX_EXTRA) && \ + $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" + touch $@ + + debian-libclc-build: # Builds libclc @@ -531,7 +569,7 @@ debian-libclc-build: make $(NJOBS) $(VERBOSE) touch $@ -override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libclc-build +override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxx-build debian-libcxxabi-build debian-libclc-build override_dh_prep: build_doc dh_prep @@ -589,11 +627,8 @@ override_dh_auto_install: # Clean up temporary files to make sure the install works rm -rf $(find $(TARGET_BUILD) -wholename '*CMakeFiles*' -not -name CMakeLists.txt -a -name "*.dir" -type d) # install/fast enables a make install without recompiling temporary files - if test "$(BUILD_METHOD)" = "stage2"; then \ - $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install install-runtimes DESTDIR=$(DEB_INST)/; \ - else \ - $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) install DESTDIR=$(DEB_INST)/; \ - fi + $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install DESTDIR=$(DEB_INST)/ + # Not used on Linux. rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/argdumper rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang/clang-format-bbedit.applescript @@ -667,6 +702,9 @@ endif rm -rf $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/__pycache__/ \ $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/*/__pycache__/ + $(MAKE) -C libcxxabi/build install DESTDIR=$(DEB_INST) + $(MAKE) -C libcxx/build install DESTDIR=$(DEB_INST) + $(MAKE) -C libclc/build install DESTDIR=$(DEB_INST) # Rename binaries @@ -745,7 +783,7 @@ endif # Delete the target build directory to save some space on the build systems # All the files have been installed in $(CURDIR)/debian/tmp/ already - rm -rf $(TARGET_BUILD) +# rm -rf $(TARGET_BUILD) override_dh_makeshlibs: @@ -861,8 +899,11 @@ endif # Sanitizer $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-sanitizer || true -# Libcxx & libcxxabi - $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-runtimes || true +# Libcxx + $(MAKE) $(NJOBS) -C libcxx/build check-libcxx || true + +# Libcxxabi + $(MAKE) $(MAKE) -C libcxxabi/build check-libcxxabi || true # Libclc $(MAKE) $(MAKE) -C libclc/build test || true From 1ea2400bf742405b5b45e3452772ada1a67e6929 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 15:30:32 +0200 Subject: [PATCH 07/21] unwind should use compiler-rt --- debian/rules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/rules b/debian/rules index d27efc6a..d97072c2 100755 --- a/debian/rules +++ b/debian/rules @@ -436,6 +436,7 @@ override_dh_auto_configure: preconfigure -DCLANG_LINK_CLANG_DYLIB=ON \ -DENABLE_LINKER_BUILD_ID=ON \ -DCOMPILER_RT_USE_LIBCXX=NO \ + -DLIBUNWIND_USE_COMPILER_RT=ON \ $(Z3_FLAG) \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ From 7f965fcb06849bdfc73e5466c1cae9ec62126602 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 17:58:02 +0200 Subject: [PATCH 08/21] remove non working args --- debian/rules | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/rules b/debian/rules index d97072c2..276dc982 100755 --- a/debian/rules +++ b/debian/rules @@ -202,9 +202,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc)) else PROJECTS += ;libunwind CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ - -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ - -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \ -DLIBUNWIND_USE_COMPILER_RT=ON endif From 433ee8f108dcb869a1b37db504dc55f7a90b1e17 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 17:59:26 +0200 Subject: [PATCH 09/21] move arguments in their own section --- debian/rules | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/debian/rules b/debian/rules index 276dc982..e87d1b9f 100755 --- a/debian/rules +++ b/debian/rules @@ -496,22 +496,9 @@ LIBCXX_CMAKE_OPTIONS := \ -DCMAKE_MODULE_LINKER_FLAGS="" \ -DCMAKE_AR=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ar \ -DCMAKE_RANLIB=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-ranlib \ - -DLIBCXX_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ - -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ - -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ - -DLIBCXX_CXX_ABI=libcxxabi \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ - -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ - -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ - -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ - -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ - -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ - -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - $(CMAKE_EXTRA) \ - $(CMAKE_LIBCXX_EXTRA) + -DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \ + -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ + $(CMAKE_EXTRA) debian-libcxx-build: # Builds libcxx @@ -525,6 +512,7 @@ debian-libcxx-build: -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ -DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \ -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLIBCXXABI_USE_COMPILER_RT=YES \ -DLLVM_ENABLE_RTTI=ON \ $(CMAKE_LIBCXX_EXTRA) && \ $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" @@ -542,7 +530,12 @@ debian-libcxxabi-build: -DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \ -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ - $(CMAKE_LIBCXX_EXTRA) && \ + -DLIBCXX_USE_COMPILER_RT=YES \ + -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ + $(CMAKE_LIBCXX_EXTRA) && cd build && \ $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" touch $@ From 0592c3fcfcf9fb196c1fd30dc4c61726386e9b35 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 17:59:50 +0200 Subject: [PATCH 10/21] set the right name for the targets --- debian/rules | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/debian/rules b/debian/rules index e87d1b9f..a3e47340 100755 --- a/debian/rules +++ b/debian/rules @@ -500,10 +500,8 @@ LIBCXX_CMAKE_OPTIONS := \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ $(CMAKE_EXTRA) -debian-libcxx-build: -# Builds libcxx - mkdir -p libcxx/build - mkdir -p libcxxabi/build +debian-libcxxabi-build: +# Builds libcxxabi echo "Using cmake: $(CMAKE_BIN)"; \ cd libcxxabi/build && \ $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ @@ -514,13 +512,12 @@ debian-libcxx-build: -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DLIBCXXABI_USE_COMPILER_RT=YES \ -DLLVM_ENABLE_RTTI=ON \ - $(CMAKE_LIBCXX_EXTRA) && \ + $(CMAKE_LIBCXX_EXTRA) && cd build && \ $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" touch $@ -debian-libcxxabi-build: -# Builds libcxxabi - mkdir -p libcxxabi/build +debian-libcxx-build: +# Builds libcxx echo "Using cmake: $(CMAKE_BIN)"; \ cd libcxx/build && \ $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ @@ -560,7 +557,7 @@ debian-libclc-build: make $(NJOBS) $(VERBOSE) touch $@ -override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxx-build debian-libcxxabi-build debian-libclc-build +override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxxabi-build debian-libcxx-build debian-libclc-build override_dh_prep: build_doc dh_prep From 3ac274e97a086e487d945199288710458c68a2c4 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 18:00:02 +0200 Subject: [PATCH 11/21] use the -S -B cmake options --- debian/rules | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/debian/rules b/debian/rules index a3e47340..f03230f7 100755 --- a/debian/rules +++ b/debian/rules @@ -503,8 +503,9 @@ LIBCXX_CMAKE_OPTIONS := \ debian-libcxxabi-build: # Builds libcxxabi echo "Using cmake: $(CMAKE_BIN)"; \ - cd libcxxabi/build && \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ + cd libcxxabi && \ + $(PRE_PROCESS_CONF) $(CMAKE_BIN) \ + -S . -B build \ $(LIBCXX_CMAKE_OPTIONS) \ -DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \ -DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \ @@ -519,8 +520,9 @@ debian-libcxxabi-build: debian-libcxx-build: # Builds libcxx echo "Using cmake: $(CMAKE_BIN)"; \ - cd libcxx/build && \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \ + cd libcxx && \ + $(PRE_PROCESS_CONF) $(CMAKE_BIN) \ + -S . -B build \ $(LIBCXX_CMAKE_OPTIONS) \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \ From 1d3572279afedb47292c37f9dd31ff8144c7e471 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 16:51:37 +0200 Subject: [PATCH 12/21] Don't generate the llvm-mcmarkup & lldb-mi manpages (don't exist anymore) (LP: #1940713) --- debian/changelog | 12 ++++++++++++ debian/rules | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 718ef8ad..af63e03d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,16 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 + * cmake: use ON instead of YES for consistency + * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON + LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF + LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON + to libc++ when libunwind is built + Matches what is done on brew: + https://bit.ly/3kDNpC9 + + [ Gianfranco Costamagna ] + * Add a patch to fix omp build on riscv64 ======= * cmake: use ON instead of YES for consistency * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON @@ -20,6 +30,8 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium to libc++ when libunwind is built Matches what is done on brew: https://bit.ly/3kDNpC9 + * Don't generate the llvm-mcmarkup & lldb-mi manpages (don't exist anymore) + (LP: #1940713) [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 diff --git a/debian/rules b/debian/rules index f03230f7..cab3c7dd 100755 --- a/debian/rules +++ b/debian/rules @@ -603,7 +603,7 @@ endif help2man --no-info --version-string=$(LLVM_VERSION) clang/tools/scan-view/bin/scan-view > debian/man/scan-view-$(LLVM_VERSION).1 || true help2man --no-info --version-string=$(LLVM_VERSION) clang/tools/clang-format/clang-format-diff.py > debian/man/clang-format-diff-$(LLVM_VERSION).1 || true - CMDS="llvm-dwarfdump llvm-mc llvm-mcmarkup llvm-objdump llvm-rtdyld llvm-size llvm-ranlib lldb lldb-mi clang-format clang clang++ clang-tblgen clang-check clang-cpp clang-tidy clang-apply-replacements clang-rename clang-query pp-trace sancov lli modularize clang-include-fixer find-all-symbols clang-reorder-fields ld.lld llvm-tblgen clang-change-namespace clang-offload-bundler clangd"; \ + CMDS="llvm-dwarfdump llvm-mc llvm-objdump llvm-rtdyld llvm-size llvm-ranlib lldb clang-format clang clang++ clang-tblgen clang-check clang-cpp clang-tidy clang-apply-replacements clang-rename clang-query pp-trace sancov lli modularize clang-include-fixer find-all-symbols clang-reorder-fields ld.lld llvm-tblgen clang-change-namespace clang-offload-bundler clangd"; \ for f in $$CMDS; do \ echo "Generating manpage of $$f"; \ LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/:/usr/lib/*/libfakeroot help2man --no-info --version-string=$(LLVM_VERSION) $(TARGET_BUILD_STAGE2)/bin/$$f > debian/man/$$f-$(LLVM_VERSION).1 || true; \ From 2dab488e22b9b5bcfea5e176b3e34fe4c687a746 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 20:31:04 +0200 Subject: [PATCH 13/21] Fix changelog --- debian/changelog | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/debian/changelog b/debian/changelog index af63e03d..ca5841fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,28 +1,11 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium -<<<<<<< - * cmake: use ON instead of YES for consistency * Add debian/source/options to ignore the diff (much much faster to repack) - * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON - LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF - LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON - to libc++ when libunwind is built - Matches what is done on brew: - https://bit.ly/3kDNpC9 [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 - * cmake: use ON instead of YES for consistency - * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON - LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF - LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON - to libc++ when libunwind is built - Matches what is done on brew: - https://bit.ly/3kDNpC9 - [ Gianfranco Costamagna ] - * Add a patch to fix omp build on riscv64 -======= + [ Sylvestre Ledru ] * cmake: use ON instead of YES for consistency * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF @@ -33,10 +16,6 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium * Don't generate the llvm-mcmarkup & lldb-mi manpages (don't exist anymore) (LP: #1940713) - [ Gianfranco Costamagna ] - * Add a patch to fix omp build on riscv64 ->>>>>>> - -- Sylvestre Ledru Sun, 29 Aug 2021 15:15:18 +0200 llvm-toolchain-12 (1:12.0.1-6) unstable; urgency=medium From 2b5bc71a9f0df64fd83fb2ceff9d90061c50109c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 20:57:23 +0200 Subject: [PATCH 14/21] fix changelog --- debian/changelog | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index ca5841fb..c8b1a947 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,6 @@ -llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium +llvm-toolchain-12 (1:12.0.1-7) unstable; urgency=medium * Add debian/source/options to ignore the diff (much much faster to repack) - - [ Gianfranco Costamagna ] - * Add a patch to fix omp build on riscv64 - - [ Sylvestre Ledru ] * cmake: use ON instead of YES for consistency * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF @@ -16,7 +11,10 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium * Don't generate the llvm-mcmarkup & lldb-mi manpages (don't exist anymore) (LP: #1940713) - -- Sylvestre Ledru Sun, 29 Aug 2021 15:15:18 +0200 + [ Gianfranco Costamagna ] + * Add a patch to fix omp build on riscv64 + + -- Sylvestre Ledru Tue, 31 Aug 2021 20:56:40 +0200 llvm-toolchain-12 (1:12.0.1-6) unstable; urgency=medium From 8ad1bc4a4f3692456e494aa70338652a1129c323 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 21:51:38 +0200 Subject: [PATCH 15/21] remove llvm-mcmarkup one more time --- debian/llvm-X.Y.lintian-overrides.in | 1 - debian/llvm-X.Y.manpages.in | 1 - 2 files changed, 2 deletions(-) diff --git a/debian/llvm-X.Y.lintian-overrides.in b/debian/llvm-X.Y.lintian-overrides.in index 35c86946..77a03437 100644 --- a/debian/llvm-X.Y.lintian-overrides.in +++ b/debian/llvm-X.Y.lintian-overrides.in @@ -1,7 +1,6 @@ # I know but well... llvm-@LLVM_VERSION@: manpage-has-useless-whatis-entry usr/share/man/man1/llvm-dwarfdump-@LLVM_VERSION@.1.gz llvm-@LLVM_VERSION@: manpage-has-useless-whatis-entry usr/share/man/man1/llvm-mc-@LLVM_VERSION@.1.gz -llvm-@LLVM_VERSION@: manpage-has-useless-whatis-entry usr/share/man/man1/llvm-mcmarkup-@LLVM_VERSION@.1.gz llvm-@LLVM_VERSION@: manpage-has-useless-whatis-entry usr/share/man/man1/llvm-objdump-@LLVM_VERSION@.1.gz llvm-@LLVM_VERSION@: manpage-has-useless-whatis-entry usr/share/man/man1/llvm-rtdyld-@LLVM_VERSION@.1.gz llvm-@LLVM_VERSION@: manpage-has-useless-whatis-entry usr/share/man/man1/llvm-size-@LLVM_VERSION@.1.gz diff --git a/debian/llvm-X.Y.manpages.in b/debian/llvm-X.Y.manpages.in index 98f095fb..35702d06 100644 --- a/debian/llvm-X.Y.manpages.in +++ b/debian/llvm-X.Y.manpages.in @@ -1,7 +1,6 @@ docs/_build/man/* debian/man/llvm-dwarfdump-@LLVM_VERSION@.1 debian/man/llvm-mc-@LLVM_VERSION@.1 -debian/man/llvm-mcmarkup-@LLVM_VERSION@.1 debian/man/llvm-objdump-@LLVM_VERSION@.1 debian/man/llvm-rtdyld-@LLVM_VERSION@.1 debian/man/llvm-size-@LLVM_VERSION@.1 From e9e855e83b6892dc8e959576dcc889dd35bcd4bc Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 22:51:53 +0200 Subject: [PATCH 16/21] remove some non functional options --- debian/changelog | 6 ------ debian/rules | 12 +++++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index c8b1a947..15264d46 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,12 +2,6 @@ llvm-toolchain-12 (1:12.0.1-7) unstable; urgency=medium * Add debian/source/options to ignore the diff (much much faster to repack) * cmake: use ON instead of YES for consistency - * Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON - LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF - LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON - to libc++ when libunwind is built - Matches what is done on brew: - https://bit.ly/3kDNpC9 * Don't generate the llvm-mcmarkup & lldb-mi manpages (don't exist anymore) (LP: #1940713) diff --git a/debian/rules b/debian/rules index cab3c7dd..f1b9c8f8 100755 --- a/debian/rules +++ b/debian/rules @@ -428,7 +428,6 @@ override_dh_auto_configure: preconfigure -DLLVM_ENABLE_RTTI=ON \ -DLLVM_ENABLE_FFI=ON \ -DLLVM_ENABLE_DUMP=ON \ - $(CMAKE_EXTRA) \ -DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DCLANG_LINK_CLANG_DYLIB=ON \ -DENABLE_LINKER_BUILD_ID=ON \ @@ -517,6 +516,17 @@ debian-libcxxabi-build: $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" touch $@ +# Fails with $ +# No target "unwind_static" +# on 12. Will test with 13 +# -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ +# -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ +# -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \ +N +#- to libc++ when libunwind is built +#- Matches what is done on brew: +#- https://bit.ly/3kDNpC9 + debian-libcxx-build: # Builds libcxx echo "Using cmake: $(CMAKE_BIN)"; \ From 07446f3aedf5b9a0809119a7f49d0a380f9a8c12 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 1 Sep 2021 12:24:03 +0200 Subject: [PATCH 17/21] Add upstream patch to fix a texture failure with mesa * Cherry-pick upstream commit to fix a libgl1-mesa-dri texture failure. (Closes: #989545) --- debian/patches/mesa-texture-failure.patch | 197 ++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 198 insertions(+) create mode 100644 debian/patches/mesa-texture-failure.patch diff --git a/debian/patches/mesa-texture-failure.patch b/debian/patches/mesa-texture-failure.patch new file mode 100644 index 00000000..4d02f89a --- /dev/null +++ b/debian/patches/mesa-texture-failure.patch @@ -0,0 +1,197 @@ +Description: This is a cherry-pick of upstream commits bf41c4d29e44 and c5a1eb9b0a76 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989545 +Index: llvm-toolchain-11-11.0.1/llvm/include/llvm/CodeGen/MachineOperand.h +=================================================================== +--- llvm-toolchain-11-11.0.1.orig/llvm/include/llvm/CodeGen/MachineOperand.h ++++ llvm-toolchain-11-11.0.1/llvm/include/llvm/CodeGen/MachineOperand.h +@@ -728,12 +728,12 @@ + /// ChangeToImmediate - Replace this operand with a new immediate operand of + /// the specified value. If an operand is known to be an immediate already, + /// the setImm method should be used. +- void ChangeToImmediate(int64_t ImmVal); ++ void ChangeToImmediate(int64_t ImmVal, unsigned TargetFlags = 0); + + /// ChangeToFPImmediate - Replace this operand with a new FP immediate operand + /// of the specified value. If an operand is known to be an FP immediate + /// already, the setFPImm method should be used. +- void ChangeToFPImmediate(const ConstantFP *FPImm); ++ void ChangeToFPImmediate(const ConstantFP *FPImm, unsigned TargetFlags = 0); + + /// ChangeToES - Replace this operand with a new external symbol operand. + void ChangeToES(const char *SymName, unsigned TargetFlags = 0); +@@ -743,10 +743,10 @@ + unsigned TargetFlags = 0); + + /// ChangeToMCSymbol - Replace this operand with a new MC symbol operand. +- void ChangeToMCSymbol(MCSymbol *Sym); ++ void ChangeToMCSymbol(MCSymbol *Sym, unsigned TargetFlags = 0); + + /// Replace this operand with a frame index. +- void ChangeToFrameIndex(int Idx); ++ void ChangeToFrameIndex(int Idx, unsigned TargetFlags = 0); + + /// Replace this operand with a target index. + void ChangeToTargetIndex(unsigned Idx, int64_t Offset, +Index: llvm-toolchain-11-11.0.1/llvm/lib/CodeGen/MachineOperand.cpp +=================================================================== +--- llvm-toolchain-11-11.0.1.orig/llvm/lib/CodeGen/MachineOperand.cpp ++++ llvm-toolchain-11-11.0.1/llvm/lib/CodeGen/MachineOperand.cpp +@@ -153,22 +153,25 @@ + /// ChangeToImmediate - Replace this operand with a new immediate operand of + /// the specified value. If an operand is known to be an immediate already, + /// the setImm method should be used. +-void MachineOperand::ChangeToImmediate(int64_t ImmVal) { ++void MachineOperand::ChangeToImmediate(int64_t ImmVal, unsigned TargetFlags) { + assert((!isReg() || !isTied()) && "Cannot change a tied operand into an imm"); + + removeRegFromUses(); + + OpKind = MO_Immediate; + Contents.ImmVal = ImmVal; ++ setTargetFlags(TargetFlags); + } + +-void MachineOperand::ChangeToFPImmediate(const ConstantFP *FPImm) { ++void MachineOperand::ChangeToFPImmediate(const ConstantFP *FPImm, ++ unsigned TargetFlags) { + assert((!isReg() || !isTied()) && "Cannot change a tied operand into an imm"); + + removeRegFromUses(); + + OpKind = MO_FPImmediate; + Contents.CFP = FPImm; ++ setTargetFlags(TargetFlags); + } + + void MachineOperand::ChangeToES(const char *SymName, +@@ -197,7 +200,7 @@ + setTargetFlags(TargetFlags); + } + +-void MachineOperand::ChangeToMCSymbol(MCSymbol *Sym) { ++void MachineOperand::ChangeToMCSymbol(MCSymbol *Sym, unsigned TargetFlags) { + assert((!isReg() || !isTied()) && + "Cannot change a tied operand into an MCSymbol"); + +@@ -205,9 +208,10 @@ + + OpKind = MO_MCSymbol; + Contents.Sym = Sym; ++ setTargetFlags(TargetFlags); + } + +-void MachineOperand::ChangeToFrameIndex(int Idx) { ++void MachineOperand::ChangeToFrameIndex(int Idx, unsigned TargetFlags) { + assert((!isReg() || !isTied()) && + "Cannot change a tied operand into a FrameIndex"); + +@@ -215,6 +219,7 @@ + + OpKind = MO_FrameIndex; + setIndex(Idx); ++ setTargetFlags(TargetFlags); + } + + void MachineOperand::ChangeToTargetIndex(unsigned Idx, int64_t Offset, +Index: llvm-toolchain-11-11.0.1/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp +=================================================================== +--- llvm-toolchain-11-11.0.1.orig/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp ++++ llvm-toolchain-11-11.0.1/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp +@@ -282,9 +282,6 @@ + assert(!Fold.needsShrink() && "not handled"); + + if (Fold.isImm()) { +- // FIXME: ChangeToImmediate should probably clear the subreg flags. It's +- // reinterpreted as TargetFlags. +- Old.setSubReg(0); + Old.ChangeToImmediate(Fold.ImmToFold); + return true; + } +@@ -819,8 +816,6 @@ + + UseMI->setDesc(TII->get(AMDGPU::S_MOV_B32)); + +- // FIXME: ChangeToImmediate should clear subreg +- UseMI->getOperand(1).setSubReg(0); + if (OpToFold.isImm()) + UseMI->getOperand(1).ChangeToImmediate(OpToFold.getImm()); + else +Index: llvm-toolchain-11-11.0.1/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp +=================================================================== +--- llvm-toolchain-11-11.0.1.orig/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp ++++ llvm-toolchain-11-11.0.1/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp +@@ -2588,7 +2588,6 @@ + + UseMI.setDesc(get(NewOpc)); + UseMI.getOperand(1).ChangeToImmediate(Imm.getSExtValue()); +- UseMI.getOperand(1).setTargetFlags(0); + UseMI.addImplicitDefUseOperands(*UseMI.getParent()->getParent()); + return true; + } +Index: llvm-toolchain-11-11.0.1/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp +=================================================================== +--- llvm-toolchain-11-11.0.1.orig/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp ++++ llvm-toolchain-11-11.0.1/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp +@@ -84,21 +84,19 @@ + MachineOperand &MovSrc = Def->getOperand(1); + bool ConstantFolded = false; + +- if (MovSrc.isImm() && (isInt<32>(MovSrc.getImm()) || +- isUInt<32>(MovSrc.getImm()))) { +- // It's possible to have only one component of a super-reg defined by +- // a single mov, so we need to clear any subregister flag. +- Src0.setSubReg(0); +- Src0.ChangeToImmediate(MovSrc.getImm()); +- ConstantFolded = true; +- } else if (MovSrc.isFI()) { +- Src0.setSubReg(0); +- Src0.ChangeToFrameIndex(MovSrc.getIndex()); +- ConstantFolded = true; +- } else if (MovSrc.isGlobal()) { +- Src0.ChangeToGA(MovSrc.getGlobal(), MovSrc.getOffset(), +- MovSrc.getTargetFlags()); +- ConstantFolded = true; ++ if (TII->isOperandLegal(MI, Src0Idx, &MovSrc)) { ++ if (MovSrc.isImm() && ++ (isInt<32>(MovSrc.getImm()) || isUInt<32>(MovSrc.getImm()))) { ++ Src0.ChangeToImmediate(MovSrc.getImm()); ++ ConstantFolded = true; ++ } else if (MovSrc.isFI()) { ++ Src0.ChangeToFrameIndex(MovSrc.getIndex()); ++ ConstantFolded = true; ++ } else if (MovSrc.isGlobal()) { ++ Src0.ChangeToGA(MovSrc.getGlobal(), MovSrc.getOffset(), ++ MovSrc.getTargetFlags()); ++ ConstantFolded = true; ++ } + } + + if (ConstantFolded) { +Index: llvm-toolchain-11-11.0.1/llvm/test/CodeGen/AMDGPU/shrink-instructions-illegal-fold.mir +=================================================================== +--- /dev/null ++++ llvm-toolchain-11-11.0.1/llvm/test/CodeGen/AMDGPU/shrink-instructions-illegal-fold.mir +@@ -0,0 +1,23 @@ ++# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=si-shrink-instructions --verify-machineinstrs %s -o - | FileCheck %s ++ ++# Make sure immediate folding into V_CNDMASK respects constant bus restrictions. ++--- ++ ++name: shrink_cndmask_illegal_imm_folding ++tracksRegLiveness: true ++body: | ++ bb.0: ++ liveins: $vgpr0, $vgpr1 ++ ; CHECK-LABEL: name: shrink_cndmask_illegal_imm_folding ++ ; CHECK: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 ++ ; CHECK: [[MOV:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 32768, implicit $exec ++ ; CHECK: V_CMP_EQ_U32_e32 0, [[COPY]], implicit-def $vcc, implicit $exec ++ ; CHECK: V_CNDMASK_B32_e32 [[MOV]], killed [[COPY]], implicit $vcc, implicit $exec ++ ++ %0:vgpr_32 = COPY $vgpr0 ++ %1:vgpr_32 = V_MOV_B32_e32 32768, implicit $exec ++ V_CMP_EQ_U32_e32 0, %0:vgpr_32, implicit-def $vcc, implicit $exec ++ %2:vgpr_32 = V_CNDMASK_B32_e64 0, %1:vgpr_32, 0, killed %0:vgpr_32, $vcc, implicit $exec ++ S_NOP 0 ++ ++... diff --git a/debian/patches/series b/debian/patches/series index 09fd4ef0..81267735 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -145,3 +145,4 @@ revert-abi-change-clang.diff scan-build-py-fix-analyze-path.diff D91833-bpftrace-fix-code-gen.diff scan-build-py-fix-default-bin.diff +mesa-texture-failure.patch From 20534b1b6a69d695189145a9109bd4ccaa25c7f7 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 1 Sep 2021 12:24:49 +0200 Subject: [PATCH 18/21] Update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 582edac3..299c409a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-11 (1:11.1.0-1~exp3) UNRELEASED; urgency=medium + + * Cherry-pick upstream commit to fix a libgl1-mesa-dri texture failure. + (Closes: #989545) + + -- Gianfranco Costamagna Wed, 01 Sep 2021 12:24:34 +0200 + llvm-toolchain-11 (1:11.1.0-1~exp2) experimental; urgency=medium * Fix the default binary path for scan-build-py to clang-11 (instead of From 4269703bfc397330fbfa2ce1792f80e4095fbcd1 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 1 Sep 2021 12:44:19 +0200 Subject: [PATCH 19/21] * Don't build lldb on riscv64, fails to build due to missing CreateHostNativeRegisterContextLinux implementation on this architecture. --- debian/control | 16 ++++++++-------- debian/rules | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/debian/control b/debian/control index 9ac6ee79..329adddf 100644 --- a/debian/control +++ b/debian/control @@ -496,8 +496,8 @@ Description: LLVM-based linker, header files # ------------- lldb ------------- Package: lldb-12 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 riscv64 -# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}), llvm-12-dev, python3-lldb-12 Pre-Depends: ${misc:Pre-Depends} @@ -507,8 +507,8 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-12 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 riscv64 -# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -521,8 +521,8 @@ Description: Next generation, high-performance debugger, library Package: python3-lldb-12 Section: python -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 riscv64 -# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, ${python3:Depends}, liblldb-12 (= ${binary:Version}), python3-six Conflicts: python3-lldb-x.y Replaces: python3-lldb-x.y @@ -537,8 +537,8 @@ Description: Next generation, high-performance debugger, python3 lib Package: liblldb-12-dev Section: libdevel -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 riscv64 -# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-12 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Description: Next generation, high-performance debugger, header files diff --git a/debian/rules b/debian/rules index f1b9c8f8..c1599dfd 100755 --- a/debian/rules +++ b/debian/rules @@ -252,7 +252,7 @@ else endif LLDB_ENABLE=yes -LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 sparc64 +LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 # hurd has threading issues ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch. From a77fbe05ad92c86e877bbee0bbc632b6526789d7 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 1 Sep 2021 12:44:45 +0200 Subject: [PATCH 20/21] Update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 15264d46..a73e9915 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ llvm-toolchain-12 (1:12.0.1-7) unstable; urgency=medium [ Gianfranco Costamagna ] * Add a patch to fix omp build on riscv64 + * Don't build lldb on riscv64, fails to build due to missing + CreateHostNativeRegisterContextLinux implementation on this architecture. -- Sylvestre Ledru Tue, 31 Aug 2021 20:56:40 +0200 From 7b243bb50cfacbbd50bf7ecdf938815d67cf0710 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 1 Sep 2021 21:28:12 +0200 Subject: [PATCH 21/21] bring back rm -rf --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index c1599dfd..0cb03b3c 100755 --- a/debian/rules +++ b/debian/rules @@ -783,7 +783,7 @@ endif # Delete the target build directory to save some space on the build systems # All the files have been installed in $(CURDIR)/debian/tmp/ already -# rm -rf $(TARGET_BUILD) + rm -rf $(TARGET_BUILD) override_dh_makeshlibs: