diff --git a/debian/bolt-X.Y.install.in b/debian/bolt-X.Y.install.in new file mode 100644 index 00000000..63c12de6 --- /dev/null +++ b/debian/bolt-X.Y.install.in @@ -0,0 +1,10 @@ +usr/bin/llvm-bolt-@LLVM_VERSION@ +usr/bin/llvm-bolt-heatmap-@LLVM_VERSION@ +usr/bin/llvm-boltdiff-@LLVM_VERSION@ +usr/bin/merge-fdata-@LLVM_VERSION@ +usr/bin/perf2bolt-@LLVM_VERSION@ +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-bolt +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-bolt-heatmap +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-boltdiff +usr/lib/llvm-@LLVM_VERSION@/bin/merge-fdata +usr/lib/llvm-@LLVM_VERSION@/bin/perf2bolt diff --git a/debian/control b/debian/control index d9d86f6b..db3ac3d7 100644 --- a/debian/control +++ b/debian/control @@ -805,3 +805,22 @@ Description: Multi-Level Intermediate Representation library MLIR aims to address software fragmentation, improve compilation for heterogeneous hardware, significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers together. + + +# ------------- bolt ------------- + +Package: bolt-15 +Architecture: amd64 arm64 +Depends: ${shlibs:Depends}, ${misc:Depends}, libbolt-15-dev (= ${binary:Version}), +Pre-Depends: ${misc:Pre-Depends} +Description: Post-link optimizer + TODO + + + +Package: libbolt-15-dev +Section: libdevel +Architecture: amd64 arm64 +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Post-link optimizer + TODO diff --git a/debian/libbolt-X.Y-dev.install.in b/debian/libbolt-X.Y-dev.install.in new file mode 100644 index 00000000..df12dc09 --- /dev/null +++ b/debian/libbolt-X.Y-dev.install.in @@ -0,0 +1,4 @@ +usr/lib/llvm-@LLVM_VERSION@/lib/libbolt_rt_hugify.a +usr/lib/llvm-@LLVM_VERSION@/lib/libbolt_rt_instr.a +usr/lib/llvm-@LLVM_VERSION@/lib/libbolt_rt_instr_osx.a + diff --git a/debian/patches/bolt-disable-emit-relocs.patch b/debian/patches/bolt-disable-emit-relocs.patch new file mode 100644 index 00000000..a356194b --- /dev/null +++ b/debian/patches/bolt-disable-emit-relocs.patch @@ -0,0 +1,14 @@ +Index: llvm-toolchain-15-15.0.0~+rc3/bolt/tools/merge-fdata/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.0~+rc3.orig/bolt/tools/merge-fdata/CMakeLists.txt ++++ llvm-toolchain-15-15.0.0~+rc3/bolt/tools/merge-fdata/CMakeLists.txt +@@ -9,6 +9,6 @@ add_bolt_tool(merge-fdata + set_target_properties(merge-fdata PROPERTIES FOLDER "BOLT") + + # Emit relocations for BOLT meta test (bolt/test/runtime/meta-merge-fdata.test) +-if (BOLT_INCLUDE_TESTS AND UNIX AND NOT APPLE) +- target_link_options(merge-fdata PRIVATE LINKER:--emit-relocs) +-endif() ++# if (BOLT_INCLUDE_TESTS AND UNIX AND NOT APPLE) ++# target_link_options(merge-fdata PRIVATE LINKER:--emit-relocs) ++# endif() diff --git a/debian/patches/bolt.patch b/debian/patches/bolt.patch new file mode 100644 index 00000000..4bcd658b --- /dev/null +++ b/debian/patches/bolt.patch @@ -0,0 +1,177 @@ +Index: llvm-toolchain-15-15.0.1/bolt/lib/Core/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Core/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Core/CMakeLists.txt +@@ -24,6 +24,7 @@ add_llvm_library(LLVMBOLTCore + ParallelUtilities.cpp + Relocation.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB + LINK_LIBS + ${LLVM_PTHREAD_LIB} + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Passes/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Passes/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Passes/CMakeLists.txt +@@ -46,6 +46,8 @@ add_llvm_library(LLVMBOLTPasses + VeneerElimination.cpp + RetpolineInsertion.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_LIBS + ${LLVM_PTHREAD_LIB} + +Index: llvm-toolchain-15-15.0.1/bolt/lib/Profile/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Profile/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Profile/CMakeLists.txt +@@ -7,6 +7,8 @@ add_llvm_library(LLVMBOLTProfile + YAMLProfileReader.cpp + YAMLProfileWriter.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_COMPONENTS + Support + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Rewrite/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Rewrite/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Rewrite/CMakeLists.txt +@@ -33,6 +33,8 @@ add_llvm_library(LLVMBOLTRewrite + MachORewriteInstance.cpp + RewriteInstance.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_LIBS + ${LLVM_PTHREAD_LIB} + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/RuntimeLibs/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/RuntimeLibs/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/RuntimeLibs/CMakeLists.txt +@@ -10,6 +10,8 @@ add_llvm_library(LLVMBOLTRuntimeLibs + RuntimeLibrary.cpp + HugifyRuntimeLibrary.cpp + InstrumentationRuntimeLibrary.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(LLVMBOLTRuntimeLibs +Index: llvm-toolchain-15-15.0.1/bolt/lib/Target/AArch64/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Target/AArch64/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Target/AArch64/CMakeLists.txt +@@ -8,6 +8,8 @@ set(LLVM_LINK_COMPONENTS + add_llvm_library(LLVMBOLTTargetAArch64 + AArch64MCPlusBuilder.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + AArch64CommonTableGen + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Target/X86/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Target/X86/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Target/X86/CMakeLists.txt +@@ -11,6 +11,8 @@ add_llvm_library(LLVMBOLTTargetX86 + X86MCPlusBuilder.cpp + X86MCSymbolizer.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + X86CommonTableGen + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Utils/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Utils/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Utils/CMakeLists.txt +@@ -2,6 +2,8 @@ add_llvm_library(LLVMBOLTUtils + CommandLineOpts.cpp + Utils.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_LIBS + ${LLVM_PTHREAD_LIB} + +Index: llvm-toolchain-15-15.0.1/bolt/tools/driver/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/driver/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/driver/CMakeLists.txt +@@ -14,6 +14,8 @@ endif() + add_bolt_tool(llvm-bolt + llvm-bolt.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + ${BOLT_DRIVER_DEPS} + ) +Index: llvm-toolchain-15-15.0.1/bolt/tools/heatmap/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/heatmap/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/heatmap/CMakeLists.txt +@@ -7,6 +7,7 @@ set(LLVM_LINK_COMPONENTS + + add_bolt_tool(llvm-bolt-heatmap + heatmap.cpp ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(llvm-bolt-heatmap +Index: llvm-toolchain-15-15.0.1/bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt +@@ -5,4 +5,6 @@ set(LLVM_LINK_COMPONENTS + + add_llvm_fuzzer(llvm-bolt-fuzzer + llvm-bolt-fuzzer.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) +Index: llvm-toolchain-15-15.0.1/bolt/tools/merge-fdata/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/merge-fdata/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/merge-fdata/CMakeLists.txt +@@ -3,6 +3,8 @@ set(LLVM_LINK_COMPONENTS Support) + add_bolt_tool(merge-fdata + merge-fdata.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + intrinsics_gen + ) +Index: llvm-toolchain-15-15.0.1/bolt/unittests/Core/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/unittests/Core/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/unittests/Core/CMakeLists.txt +@@ -9,6 +9,8 @@ add_bolt_unittest(CoreTests + BinaryContext.cpp + MCPlusBuilder.cpp + DynoStats.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(CoreTests +Index: llvm-toolchain-15-15.0.1/bolt/unittests/Profile/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/unittests/Profile/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/unittests/Profile/CMakeLists.txt +@@ -1,5 +1,7 @@ + add_bolt_unittest(ProfileTests + DataAggregator.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(ProfileTests diff --git a/debian/patches/series b/debian/patches/series index 3be5b3ab..be3883aa 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -143,3 +143,5 @@ revert-update-doc.diff unwind-force-pthread-dl.diff force-sse2-compiler-rt.diff fix-typo-1018770.diff +bolt.patch +bolt-disable-emit-relocs.patch diff --git a/debian/rules b/debian/rules index e28cd54e..e0d8a825 100755 --- a/debian/rules +++ b/debian/rules @@ -268,6 +268,11 @@ ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) endif endif +BOLT_ARCHS := amd64 arm64 +ifneq (,$(filter $(DEB_HOST_ARCH),$(BOLT_ARCHS))) + PROJECTS += ;bolt +endif + CODECOVERAGE=no ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) # enable the code coverage