From 4df76dc5b4bb483bd90d944c592b4ac234b19c84 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 18 Feb 2024 22:34:01 +0100 Subject: [PATCH 01/21] add -DLIBCXX_INSTALL_MODULES=ON see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 --- debian/changelog | 6 +++++- debian/rules | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6f1015ea..720513c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,7 +4,11 @@ llvm-toolchain-18 (1:18.1.0~rc2-4) UNRELEASED; urgency=medium * Install *clang_rt* on sparc and sparc64 * Run chrpath for libclang on sparc and sparc64 - -- John Paul Adrian Glaubitz Fri, 16 Feb 2024 09:53:15 +0100 + [ Sylvestre Ledru ] + * add -DLIBCXX_INSTALL_MODULES=ON + see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 + + -- Sylvestre Ledru Sun, 18 Feb 2024 22:32:30 +0100 llvm-toolchain-18 (1:18.1.0~rc2-3) unstable; urgency=medium diff --git a/debian/rules b/debian/rules index a5820140..89269eb6 100755 --- a/debian/rules +++ b/debian/rules @@ -781,6 +781,7 @@ endif -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ -DLIBCXX_INSTALL_LIBRARY=OFF \ + -DLIBCXX_INSTALL_MODULES=ON \ -DOPENMP_ENABLE_LIBOMP_PROFILING=OFF \ -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING=OFF \ -DLIBOMP_ENABLE_RTTI=OFF \ From 397c393faf92aee56c2d6f004a5078ccd283d040 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 19 Feb 2024 16:22:25 +0100 Subject: [PATCH 02/21] Ship libc++-18-dev /usr/lib/llvm-18/lib/libc++.modules.json /usr/lib/llvm-18/include/c++/v1/std.compat.cppm /usr/lib/llvm-18/include/c++/v1/std.cppm --- debian/changelog | 6 ++++-- debian/libc++-X.Y-dev.install.in | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 720513c7..8f7de8f4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-18 (1:18.1.0~rc2-4) UNRELEASED; urgency=medium +llvm-toolchain-18 (1:18.1.0~rc2-5) UNRELEASED; urgency=medium [ John Paul Adrian Glaubitz ] * Install *clang_rt* on sparc and sparc64 @@ -7,8 +7,10 @@ llvm-toolchain-18 (1:18.1.0~rc2-4) UNRELEASED; urgency=medium [ Sylvestre Ledru ] * add -DLIBCXX_INSTALL_MODULES=ON see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 + Ship libc++-18-dev /usr/lib/llvm-18/lib/libc++.modules.json /usr/lib/llvm-18/include/c++/v1/std.compat.cppm + /usr/lib/llvm-18/include/c++/v1/std.cppm - -- Sylvestre Ledru Sun, 18 Feb 2024 22:32:30 +0100 + -- Sylvestre Ledru Mon, 19 Feb 2024 16:21:34 +0100 llvm-toolchain-18 (1:18.1.0~rc2-3) unstable; urgency=medium diff --git a/debian/libc++-X.Y-dev.install.in b/debian/libc++-X.Y-dev.install.in index b3ac19c1..208e5daf 100644 --- a/debian/libc++-X.Y-dev.install.in +++ b/debian/libc++-X.Y-dev.install.in @@ -3,3 +3,6 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libc++.a usr/lib/llvm-@LLVM_VERSION@/include/c++/ usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/ usr/lib/llvm-@LLVM_VERSION@/lib/libc++experimental.a +build-llvm/modules/c++/v1/std.cppm usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/ +build-llvm/modules/c++/v1/std.compat.cppm usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/ +build-llvm/lib/libc++.modules.json usr/lib/llvm-@LLVM_VERSION@/lib/ From 9cd963c144f865a07f88f286d3c9c6c538879b39 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 19 Feb 2024 16:22:25 +0100 Subject: [PATCH 03/21] Ship libc++-18-dev /usr/lib/llvm-18/lib/libc++.modules.json /usr/lib/llvm-18/include/c++/v1/std.compat.cppm /usr/lib/llvm-18/include/c++/v1/std.cppm --- debian/changelog | 10 ++++++++++ debian/libc++-X.Y-dev.install.in | 9 ++++++--- debian/libllvmlibc-X.Y-dev.install.in | 1 + debian/rules | 1 + 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 debian/libllvmlibc-X.Y-dev.install.in diff --git a/debian/changelog b/debian/changelog index 8f7de8f4..e36c84d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ llvm-toolchain-18 (1:18.1.0~rc2-5) UNRELEASED; urgency=medium +<<<<<<< [ John Paul Adrian Glaubitz ] * Install *clang_rt* on sparc and sparc64 * Run chrpath for libclang on sparc and sparc64 @@ -9,6 +10,15 @@ llvm-toolchain-18 (1:18.1.0~rc2-5) UNRELEASED; urgency=medium see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 Ship libc++-18-dev /usr/lib/llvm-18/lib/libc++.modules.json /usr/lib/llvm-18/include/c++/v1/std.compat.cppm /usr/lib/llvm-18/include/c++/v1/std.cppm +======= + [ John Paul Adrian Glaubitz ] + * Install *clang_rt* on sparc and sparc64 + * Run chrpath for libclang on sparc and sparc64 + + [ Sylvestre Ledru ] + * add -DLIBCXX_INSTALL_MODULES=ON to install libc++ C++-20 modules + see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 +>>>>>>> -- Sylvestre Ledru Mon, 19 Feb 2024 16:21:34 +0100 diff --git a/debian/libc++-X.Y-dev.install.in b/debian/libc++-X.Y-dev.install.in index 208e5daf..1a4d26ee 100644 --- a/debian/libc++-X.Y-dev.install.in +++ b/debian/libc++-X.Y-dev.install.in @@ -3,6 +3,9 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libc++.a usr/lib/llvm-@LLVM_VERSION@/include/c++/ usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/ usr/lib/llvm-@LLVM_VERSION@/lib/libc++experimental.a -build-llvm/modules/c++/v1/std.cppm usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/ -build-llvm/modules/c++/v1/std.compat.cppm usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/ -build-llvm/lib/libc++.modules.json usr/lib/llvm-@LLVM_VERSION@/lib/ + +# C++ modules +usr/lib/llvm-@LLVM_VERSION@/lib/libc++.modules.json +usr/lib/llvm-@LLVM_VERSION@/share/libc++/v1/std.compat/*.inc +usr/lib/llvm-@LLVM_VERSION@/share/libc++/v1/*.cppm +usr/lib/llvm-@LLVM_VERSION@/share/libc++/v1/std/*.inc diff --git a/debian/libllvmlibc-X.Y-dev.install.in b/debian/libllvmlibc-X.Y-dev.install.in new file mode 100644 index 00000000..cd6c1add --- /dev/null +++ b/debian/libllvmlibc-X.Y-dev.install.in @@ -0,0 +1 @@ +usr/lib/llvm-@LLVM_VERSION@/lib/libllvmlibc.a diff --git a/debian/rules b/debian/rules index 89269eb6..6f4f3fe7 100755 --- a/debian/rules +++ b/debian/rules @@ -782,6 +782,7 @@ endif -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ -DLIBCXX_INSTALL_LIBRARY=OFF \ -DLIBCXX_INSTALL_MODULES=ON \ + -DBOOTSTRAP_LIBCXX_INSTALL_MODULES=ON \ -DOPENMP_ENABLE_LIBOMP_PROFILING=OFF \ -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING=OFF \ -DLIBOMP_ENABLE_RTTI=OFF \ From 989a63a68eeaf451897a35b6c9166980f70609fc Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 20 Feb 2024 22:40:44 +0100 Subject: [PATCH 04/21] fix changelog --- debian/changelog | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/debian/changelog b/debian/changelog index e36c84d1..f780270a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,16 +1,5 @@ -llvm-toolchain-18 (1:18.1.0~rc2-5) UNRELEASED; urgency=medium +llvm-toolchain-18 (1:18.1.0~rc2-4) UNRELEASED; urgency=medium -<<<<<<< - [ John Paul Adrian Glaubitz ] - * Install *clang_rt* on sparc and sparc64 - * Run chrpath for libclang on sparc and sparc64 - - [ Sylvestre Ledru ] - * add -DLIBCXX_INSTALL_MODULES=ON - see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 - Ship libc++-18-dev /usr/lib/llvm-18/lib/libc++.modules.json /usr/lib/llvm-18/include/c++/v1/std.compat.cppm - /usr/lib/llvm-18/include/c++/v1/std.cppm -======= [ John Paul Adrian Glaubitz ] * Install *clang_rt* on sparc and sparc64 * Run chrpath for libclang on sparc and sparc64 @@ -18,7 +7,6 @@ llvm-toolchain-18 (1:18.1.0~rc2-5) UNRELEASED; urgency=medium [ Sylvestre Ledru ] * add -DLIBCXX_INSTALL_MODULES=ON to install libc++ C++-20 modules see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 ->>>>>>> -- Sylvestre Ledru Mon, 19 Feb 2024 16:21:34 +0100 From 8ab71b62cfbd77e0b0aa93b60d79fa04777496c8 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 20 Feb 2024 22:42:46 +0100 Subject: [PATCH 05/21] Add a new package libllvmlibc-18-dev to ship LLVM libc (experimental for now) --- debian/changelog | 1 + debian/control | 10 ++++++++++ debian/control.in | 10 ++++++++++ debian/rules | 7 +++++-- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f780270a..f3a10a2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ llvm-toolchain-18 (1:18.1.0~rc2-4) UNRELEASED; urgency=medium [ Sylvestre Ledru ] * add -DLIBCXX_INSTALL_MODULES=ON to install libc++ C++-20 modules see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 + * Add a new package libllvmlibc-18-dev to ship LLVM libc (experimental for now) -- Sylvestre Ledru Mon, 19 Feb 2024 16:21:34 +0100 diff --git a/debian/control b/debian/control index f6cdae61..24e736c9 100644 --- a/debian/control +++ b/debian/control @@ -952,3 +952,13 @@ Description: Flang library - Development package of examples, some functionalities are still missing. . This package contains the flang libraries and headers. + +# ------------- LLVM libc ------------- + +Package: libllvmlibc-18-dev +Section: libdevel +Architecture: any +Description: LLVM C Library - dev package + Implementation of the C standard library targeting C17 and above. + . + This is an experimental project. Don't use in production. diff --git a/debian/control.in b/debian/control.in index d47e0cc4..b785ad23 100644 --- a/debian/control.in +++ b/debian/control.in @@ -952,3 +952,13 @@ Description: Flang library - Development package of examples, some functionalities are still missing. . This package contains the flang libraries and headers. + +# ------------- LLVM libc ------------- + +Package: libllvmlibc-@LLVM_VERSION@-dev +Section: libdevel +Architecture: any +Description: LLVM C Library - dev package + Implementation of the C standard library targeting C17 and above. + . + This is an experimental project. Don't use in production. diff --git a/debian/rules b/debian/rules index 6f4f3fe7..9adb73af 100755 --- a/debian/rules +++ b/debian/rules @@ -3,7 +3,7 @@ # polly & lldb aren't enabled for every platform PROJECTS = clang;clang-tools-extra;lld;cross-project-tests;mlir # openmp & libunwind aren't enabled for every platform -RUNTIMES = compiler-rt;libcxx;libcxxabi +RUNTIMES = compiler-rt;libcxx;libcxxabi;libc TARGET_BUILD := build-llvm TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins @@ -553,7 +553,7 @@ ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) endif # enables cmake build targets like stage2-[target_name] -ENABLED_STAGE2_CMAKE_BUILD_TARGETS = check-all;check-llvm;check-clang;check-clang-tools;check-lld;check-libcxx;check-libcxxabi;check-mlir;check-sanitizer;llvm-config;test-suite +ENABLED_STAGE2_CMAKE_BUILD_TARGETS = check-all;check-llvm;check-clang;check-clang-tools;check-lld;check-libcxx;check-libcxxabi;check-mlir;check-libc;check-sanitizer;llvm-config;test-suite %: dh $@ $(DH_OPTIONS) @@ -1473,6 +1473,9 @@ endif # Libcxx ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libcxx || true +# Libc + ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libc || true + # Libcxxabi ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libcxxabi || true From a656221b33a1cc58c972dc282908f83c96aa7834 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 22 Feb 2024 09:20:50 +0100 Subject: [PATCH 06/21] Revert: Try gold linker on mips64el --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 9948e467..f884626c 100755 --- a/debian/rules +++ b/debian/rules @@ -299,7 +299,7 @@ ifeq ($(LLVM_SPIRV_INSTALLED),yes) LIBCLC_LLVM_SPIRV = -DLLVM_SPIRV=$(LLVM_SPIRV) endif -BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el x32 s390x hurd-i386 kfreebsd-amd64 kfreebsd-i386 mips64el +BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el x32 s390x hurd-i386 kfreebsd-amd64 kfreebsd-i386 ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.23.1-1~exp3 ; echo $$?),0) ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) STAGE_ALL_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold From 1a18aa1aa6e9fc698868fd22a99ea875f3efb20a Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 22 Feb 2024 14:10:45 +0100 Subject: [PATCH 07/21] Add code to hack time64 in 32bit builds, and try to disable stack protector on mips64el --- debian/changelog | 7 +++++++ debian/control | 14 +++++++++----- debian/control.in | 14 +++++++++----- debian/rules | 41 +++++++++++++++++++++++++++-------------- 4 files changed, 52 insertions(+), 24 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3109171d..f2ad6bf6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-18 (1:18.1.0~rc2-4) unstable; urgency=medium + + * Fix 32bit builds, exclude i386, don't build clang-rt there + * Revert gold linker on mips64el + + -- Gianfranco Costamagna Fri, 09 Feb 2024 20:59:07 +0100 + llvm-toolchain-18 (1:18.1.0~rc2-3) unstable; urgency=medium * Add abi=+time64,+lfs only on 64bits system diff --git a/debian/control b/debian/control index f6cdae61..9a2d05f1 100644 --- a/debian/control +++ b/debian/control @@ -135,6 +135,7 @@ Description: C, C++ and Objective-C compiler - Documentation This package contains the documentation. Package: libclang1-18 +Provides: ${t64:Provides} Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -236,6 +237,7 @@ Description: High-level loop and data-locality optimizer # ------------- clang libraries ------------- Package: libclang-cpp18 +Provides: ${t64:Provides} Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm18 (= ${binary:Version}) @@ -338,6 +340,7 @@ Description: Clang examples # ------------- LLVM ------------- Package: libllvm18 +Provides: ${t64:Provides} Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} @@ -570,6 +573,7 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-18 +Provides: ${t64:Provides} Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 loong64 # ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm18 (= ${binary:Version}) @@ -634,7 +638,7 @@ Package: libomp5-18 Multi-Arch: same Architecture: amd64 arm64 armhf i386 loong64 mips64el ppc64el ppc64 riscv64 Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libomp-x.y +Provides: ${t64:Provides}, libomp-x.y Conflicts: libomp-x.y Replaces: libomp-x.y Description: LLVM OpenMP runtime @@ -665,7 +669,7 @@ Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: clang -Provides: libc++-x.y +Provides: ${t64:Provides}, libc++-x.y Conflicts: libc++-x.y Replaces: libc++-x.y Description: LLVM C++ Standard library @@ -735,7 +739,7 @@ Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libc++abi-x.y +Provides: ${t64:Provides}, libc++abi-x.y Conflicts: libc++abi-x.y Replaces: libc++abi-x.y Description: LLVM low level support for a standard C++ library @@ -829,7 +833,7 @@ Architecture: amd64 arm64 armhf i386 loong64 ppc64el ppc64 riscv64 Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libunwind-x.y +Provides: ${t64:Provides}, libunwind-x.y Conflicts: libunwind-x.y Replaces: libunwind-x.y Description: production-quality unwinder @@ -877,7 +881,7 @@ Architecture: any Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libmlir-x.y +Provides: ${t64:Provides}, libmlir-x.y Conflicts: libmlir-x.y Replaces: libmlir-x.y Description: Multi-Level Intermediate Representation library diff --git a/debian/control.in b/debian/control.in index d47e0cc4..94402b28 100644 --- a/debian/control.in +++ b/debian/control.in @@ -135,6 +135,7 @@ Description: C, C++ and Objective-C compiler - Documentation This package contains the documentation. Package: libclang1-@LLVM_VERSION@ +Provides: ${t64:Provides} Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -236,6 +237,7 @@ Description: High-level loop and data-locality optimizer # ------------- clang libraries ------------- Package: libclang-cpp@LLVM_VERSION@ +Provides: ${t64:Provides} Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm@LLVM_VERSION@ (= ${binary:Version}) @@ -338,6 +340,7 @@ Description: Clang examples # ------------- LLVM ------------- Package: libllvm@LLVM_VERSION@ +Provides: ${t64:Provides} Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} @@ -570,6 +573,7 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-@LLVM_VERSION@ +Provides: ${t64:Provides} Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 loong64 # ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm@LLVM_VERSION@ (= ${binary:Version}) @@ -634,7 +638,7 @@ Package: libomp5-@LLVM_VERSION@ Multi-Arch: same Architecture: amd64 arm64 armhf i386 loong64 mips64el ppc64el ppc64 riscv64 Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libomp-x.y +Provides: ${t64:Provides}, libomp-x.y Conflicts: libomp-x.y Replaces: libomp-x.y Description: LLVM OpenMP runtime @@ -665,7 +669,7 @@ Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: clang -Provides: libc++-x.y +Provides: ${t64:Provides}, libc++-x.y Conflicts: libc++-x.y Replaces: libc++-x.y Description: LLVM C++ Standard library @@ -735,7 +739,7 @@ Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libc++abi-x.y +Provides: ${t64:Provides}, libc++abi-x.y Conflicts: libc++abi-x.y Replaces: libc++abi-x.y Description: LLVM low level support for a standard C++ library @@ -829,7 +833,7 @@ Architecture: amd64 arm64 armhf i386 loong64 ppc64el ppc64 riscv64 Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libunwind-x.y +Provides: ${t64:Provides}, libunwind-x.y Conflicts: libunwind-x.y Replaces: libunwind-x.y Description: production-quality unwinder @@ -877,7 +881,7 @@ Architecture: any Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libmlir-x.y +Provides: ${t64:Provides}, libmlir-x.y Conflicts: libmlir-x.y Replaces: libmlir-x.y Description: Multi-Level Intermediate Representation library diff --git a/debian/rules b/debian/rules index f884626c..f17d6299 100755 --- a/debian/rules +++ b/debian/rules @@ -3,7 +3,6 @@ # polly & lldb aren't enabled for every platform PROJECTS = clang;clang-tools-extra;lld;cross-project-tests;mlir # openmp & libunwind aren't enabled for every platform -RUNTIMES = compiler-rt;libcxx;libcxxabi TARGET_BUILD := build-llvm TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins @@ -22,6 +21,27 @@ ifeq ($(LLVM_VERSION),$(LLVM_VERSION_FULL)) endif LLVM_VERSION_NEXT := $(shell echo $(LLVM_VERSION_FULL) | awk -F. '{ OFS="."; $$NF+=1; print}') +# dpkg-buildflags support +# disable fixfilepath in favor of the llvm-project supplied flavor, disable lto +# remove +time64,+lfs once the time64_t transition starts +ifeq ($(DEB_HOST_ARCH),i386) + RUNTIMES = compiler-rt;libcxx;libcxxabi + export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto +else + ifeq ($(DEB_HOST_ARCH_BITS),32) + RUNTIMES = libcxx;libcxxabi + export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto abi=+time64,+lfs + skip_packages = -Nlibclang-rt-$(LLVM_VERSION)-dev + else + RUNTIMES = compiler-rt;libcxx;libcxxabi + ifeq ($(DEB_HOST_ARCH),mips64el) + export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto hardening=-stackprotector,-stackprotectorstrong + else + export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto + endif + endif +endif + SOURCE_NAME := $(shell dpkg-parsechangelog -S Source) ifneq (,$(findstring snapshot,$(SOURCE_NAME))) BRANCH_NAME=snapshot @@ -63,16 +83,6 @@ include /usr/share/dpkg/architecture.mk CONFIGURE_EXTRA = -# dpkg-buildflags support -# disable fixfilepath in favor of the llvm-project supplied flavor, disable lto -# remove +time64,+lfs once the time64_t transition starts -export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto - -ifeq ($(DEB_BUILD_ARCH_BITS),64) - export DEB_BUILD_MAINT_OPTIONS += abi=+time64,+lfs -endif - - # these are handled on a per stage / build basis ifeq ($(VENDOR)-$(DEB_HOST_ARCH),Ubuntu-ppc64el) export DEB_CFLAGS_MAINT_STRIP = -g -O3 @@ -1135,7 +1145,7 @@ override_dh_auto_install: ifeq (,$(filter $(DEB_HOST_ARCH), powerpc powerpcspe sparc sparc64)) ifneq (,$(filter $(DEB_HOST_ARCH_OS),linux)) # To fix custom-library-search-path - chrpath -d $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)*/lib/linux/*.so + chrpath -d $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)*/lib/linux/*.so || true endif endif @@ -1397,7 +1407,7 @@ else rm -rf $(CURDIR)/debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake endif endif - dh_install --fail-missing + dh_install --fail-missing ${skip_packages} # Move the libc++ abi files from libc++ to libc++-abi for the wasm32 packages # These packages are arch: all, so only do so when the packages are built ifneq (,$(filter libc++-$(LLVM_VERSION)-dev-wasm32, $(packages))) @@ -1525,8 +1535,11 @@ override_dh_auto_test: endif +override_dh_builddeb: + dh_builddeb ${skip_packages} + override_dh_gencontrol: stamps/sccache-stats - dh_gencontrol -- $(control_vars) + dh_gencontrol ${skip_packages} -- $(control_vars) override_dh_auto_clean: From b8b0648991a95e1ee1b277c4f5dd7551548befb8 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 22 Feb 2024 14:11:36 +0100 Subject: [PATCH 08/21] Update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index f2ad6bf6..538ac1bc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ llvm-toolchain-18 (1:18.1.0~rc2-4) unstable; urgency=medium * Fix 32bit builds, exclude i386, don't build clang-rt there * Revert gold linker on mips64el + * Disable stack protector on mips64el -- Gianfranco Costamagna Fri, 09 Feb 2024 20:59:07 +0100 From 5b6b66c4c7e88ec41a12d2f2d6f784d81d8a5203 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 22 Feb 2024 17:58:25 +0100 Subject: [PATCH 09/21] Refresh timestamp for changelog --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 538ac1bc..6cad6a7a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,7 +4,7 @@ llvm-toolchain-18 (1:18.1.0~rc2-4) unstable; urgency=medium * Revert gold linker on mips64el * Disable stack protector on mips64el - -- Gianfranco Costamagna Fri, 09 Feb 2024 20:59:07 +0100 + -- Gianfranco Costamagna Thu, 22 Feb 2024 17:58:05 +0100 llvm-toolchain-18 (1:18.1.0~rc2-3) unstable; urgency=medium From 3071f6c49c5f51db03e5e6f7d79cf3bfbcfa2bcc Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 23 Feb 2024 09:01:00 +0100 Subject: [PATCH 10/21] rebase of the patches --- debian/patches/0044-soname.diff | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/debian/patches/0044-soname.diff b/debian/patches/0044-soname.diff index 4ef51f2b..8b819677 100644 --- a/debian/patches/0044-soname.diff +++ b/debian/patches/0044-soname.diff @@ -3,11 +3,11 @@ tools/llvm-shlib/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -Index: llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e/clang/tools/libclang/CMakeLists.txt +Index: llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/clang/tools/libclang/CMakeLists.txt =================================================================== ---- llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e.orig/clang/tools/libclang/CMakeLists.txt -+++ llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e/clang/tools/libclang/CMakeLists.txt -@@ -134,7 +134,7 @@ if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHE +--- llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b.orig/clang/tools/libclang/CMakeLists.txt ++++ llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/clang/tools/libclang/CMakeLists.txt +@@ -135,7 +135,7 @@ if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHE remove_definitions("-D_XOPEN_SOURCE=700") endif() @@ -16,17 +16,16 @@ Index: llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e/clang/tools/libc OUTPUT_NAME ${output_name} ${SOURCES} -Index: llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e/llvm/tools/llvm-shlib/CMakeLists.txt +Index: llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/llvm/tools/llvm-shlib/CMakeLists.txt =================================================================== ---- llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e.orig/llvm/tools/llvm-shlib/CMakeLists.txt -+++ llvm-toolchain-snapshot_18~++20231209112655+5c8755f9f40e/llvm/tools/llvm-shlib/CMakeLists.txt -@@ -35,6 +35,8 @@ if(LLVM_BUILD_LLVM_DYLIB) - endif() - add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES}) +--- llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b.orig/llvm/tools/llvm-shlib/CMakeLists.txt ++++ llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/llvm/tools/llvm-shlib/CMakeLists.txt +@@ -38,6 +38,8 @@ if(LLVM_BUILD_LLVM_DYLIB) + get_target_property(LLVM_DYLIB_FILENAME LLVM OUTPUT_NAME) + llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} ${LLVM_DYLIB_FILENAME} SHARED COMPONENT LLVM) + set_property(TARGET LLVM PROPERTY VERSION "1") # Append .1 to SONAME + list(REMOVE_DUPLICATES LIB_NAMES) if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") set(LIB_NAMES -Wl,-all_load ${LIB_NAMES}) - From d4d38faa71ac072738684b9b7574511de9f98abf Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 20 Feb 2024 23:06:24 +0100 Subject: [PATCH 11/21] add an llvmlibc test --- debian/qualify-clang.sh | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index aa9f5e2f..c884e3c8 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -9,7 +9,7 @@ VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") DETAILED_VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1\2\3,p") DEB_HOST_ARCH=$(dpkg-architecture -qDEB_HOST_ARCH) -LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-clang-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clangd-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}_${DETAILED_VERSION}_amd64.deb clang-tidy-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclc-${VERSION}_${DETAILED_VERSION}_all.deb libclc-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}-linker-tools_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libclang-rt-${VERSION}-dev-wasm64_${DETAILED_VERSION}_all.deb libc++abi-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libc++-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libpolly-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb bolt-${VERSION}_${DETAILED_VERSION}_amd64.deb libbolt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb flang-${VERSION}_${DETAILED_VERSION}_amd64.deb libflang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb" +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-clang-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clangd-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}_${DETAILED_VERSION}_amd64.deb clang-tidy-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclc-${VERSION}_${DETAILED_VERSION}_all.deb libclc-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}-linker-tools_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libclang-rt-${VERSION}-dev-wasm64_${DETAILED_VERSION}_all.deb libc++abi-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libc++-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libpolly-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb bolt-${VERSION}_${DETAILED_VERSION}_amd64.deb libbolt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb flang-${VERSION}_${DETAILED_VERSION}_amd64.deb libflang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libllvmlibc-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb " echo "To install everything:" echo "sudo apt --purge remove 'libomp5-*' 'libc++*dev' 'libc++*' 'python3-lldb-*' 'libunwind-*' 'libclc-*' 'libclc-*dev' 'libmlir-*'" @@ -1139,6 +1139,26 @@ else echo "doesn't exist on this arch" fi +# libc +echo "Testing llvmlibc-$VERSION-dev ..." +echo ' +#include +int main(void) +{ + double f = 2.0; + if (isnan(f)) + return 1; + return 0; +}' > main.c +clang-$VERSION -static -nostdlib -nolibc -L/usr/lib/llvm-$VERSION/lib/ -lllvmlibc main.c -o foo +if ! ldd foo 2>&1|grep -qv libc.; then + echo "linked against regular libc" + exit -1 +fi + +# segfault for now +./foo || true + # libclc echo "Testing libclc-$VERSION-dev ..." From a80bdfc5635e8dce6d2a451d32a5c0e39a4c646f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 27 Feb 2024 08:45:30 +0100 Subject: [PATCH 12/21] New snapshot release (amd64, arm64 and armhf) --- debian/changelog | 6 ++++-- debian/control.in | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index dd2ffd90..1887684b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,15 +1,17 @@ -llvm-toolchain-18 (1:18.1.0~rc2-5) UNRELEASED; urgency=medium +llvm-toolchain-18 (1:18.1.0~rc3-1) unstable; urgency=medium [ John Paul Adrian Glaubitz ] * Install *clang_rt* on sparc and sparc64 * Run chrpath for libclang on sparc and sparc64 [ Sylvestre Ledru ] + * New snapshot release * add -DLIBCXX_INSTALL_MODULES=ON to install libc++ C++-20 modules see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 * Add a new package libllvmlibc-18-dev to ship LLVM libc (experimental for now) + (amd64, arm64 and armhf) - -- Sylvestre Ledru Mon, 19 Feb 2024 16:21:34 +0100 + -- Sylvestre Ledru Tue, 27 Feb 2024 08:43:07 +0100 llvm-toolchain-18 (1:18.1.0~rc2-4) unstable; urgency=medium diff --git a/debian/control.in b/debian/control.in index df9b6180..ec2d453a 100644 --- a/debian/control.in +++ b/debian/control.in @@ -961,7 +961,7 @@ Description: Flang library - Development package Package: libllvmlibc-@LLVM_VERSION@-dev Section: libdevel -Architecture: any +Architecture: amd64, arm64, armhf Description: LLVM C Library - dev package Implementation of the C standard library targeting C17 and above. . From dad9d0d187b82bb12c2a33c857c62af7ff88e4e7 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 27 Feb 2024 13:39:07 +0100 Subject: [PATCH 13/21] fix the syntax --- debian/control | 2 +- debian/control.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index ac49168e..7739078a 100644 --- a/debian/control +++ b/debian/control @@ -961,7 +961,7 @@ Description: Flang library - Development package Package: libllvmlibc-18-dev Section: libdevel -Architecture: any +Architecture: amd64 arm64 armhf Description: LLVM C Library - dev package Implementation of the C standard library targeting C17 and above. . diff --git a/debian/control.in b/debian/control.in index ec2d453a..4941bb0b 100644 --- a/debian/control.in +++ b/debian/control.in @@ -961,7 +961,7 @@ Description: Flang library - Development package Package: libllvmlibc-@LLVM_VERSION@-dev Section: libdevel -Architecture: amd64, arm64, armhf +Architecture: amd64 arm64 armhf Description: LLVM C Library - dev package Implementation of the C standard library targeting C17 and above. . From b42ff9916eddde26eb505d6f76e51d02d4c0d267 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 27 Feb 2024 14:06:38 +0100 Subject: [PATCH 14/21] only enable libc on 3 archs --- debian/rules | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index b298f9e3..f26330ce 100755 --- a/debian/rules +++ b/debian/rules @@ -25,15 +25,15 @@ LLVM_VERSION_NEXT := $(shell echo $(LLVM_VERSION_FULL) | awk -F. '{ OFS="."; $$N # disable fixfilepath in favor of the llvm-project supplied flavor, disable lto # remove +time64,+lfs once the time64_t transition starts ifeq ($(DEB_HOST_ARCH),i386) - RUNTIMES = compiler-rt;libcxx;libcxxabi;libc + RUNTIMES = compiler-rt;libcxx;libcxxabi export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto else ifeq ($(DEB_HOST_ARCH_BITS),32) - RUNTIMES = libcxx;libcxxabi;libc + RUNTIMES = libcxx;libcxxabi export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto abi=+time64,+lfs skip_packages = -Nlibclang-rt-$(LLVM_VERSION)-dev else - RUNTIMES = compiler-rt;libcxx;libcxxabi;libc + RUNTIMES = compiler-rt;libcxx;libcxxabi ifeq ($(DEB_HOST_ARCH),mips64el) export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto hardening=-stackprotector,-stackprotectorstrong else @@ -321,6 +321,10 @@ ifneq (,$(filter bolt-$(LLVM_VERSION), $(packages))) PROJECTS += ;bolt endif +ifneq (,$(filter libllvmlibc--$(LLVM_VERSION)-dev, $(packages))) + RUNTIMES += ;libc +endif + # flang is only for 64bits ifneq (,$(filter flang-$(LLVM_VERSION), $(packages))) PROJECTS += ;flang From dfa704d6fe8a9a85fd81d8a96cf5e51a3b9f4e1a Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 28 Feb 2024 11:08:49 +0100 Subject: [PATCH 15/21] rc4 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1887684b..5a2d5612 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-18 (1:18.1.0~rc3-1) unstable; urgency=medium +llvm-toolchain-18 (1:18.1.0~rc4-1) unstable; urgency=medium [ John Paul Adrian Glaubitz ] * Install *clang_rt* on sparc and sparc64 @@ -11,7 +11,7 @@ llvm-toolchain-18 (1:18.1.0~rc3-1) unstable; urgency=medium * Add a new package libllvmlibc-18-dev to ship LLVM libc (experimental for now) (amd64, arm64 and armhf) - -- Sylvestre Ledru Tue, 27 Feb 2024 08:43:07 +0100 + -- Sylvestre Ledru Wed, 28 Feb 2024 11:08:41 +0100 llvm-toolchain-18 (1:18.1.0~rc2-4) unstable; urgency=medium From 72f45797b9e2001f97f85cc40372ca6881d5098a Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 28 Feb 2024 11:12:03 +0100 Subject: [PATCH 16/21] rebase of all patches --- debian/patches/0044-soname.diff | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/debian/patches/0044-soname.diff b/debian/patches/0044-soname.diff index 8b819677..689e95c4 100644 --- a/debian/patches/0044-soname.diff +++ b/debian/patches/0044-soname.diff @@ -3,10 +3,10 @@ tools/llvm-shlib/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -Index: llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/clang/tools/libclang/CMakeLists.txt +Index: llvm-toolchain-18_18.1.0-rc4/clang/tools/libclang/CMakeLists.txt =================================================================== ---- llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b.orig/clang/tools/libclang/CMakeLists.txt -+++ llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/clang/tools/libclang/CMakeLists.txt +--- llvm-toolchain-18_18.1.0-rc4.orig/clang/tools/libclang/CMakeLists.txt ++++ llvm-toolchain-18_18.1.0-rc4/clang/tools/libclang/CMakeLists.txt @@ -135,7 +135,7 @@ if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHE remove_definitions("-D_XOPEN_SOURCE=700") endif() @@ -16,13 +16,13 @@ Index: llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/clang/tools/libcla OUTPUT_NAME ${output_name} ${SOURCES} -Index: llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/llvm/tools/llvm-shlib/CMakeLists.txt +Index: llvm-toolchain-18_18.1.0-rc4/llvm/tools/llvm-shlib/CMakeLists.txt =================================================================== ---- llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b.orig/llvm/tools/llvm-shlib/CMakeLists.txt -+++ llvm-toolchain-18_18.1.0~++20240223085437+b9029ed0053b/llvm/tools/llvm-shlib/CMakeLists.txt +--- llvm-toolchain-18_18.1.0-rc4.orig/llvm/tools/llvm-shlib/CMakeLists.txt ++++ llvm-toolchain-18_18.1.0-rc4/llvm/tools/llvm-shlib/CMakeLists.txt @@ -38,6 +38,8 @@ if(LLVM_BUILD_LLVM_DYLIB) - get_target_property(LLVM_DYLIB_FILENAME LLVM OUTPUT_NAME) - llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} ${LLVM_DYLIB_FILENAME} SHARED COMPONENT LLVM) + get_target_property(LLVM_DYLIB_SOVERSION LLVM SOVERSION) + llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} LLVM SHARED COMPONENT LLVM SOVERSION ${LLVM_DYLIB_SOVERSION}) + set_property(TARGET LLVM PROPERTY VERSION "1") # Append .1 to SONAME + From 67cd1db5ecd748eb80194c54262cd6c04c06c3b2 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 1 Mar 2024 16:09:06 +0100 Subject: [PATCH 17/21] fix the activation of libc --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index f26330ce..6320028c 100755 --- a/debian/rules +++ b/debian/rules @@ -321,7 +321,7 @@ ifneq (,$(filter bolt-$(LLVM_VERSION), $(packages))) PROJECTS += ;bolt endif -ifneq (,$(filter libllvmlibc--$(LLVM_VERSION)-dev, $(packages))) +ifneq (,$(filter libllvmlibc-$(LLVM_VERSION)-dev, $(packages))) RUNTIMES += ;libc endif From 4b46fbf04759d536e7f7dc9576a053171767831a Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 21 Feb 2024 10:43:08 +0100 Subject: [PATCH 18/21] adjust the filename with the recent naming change --- debian/libclang-cppX.Y.install.in | 2 +- debian/libllvmX.Y.install.in | 2 +- debian/libomp5-X.Y.install.in | 2 +- debian/llvm-X.Y-linker-tools.install.in | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/libclang-cppX.Y.install.in b/debian/libclang-cppX.Y.install.in index b0d88e0e..5874c10d 100644 --- a/debian/libclang-cppX.Y.install.in +++ b/debian/libclang-cppX.Y.install.in @@ -1 +1 @@ -usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@ +usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@.0 diff --git a/debian/libllvmX.Y.install.in b/debian/libllvmX.Y.install.in index f8d968f8..c5215640 100644 --- a/debian/libllvmX.Y.install.in +++ b/debian/libllvmX.Y.install.in @@ -1 +1 @@ -usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/ +usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so /usr/lib/@DEB_HOST_MULTIARCH@/ diff --git a/debian/libomp5-X.Y.install.in b/debian/libomp5-X.Y.install.in index 8204faac..a0fcf107 100644 --- a/debian/libomp5-X.Y.install.in +++ b/debian/libomp5-X.Y.install.in @@ -1,4 +1,4 @@ #!/usr/bin/dh-exec usr/lib/llvm-@LLVM_VERSION@/lib/libomp*.so.5 -[amd64 arm64 mips64el ppc64el ppc64 riscv64 loong64] usr/lib/llvm-@LLVM_VERSION@/lib/libomptarget*.so.@LLVM_VERSION@ +[amd64 arm64 mips64el ppc64el ppc64 riscv64 loong64] usr/lib/llvm-@LLVM_VERSION@/lib/libomptarget*.so.@LLVM_VERSION@.0 diff --git a/debian/llvm-X.Y-linker-tools.install.in b/debian/llvm-X.Y-linker-tools.install.in index 3aeaab5c..a073ccab 100644 --- a/debian/llvm-X.Y-linker-tools.install.in +++ b/debian/llvm-X.Y-linker-tools.install.in @@ -1,4 +1,4 @@ #!/usr/bin/dh-exec -usr/lib/llvm-@LLVM_VERSION@/lib/libLTO.so.@LLVM_VERSION@ +usr/lib/llvm-@LLVM_VERSION@/lib/libLTO.so.@LLVM_VERSION@.0 [!powerpc !powerpcspe] usr/lib/llvm-@LLVM_VERSION@/lib/LLVM*.so From 3271139eeb567c8a97117da329cc69a694f8fbe1 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 1 Mar 2024 21:58:11 +0100 Subject: [PATCH 19/21] adjust the version minor --- debian/libclang-cppX.Y.install.in | 2 +- debian/libomp5-X.Y.install.in | 2 +- debian/llvm-X.Y-linker-tools.install.in | 2 +- debian/rules | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/libclang-cppX.Y.install.in b/debian/libclang-cppX.Y.install.in index 5874c10d..120529f4 100644 --- a/debian/libclang-cppX.Y.install.in +++ b/debian/libclang-cppX.Y.install.in @@ -1 +1 @@ -usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@.0 +usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ diff --git a/debian/libomp5-X.Y.install.in b/debian/libomp5-X.Y.install.in index a0fcf107..5d3baecd 100644 --- a/debian/libomp5-X.Y.install.in +++ b/debian/libomp5-X.Y.install.in @@ -1,4 +1,4 @@ #!/usr/bin/dh-exec usr/lib/llvm-@LLVM_VERSION@/lib/libomp*.so.5 -[amd64 arm64 mips64el ppc64el ppc64 riscv64 loong64] usr/lib/llvm-@LLVM_VERSION@/lib/libomptarget*.so.@LLVM_VERSION@.0 +[amd64 arm64 mips64el ppc64el ppc64 riscv64 loong64] usr/lib/llvm-@LLVM_VERSION@/lib/libomptarget*.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ diff --git a/debian/llvm-X.Y-linker-tools.install.in b/debian/llvm-X.Y-linker-tools.install.in index a073ccab..b9bb2552 100644 --- a/debian/llvm-X.Y-linker-tools.install.in +++ b/debian/llvm-X.Y-linker-tools.install.in @@ -1,4 +1,4 @@ #!/usr/bin/dh-exec -usr/lib/llvm-@LLVM_VERSION@/lib/libLTO.so.@LLVM_VERSION@.0 +usr/lib/llvm-@LLVM_VERSION@/lib/libLTO.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ [!powerpc !powerpcspe] usr/lib/llvm-@LLVM_VERSION@/lib/LLVM*.so diff --git a/debian/rules b/debian/rules index 6320028c..2f9ef74c 100755 --- a/debian/rules +++ b/debian/rules @@ -15,6 +15,7 @@ GCC_VERSION := $(subst /usr/bin/g++-,,$(GXX_VERSIONED_EXECUTABLE)) LLVM_EPOCH := 1: LLVM_VERSION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") LLVM_VERSION_FULL := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1,p") +LLVM_VERSION_MINOR := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:[0-9]+\.(.*)\..*,\1,p") LLVM_VERSION_SNAPSHOT := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:(.*),\1,p") ifeq ($(LLVM_VERSION),$(LLVM_VERSION_FULL)) LLVM_VERSION_FULL := $(LLVM_VERSION).0.0 @@ -607,6 +608,7 @@ stamps/preconfigure: @echo "PROJECTS=$(PROJECTS_LIST)" @echo "RUNTIMES=$(RUNTIMES_LIST)" @echo "LLVM_VERSION=$(LLVM_VERSION)" + @echo "LLVM_VERSION_MINOR=$(LLVM_VERSION_MINOR)" @echo "LLVM_VERSION_FULL=$(LLVM_VERSION_FULL)" @echo "LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)" @echo "PATH=$(PATH)" @@ -631,6 +633,7 @@ stamps/preconfigure: -e "s|@OCAML_STDLIB_DIR@|$(OCAML_STDLIB_DIR)|g" \ -e "s|@LLVM_EPOCH@|$(LLVM_EPOCH)|g" \ -e "s|@LLVM_VERSION_FULL@|$(LLVM_VERSION_FULL)|g" \ + -e "s|@LLVM_VERSION_MINOR@|$(LLVM_VERSION_MINOR)|g" \ -e "s|@LLVM_VERSION_NEXT@|$(LLVM_VERSION_NEXT)|g" \ -e "s|@LLVM_VERSION@|$(LLVM_VERSION)|g" $$f > $$f2; \ done From a1442f1a02b047998847bb99b923347a19bd02e5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 22 Feb 2024 12:23:00 +0100 Subject: [PATCH 20/21] Also install usr/lib/llvm-18/lib/libLLVM.so.1 and usr/lib/llvm-18/lib/libLLVM.so.18.1 --- debian/changelog | 2 ++ debian/libllvmX.Y.install.in | 2 ++ 2 files changed, 4 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5a2d5612..b3dc08d2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ llvm-toolchain-18 (1:18.1.0~rc4-1) unstable; urgency=medium see https://discourse.llvm.org/t/libc-c-23-module-installation-support/77061/1 * Add a new package libllvmlibc-18-dev to ship LLVM libc (experimental for now) (amd64, arm64 and armhf) + * Also install usr/lib/llvm-19/lib/libLLVM.so.1 + and usr/lib/llvm-19/lib/libLLVM.so.18.0 -- Sylvestre Ledru Wed, 28 Feb 2024 11:08:41 +0100 diff --git a/debian/libllvmX.Y.install.in b/debian/libllvmX.Y.install.in index c5215640..11f472d2 100644 --- a/debian/libllvmX.Y.install.in +++ b/debian/libllvmX.Y.install.in @@ -1 +1,3 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so /usr/lib/@DEB_HOST_MULTIARCH@/ +usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.@LLVM_VERSION_MINOR@ +usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ From c5dd54428d0cce988a60a4430682a4396da687c8 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 2 Mar 2024 17:19:43 +0100 Subject: [PATCH 21/21] fix the version detection --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 2f9ef74c..f5876b0c 100755 --- a/debian/rules +++ b/debian/rules @@ -15,7 +15,7 @@ GCC_VERSION := $(subst /usr/bin/g++-,,$(GXX_VERSIONED_EXECUTABLE)) LLVM_EPOCH := 1: LLVM_VERSION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") LLVM_VERSION_FULL := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1,p") -LLVM_VERSION_MINOR := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:[0-9]+\.(.*)\..*,\1,p") +LLVM_VERSION_MINOR := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:[0-9]+\.([0-9]+)\.[0-9]+.*,\1,p") LLVM_VERSION_SNAPSHOT := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:(.*),\1,p") ifeq ($(LLVM_VERSION),$(LLVM_VERSION_FULL)) LLVM_VERSION_FULL := $(LLVM_VERSION).0.0