From 4e968591a0931a257c3a2d2f9d391baad8d19695 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:12:38 +0200 Subject: [PATCH 01/41] add tests (failing for now) --- debian/qualify-clang.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 12bfb401..af9f0e49 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -955,6 +955,18 @@ clang++-$VERSION -stdlib=libc++ -static-libstdc++ -fuse-ld=lld -l:libc++abi.a te clang++-$VERSION -stdlib=libc++ -nostdlib++ test.cpp -l:libc++.a -l:libc++abi.a -pthread -o test ./test > /dev/null +# bug https://bugs.llvm.org/show_bug.cgi?id=43604 + +cat > test.cpp << EOF +#include +__attribute__((visibility("default"))) +extern "C" void plugin() { + std::cout << "Hello World from a plugin!" << std::endl; +} +EOF +clang++-$VERSION -shared -o plugin.so -fvisibility=hidden foo.cpp -static-libstdc++ || true +clang++-$VERSION -shared -o plugin.so -fvisibility=hidden foo.cpp -stdlib=libc++ -static-libstdc++ ||true + # Bug 889832 echo '#include int main() {}' | clang++-$VERSION -std=c++1z -x c++ -stdlib=libc++ - From 0001ff9f31b8b0986b7c4e99d02583fbcab44074 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:59:04 +0200 Subject: [PATCH 02/41] 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 03/41] 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 04/41] 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 05/41] 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 bd20ed6880174fa443759a5edc1a83b71638ef06 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Sun, 29 Aug 2021 21:31:01 +0200 Subject: [PATCH 06/41] Disable libunwind-X.Y{-dev} packages on sparc and sparc64 --- debian/changelog | 7 +++++++ debian/control | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1714b08a..ca1ffc91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-13 (1:13.0.0~+rc2-2) UNRELEASED; urgency=medium + + [ John Paul Adrian Glaubitz ] + * Disable libunwind-X.Y{-dev} packages on sparc and sparc64 + + -- John Paul Adrian Glaubitz Sun, 29 Aug 2021 21:30:29 +0200 + llvm-toolchain-13 (1:13.0.0~+rc2-1) unstable; urgency=medium [ John Paul Adrian Glaubitz ] diff --git a/debian/control b/debian/control index 57d52070..f618065e 100644 --- a/debian/control +++ b/debian/control @@ -720,7 +720,7 @@ Description: OpenCL C language implementation - development files Package: libunwind-13 Section: libs -Architecture: amd64 arm64 armhf i386 mips64el ppc64el ppc64 riscv64 sparc sparc64 +Architecture: amd64 arm64 armhf i386 mips64el ppc64el ppc64 riscv64 Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} @@ -737,7 +737,7 @@ Description: production-quality unwinder Package: libunwind-13-dev Section: libdevel -Architecture: amd64 arm64 armhf i386 mips64el ppc64el ppc64 riscv64 sparc sparc64 +Architecture: amd64 arm64 armhf i386 mips64el ppc64el ppc64 riscv64 Multi-Arch: same Depends: ${misc:Depends}, From 2903f4fa18e00527559daf4a92d3dd0e59b7c111 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 20:29:51 +0200 Subject: [PATCH 07/41] 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 08/41] 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 09/41] 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 10/41] 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 11/41] 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 12/41] 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 13/41] 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 14/41] 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 15/41] 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 16/41] 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 17/41] 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 18/41] 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 e472d6dc91a4d2bce40a97d64220d687709006ad Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 22:52:36 +0200 Subject: [PATCH 19/41] Build with -DCMAKE_POSITION_INDEPENDENT_CODE=ON to libc++ and libc++abi --- debian/changelog | 4 +++- debian/rules | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ca1ffc91..aa223f4a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,11 @@ llvm-toolchain-13 (1:13.0.0~+rc2-2) UNRELEASED; urgency=medium + * Build with -DCMAKE_POSITION_INDEPENDENT_CODE=ON to libc++ and libc++abi + [ John Paul Adrian Glaubitz ] * Disable libunwind-X.Y{-dev} packages on sparc and sparc64 - -- John Paul Adrian Glaubitz Sun, 29 Aug 2021 21:30:29 +0200 + -- Sylvestre Ledru Sun, 29 Aug 2021 14:52:16 +0200 llvm-toolchain-13 (1:13.0.0~+rc2-1) unstable; urgency=medium diff --git a/debian/rules b/debian/rules index d5235374..7a80cde0 100755 --- a/debian/rules +++ b/debian/rules @@ -494,6 +494,7 @@ 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 \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ -DLIBCXX_USE_COMPILER_RT=YES \ From 07446f3aedf5b9a0809119a7f49d0a380f9a8c12 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 1 Sep 2021 12:24:03 +0200 Subject: [PATCH 20/41] 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 21/41] 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 b4b7a9a432e9b115ad9d99bb94fdbfc8b852aac3 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 1 Sep 2021 12:42:20 +0200 Subject: [PATCH 22/41] remove patch applied upstream --- .../patches/clang-soname-extract-version.diff | 22 ------------------- debian/patches/series | 1 - 2 files changed, 23 deletions(-) delete mode 100644 debian/patches/clang-soname-extract-version.diff diff --git a/debian/patches/clang-soname-extract-version.diff b/debian/patches/clang-soname-extract-version.diff deleted file mode 100644 index 34b365f7..00000000 --- a/debian/patches/clang-soname-extract-version.diff +++ /dev/null @@ -1,22 +0,0 @@ -Index: llvm-toolchain-13_13.0.0~++20210730102409+6eaf46beb462/clang/tools/libclang/CMakeLists.txt -=================================================================== ---- llvm-toolchain-13_13.0.0~++20210730102409+6eaf46beb462.orig/clang/tools/libclang/CMakeLists.txt -+++ llvm-toolchain-13_13.0.0~++20210730102409+6eaf46beb462/clang/tools/libclang/CMakeLists.txt -@@ -48,6 +48,8 @@ set(LIBS - clangTooling - ) - -+SET(CLANG_SONAME 13) -+ - if (CLANG_ENABLE_ARCMT) - list(APPEND LIBS clangARCMigrate) - endif () -@@ -171,7 +173,7 @@ if(ENABLE_SHARED) - # LLVM_VERSION_MAJOR. - set_target_properties(libclang PROPERTIES - VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX} -- SOVERSION 13) -+ SOVERSION ${CLANG_SONAME}) - endif() - endif() - diff --git a/debian/patches/series b/debian/patches/series index f4213aca..18336ab6 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -142,7 +142,6 @@ lld-use-link-atomic-i386.diff lower-python-dep.diff scan-build-py-fix-analyze-path.diff scan-build-py-fix-default-bin.diff -clang-soname-extract-version.diff libclc-llvm-spirv.diff omp-riscv64.patch From 4269703bfc397330fbfa2ce1792f80e4095fbcd1 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 1 Sep 2021 12:44:19 +0200 Subject: [PATCH 23/41] * 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 24/41] 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 54c1ec180dec2f0b2846b27eea2dbdbf2d1e55e7 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:59:04 +0200 Subject: [PATCH 25/41] 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 aa223f4a..18ebdd15 100644 --- a/debian/changelog +++ b/debian/changelog @@ -128,9 +128,12 @@ llvm-toolchain-snapshot (1:13~++20210129063721+010b176cdefb-1~exp1) experimental 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 7a80cde0..34b10aeb 100755 --- a/debian/rules +++ b/debian/rules @@ -213,7 +213,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel hurd-i386 powerpc spa 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 @@ -497,8 +497,8 @@ LIBCXX_CMAKE_OPTIONS := \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -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 2f0b96606fd05dd23e6520d5dc672c5668cb2e77 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:59:33 +0200 Subject: [PATCH 26/41] 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 18ebdd15..faa1f08b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -128,7 +128,13 @@ llvm-toolchain-snapshot (1:13~++20210129063721+010b176cdefb-1~exp1) experimental 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 34b10aeb..98421ba2 100755 --- a/debian/rules +++ b/debian/rules @@ -213,7 +213,10 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel hurd-i386 powerpc spa 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 eda5c4b589c2eac6cf7850df73f5d3f5405ca319 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 15:32:25 +0200 Subject: [PATCH 27/41] 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 af9f0e49..0e108a72 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 ebb113ddd7bc17ee71c8168f26a5983fcbb1836d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 17:36:19 +0200 Subject: [PATCH 28/41] 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 faa1f08b..88b9b9d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -129,6 +129,7 @@ llvm-toolchain-snapshot (1:13~++20210129063721+010b176cdefb-1~exp1) experimental 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 fd6502bedd5775b63376442168c045b61247a505 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 1 Sep 2021 12:47:01 +0200 Subject: [PATCH 29/41] try to used runtimes and others refactors --- debian/changelog | 10 ++++ debian/rules | 119 ++++++++++++++++------------------------------- 2 files changed, 49 insertions(+), 80 deletions(-) diff --git a/debian/changelog b/debian/changelog index 88b9b9d3..2bbb607b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -139,6 +139,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 -- Sylvestre Ledru Sun, 29 Aug 2021 15:15:18 +0200 diff --git a/debian/rules b/debian/rules index 98421ba2..27b1b402 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 @@ -107,7 +108,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 @@ -203,8 +204,7 @@ OPENMP_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), m68k 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) @@ -212,11 +212,12 @@ LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel hurd-i386 powerpc sparc64 x32)) 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 @@ -336,6 +337,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: @@ -352,6 +354,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)" @@ -379,6 +382,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: @@ -414,14 +436,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= \ @@ -431,11 +454,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;M68k" \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ @@ -458,7 +481,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 \ @@ -471,6 +494,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: @@ -484,66 +509,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 \ - -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ - -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)/$(TARGET_BUILD_STAGE2)/include/c++/v1/ \ - -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 @@ -564,7 +529,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 @@ -623,7 +588,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 +666,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 +860,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 c5abefccae84afbd3b46f6149699101b55e91027 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 29 Aug 2021 23:02:27 +0200 Subject: [PATCH 30/41] try back the old behavior --- debian/rules | 127 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 43 deletions(-) diff --git a/debian/rules b/debian/rules index 27b1b402..5db13633 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)) @@ -204,7 +200,7 @@ OPENMP_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), m68k mips mipsel powerpc powerpcspe sparc64 s390x x32)) OPENMP_ENABLE=no else - RUNTIMES+=;openmp + PROJECTS+=;openmp endif # Enable libunwind (or not) @@ -212,9 +208,9 @@ LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel hurd-i386 powerpc sparc64 x32)) 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 @@ -337,7 +333,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: @@ -354,7 +350,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)" @@ -382,25 +378,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: @@ -438,7 +415,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 \ @@ -454,7 +430,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 \ @@ -481,14 +456,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"; \ @@ -509,6 +482,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 @@ -529,7 +567,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 @@ -587,11 +625,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 @@ -666,6 +701,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 @@ -744,7 +782,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: @@ -860,8 +898,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 e888bdfcf018a150b5c5f5edaa5b0e16e8e32210 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 15:30:32 +0200 Subject: [PATCH 31/41] unwind should use compiler-rt --- debian/rules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/rules b/debian/rules index 5db13633..8bdf0163 100755 --- a/debian/rules +++ b/debian/rules @@ -434,6 +434,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;M68k" \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ From c5a885df68ccd83b900407f521a31a85262e6c4c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 17:58:02 +0200 Subject: [PATCH 32/41] remove non working args --- debian/rules | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/rules b/debian/rules index 8bdf0163..b163bceb 100755 --- a/debian/rules +++ b/debian/rules @@ -210,9 +210,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel hurd-i386 powerpc spa 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 a0227e5ce62e673733fd2eb4b275c1d74811b9e0 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 17:59:26 +0200 Subject: [PATCH 33/41] 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 b163bceb..4bcf8000 100755 --- a/debian/rules +++ b/debian/rules @@ -494,22 +494,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 @@ -523,6 +510,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)" @@ -540,7 +528,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 4ae770b3f69205e1c2224f84a34ef38106e209ba Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 17:59:50 +0200 Subject: [PATCH 34/41] 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 4bcf8000..1276e107 100755 --- a/debian/rules +++ b/debian/rules @@ -498,10 +498,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) ../ \ @@ -512,13 +510,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) ../ \ @@ -558,7 +555,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 f44ed65e2b8adf7db1520358a0e198c222262fbd Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 18:00:02 +0200 Subject: [PATCH 35/41] 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 1276e107..658eb4e0 100755 --- a/debian/rules +++ b/debian/rules @@ -501,8 +501,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 \ @@ -517,8 +518,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 8d8e2c72400a704e2a419e25f130d72b7f558893 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 16:51:37 +0200 Subject: [PATCH 36/41] 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 2bbb607b..0c5a7590 100644 --- a/debian/changelog +++ b/debian/changelog @@ -149,6 +149,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 + * 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 diff --git a/debian/rules b/debian/rules index 658eb4e0..43d79283 100755 --- a/debian/rules +++ b/debian/rules @@ -601,7 +601,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 4b4a2242b9d6e67a00a749d4216424856cb5d3cb Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 20:31:04 +0200 Subject: [PATCH 37/41] Fix changelog --- debian/changelog | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0c5a7590..46a10179 100644 --- a/debian/changelog +++ b/debian/changelog @@ -128,27 +128,12 @@ llvm-toolchain-snapshot (1:13~++20210129063721+010b176cdefb-1~exp1) experimental 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 @@ -159,9 +144,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 e9eae201405585c34617ae6f149eefdec69ceebb Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 20:57:23 +0200 Subject: [PATCH 38/41] fix changelog --- debian/changelog | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 46a10179..d4edf551 100644 --- a/debian/changelog +++ b/debian/changelog @@ -126,14 +126,9 @@ llvm-toolchain-snapshot (1:13~++20210129063721+010b176cdefb-1~exp1) experimental -- Sylvestre Ledru Sat, 30 Jan 2021 17:31:15 +0100 -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 @@ -144,7 +139,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 591436a41adc88ca4786fa7ab161d636b8a88781 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 21:51:38 +0200 Subject: [PATCH 39/41] 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 0d8c8debd1bcb5776e66ddc5e53fed448e2e392b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 31 Aug 2021 22:51:53 +0200 Subject: [PATCH 40/41] 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 d4edf551..479a0cc4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -130,12 +130,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 43d79283..ecb303a7 100755 --- a/debian/rules +++ b/debian/rules @@ -426,7 +426,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 \ @@ -515,6 +514,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 7b243bb50cfacbbd50bf7ecdf938815d67cf0710 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 1 Sep 2021 21:28:12 +0200 Subject: [PATCH 41/41] 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: