From e3a53b15e8e2753352ed73723ea4539281b57bcf Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 26 Sep 2021 21:01:45 -0700 Subject: [PATCH 001/118] quilt patches --- .../compilerrt-fix-warn-xray-testing.diff | 32 ++++ .../libclc-fix-prepare_builtins-rpath.diff | 14 ++ .../libcxx-libatomic-only-with-gcc-rtlib.diff | 23 +++ debian/patches/llvm-fix-lld-linker-check.diff | 13 ++ debian/patches/openmp-fix-runtimes-build.diff | 170 ++++++++++++++++++ .../patches/runtimes-fix-cmake-use-make.diff | 33 ++++ debian/patches/series | 7 +- debian/patches/symbolizer-path.diff | 20 ++- 8 files changed, 307 insertions(+), 5 deletions(-) create mode 100644 debian/patches/compilerrt-fix-warn-xray-testing.diff create mode 100644 debian/patches/libclc-fix-prepare_builtins-rpath.diff create mode 100644 debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff create mode 100644 debian/patches/llvm-fix-lld-linker-check.diff create mode 100644 debian/patches/openmp-fix-runtimes-build.diff create mode 100644 debian/patches/runtimes-fix-cmake-use-make.diff diff --git a/debian/patches/compilerrt-fix-warn-xray-testing.diff b/debian/patches/compilerrt-fix-warn-xray-testing.diff new file mode 100644 index 00000000..645e7f88 --- /dev/null +++ b/debian/patches/compilerrt-fix-warn-xray-testing.diff @@ -0,0 +1,32 @@ +Index: llvm-toolchain-12_12.0.1/compiler-rt/cmake/Modules/CompilerRTUtils.cmake +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/compiler-rt/cmake/Modules/CompilerRTUtils.cmake ++++ llvm-toolchain-12_12.0.1/compiler-rt/cmake/Modules/CompilerRTUtils.cmake +@@ -242,15 +242,15 @@ macro(load_llvm_config) + + # Detect if we have the LLVMXRay and TestingSupport library installed and + # available from llvm-config. ++ set(COMPILER_RT_HAS_LLVMXRAY FALSE) + execute_process( + COMMAND ${LLVM_CONFIG_PATH} "--ldflags" "--libs" "xray" + RESULT_VARIABLE HAD_ERROR + OUTPUT_VARIABLE CONFIG_OUTPUT + ERROR_QUIET) +- if (HAD_ERROR) ++ if (HAD_ERROR AND COMPILER_RT_BUILD_XRAY) + message(WARNING "llvm-config finding xray failed with status ${HAD_ERROR}") +- set(COMPILER_RT_HAS_LLVMXRAY FALSE) +- else() ++ elseif(COMPILER_RT_BUILD_XRAY) + string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT}) + list(GET CONFIG_OUTPUT 0 LDFLAGS) + list(GET CONFIG_OUTPUT 1 LIBLIST) +@@ -267,7 +267,7 @@ macro(load_llvm_config) + RESULT_VARIABLE HAD_ERROR + OUTPUT_VARIABLE CONFIG_OUTPUT + ERROR_QUIET) +- if (HAD_ERROR) ++ if (HAD_ERROR AND COMPILER_RT_INCLUDE_TESTS) + message(WARNING "llvm-config finding testingsupport failed with status ${HAD_ERROR}") + elseif(COMPILER_RT_INCLUDE_TESTS) + string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT}) diff --git a/debian/patches/libclc-fix-prepare_builtins-rpath.diff b/debian/patches/libclc-fix-prepare_builtins-rpath.diff new file mode 100644 index 00000000..ac88169a --- /dev/null +++ b/debian/patches/libclc-fix-prepare_builtins-rpath.diff @@ -0,0 +1,14 @@ +Index: llvm-toolchain-12_12.0.1/libclc/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/libclc/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/libclc/CMakeLists.txt +@@ -139,6 +139,9 @@ target_compile_options( prepare_builtins + target_compile_definitions( prepare_builtins PRIVATE ${LLVM_VERSION_DEFINE} ) + target_link_libraries( prepare_builtins PRIVATE ${LLVM_LIBS} ) + target_link_libraries( prepare_builtins PRIVATE ${LLVM_SYSTEM_LIBS} ) ++set_target_properties( prepare_builtins ++ PROPERTIES INSTALL_RPATH "${LLVM_LIBDIR}" ++ BUILD_WITH_INSTALL_RPATH "ON") + + # Setup arch devices + set( r600--_devices cedar cypress barts cayman ) diff --git a/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff b/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff new file mode 100644 index 00000000..f91624df --- /dev/null +++ b/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff @@ -0,0 +1,23 @@ +Index: llvm-toolchain-12_12.0.1/libcxx/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/libcxx/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/libcxx/CMakeLists.txt +@@ -756,12 +756,14 @@ function(cxx_link_system_libraries targe + endif() + elseif (LIBCXX_HAS_GCC_LIB) + target_link_libraries(${target} PRIVATE gcc) ++ if (LIBCXX_HAS_ATOMIC_LIB) ++ target_link_libraries(${target} PRIVATE atomic) ++ endif() + elseif (LIBCXX_HAS_GCC_S_LIB) + target_link_libraries(${target} PRIVATE gcc_s) +- endif() +- +- if (LIBCXX_HAS_ATOMIC_LIB) +- target_link_libraries(${target} PRIVATE atomic) ++ if (LIBCXX_HAS_ATOMIC_LIB) ++ target_link_libraries(${target} PRIVATE atomic) ++ endif() + endif() + + if (MINGW) diff --git a/debian/patches/llvm-fix-lld-linker-check.diff b/debian/patches/llvm-fix-lld-linker-check.diff new file mode 100644 index 00000000..ee006e1d --- /dev/null +++ b/debian/patches/llvm-fix-lld-linker-check.diff @@ -0,0 +1,13 @@ +Index: llvm-toolchain-12_12.0.1/llvm/cmake/modules/AddLLVM.cmake +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/llvm/cmake/modules/AddLLVM.cmake ++++ llvm-toolchain-12_12.0.1/llvm/cmake/modules/AddLLVM.cmake +@@ -196,7 +196,7 @@ if (NOT DEFINED LLVM_LINKER_DETECTED) + set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "") + set(LLVM_LINKER_IS_GOLD YES CACHE INTERNAL "") + message(STATUS "Linker detection: GNU Gold") +- elseif("${stdout}" MATCHES "^LLD") ++ elseif("${stdout}" MATCHES "LLD") + set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "") + set(LLVM_LINKER_IS_LLD YES CACHE INTERNAL "") + message(STATUS "Linker detection: LLD") diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff new file mode 100644 index 00000000..23edc2d7 --- /dev/null +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -0,0 +1,170 @@ +Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +@@ -236,6 +236,7 @@ function(runtime_default_target) + -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_TRIPLE} + -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED} + -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default} ++ -DCMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR} + -DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE} + -DCMAKE_CXX_COMPILER_TARGET=${TARGET_TRIPLE} + -DCMAKE_ASM_COMPILER_TARGET=${TARGET_TRIPLE} +Index: llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt +@@ -83,6 +83,28 @@ option(OPENMP_ENABLE_LIBOMPTARGET_PROFIL + ${ENABLE_LIBOMPTARGET}) + option(OPENMP_ENABLE_LIBOMP_PROFILING "Enable time profiling for libomp." OFF) + ++option(OPENMP_USE_LLVM_UNWINDER "Build and use the LLVM unwinder" OFF) ++ ++option(LIBOMP_ENABLE_RTTI "Enabling RTTI forces libomp to be a c++ lib" ${LLVM_ENABLE_RTTI}) ++ ++macro(add_runtimes_build_depends_if_needed target) ++ if(RUNTIMES_BUILD) ++ # required for rtti and libomp/libomptarget profiling if enabled ++ add_dependencies(${target} cxx-headers cxxabi_static cxx_static cxxabi_shared cxx_shared) ++ if(OPENMP_USE_LLVM_UNWINDER AND (NOT target STREQUAL "omp" AND NOT LIBOMP_ENABLE_RTTI)) ++ add_dependencies(${target} unwind_static unwind_shared) ++ get_target_property(target_link_flags ${target} LINK_FLAGS) ++ set(runtimes_link_flags "-lunwind") ++ if(target_link_flags) ++ set(runtimes_link_flags "${target_link_flags} -lunwind") ++ endif() ++ set_target_properties(${target} ++ PROPERTIES ++ LINK_FLAGS "${runtimes_link_flags}") ++ endif() ++ endif() ++endmacro() ++ + # Build host runtime library, after LIBOMPTARGET variables are set since they are needed + # to enable time profiling support in the OpenMP runtime. + add_subdirectory(runtime) +Index: llvm-toolchain-12_12.0.1/openmp/cmake/HandleOpenMPOptions.cmake +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/cmake/HandleOpenMPOptions.cmake ++++ llvm-toolchain-12_12.0.1/openmp/cmake/HandleOpenMPOptions.cmake +@@ -29,7 +29,8 @@ append_if(OPENMP_HAVE_WNO_EXTRA_FLAG "-W + append_if(OPENMP_HAVE_WNO_PEDANTIC_FLAG "-Wno-pedantic" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append_if(OPENMP_HAVE_WNO_MAYBE_UNINITIALIZED_FLAG "-Wno-maybe-uninitialized" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + +-append_if(OPENMP_HAVE_STD_GNUPP14_FLAG "-std=gnu++14" CMAKE_CXX_FLAGS) +-if (NOT OPENMP_HAVE_STD_GNUPP14_FLAG) +- append_if(OPENMP_HAVE_STD_CPP14_FLAG "-std=c++14" CMAKE_CXX_FLAGS) ++# prefer c++14 over gnu++14? ++append_if(OPENMP_HAVE_STD_CPP14_FLAG "-std=c++14" CMAKE_CXX_FLAGS) ++if (NOT OPENMP_HAVE_STD_CPP14_FLAG) ++ append_if(OPENMP_HAVE_STD_GNUPP14_FLAG "-std=gnu++14" CMAKE_CXX_FLAGS) + endif() +Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt +@@ -36,6 +36,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "${tma + add_library("omptarget.rtl.${tmachine_libname}" SHARED + ${CMAKE_CURRENT_SOURCE_DIR}/../generic-elf-64bit/src/rtl.cpp) + ++ add_runtimes_build_depends_if_needed("omptarget.rtl.${tmachine_libname}") ++ + # Install plugin under the lib destination folder. + install(TARGETS "omptarget.rtl.${tmachine_libname}" + LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}") +@@ -79,4 +81,3 @@ add_subdirectory(remote) + # Make sure the parent scope can see the plugins that will be created. + set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE) + set(LIBOMPTARGET_TESTED_PLUGINS "${LIBOMPTARGET_TESTED_PLUGINS}" PARENT_SCOPE) +- +Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/cuda/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt +@@ -44,6 +44,8 @@ else() + set (LIBOMPTARGET_DEP_LIBRARIES ${CMAKE_DL_LIBS}) + endif() + ++add_runtimes_build_depends_if_needed(omptarget.rtl.cuda) ++ + # Install plugin under the lib destination folder. + install(TARGETS omptarget.rtl.cuda LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}") + +Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/src/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt +@@ -48,6 +48,8 @@ set_target_properties(omptarget + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${LIBOMPTARGET_LIBRARY_DIR}) + ++add_runtimes_build_depends_if_needed(omptarget) ++ + # Install libomptarget under the lib destination folder. + install(TARGETS omptarget LIBRARY COMPONENT omptarget + DESTINATION "${OPENMP_INSTALL_LIBDIR}") +Index: llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/runtime/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt +@@ -287,6 +287,10 @@ if(LIBOMP_STATS) + set(LIBOMP_USE_STDCPPLIB TRUE) + endif() + ++if(LIBOMP_ENABLE_RTTI) ++ set(LIBOMP_USE_STDCPPLIB TRUE) ++endif() ++ + # Shared library can be switched to a static library + set(LIBOMP_ENABLE_SHARED TRUE CACHE BOOL + "Shared library instead of static library?") +@@ -358,8 +362,7 @@ else() + set(LIBOMP_INSTALL_KIND ARCHIVE) + endif() + +-set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBOMP_VERSION_MAJOR}) +- ++set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${LIBOMP_LIBRARY_SUFFIX}) + + # Optional backwards compatibility aliases. + set(LIBOMP_INSTALL_ALIASES TRUE CACHE BOOL +Index: llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/runtime/src/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt +@@ -162,6 +162,8 @@ set_target_properties(omp PROPERTIES + LINKER_LANGUAGE ${LIBOMP_LINKER_LANGUAGE} + ) + ++add_runtimes_build_depends_if_needed(omp) ++ + # Get the library's location within the build tree for the unit tester + if(NOT WIN32) + get_target_property(LIBOMP_LIBRARY_DIR omp LIBRARY_OUTPUT_DIRECTORY) +Index: llvm-toolchain-12_12.0.1/openmp/tools/archer/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/openmp/tools/archer/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/openmp/tools/archer/CMakeLists.txt +@@ -14,6 +14,9 @@ if(LIBOMP_OMPT_SUPPORT) + add_library(archer SHARED ompt-tsan.cpp) + add_library(archer_static STATIC ompt-tsan.cpp) + ++ add_runtimes_build_depends_if_needed(archer) ++ add_runtimes_build_depends_if_needed(archer_static) ++ + install(TARGETS archer archer_static + LIBRARY DESTINATION ${OPENMP_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${OPENMP_INSTALL_LIBDIR}) +Index: llvm-toolchain-12_12.0.1/runtimes/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/runtimes/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/runtimes/CMakeLists.txt +@@ -97,7 +97,7 @@ include(HandleLLVMOptions) + include(FindPythonInterp) + + # Remove the -nostdlib++ option we've added earlier. +-string(REPLACE "-nostdlib++" "" CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") ++#string(REPLACE "-nostdlib++" "" CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") + + # Use libtool instead of ar if you are both on an Apple host, and targeting Apple. + if(CMAKE_HOST_APPLE AND APPLE) diff --git a/debian/patches/runtimes-fix-cmake-use-make.diff b/debian/patches/runtimes-fix-cmake-use-make.diff new file mode 100644 index 00000000..1c5c744a --- /dev/null +++ b/debian/patches/runtimes-fix-cmake-use-make.diff @@ -0,0 +1,33 @@ +Index: llvm-toolchain-12_12.0.1/clang/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/clang/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/clang/CMakeLists.txt +@@ -854,8 +854,14 @@ if (CLANG_ENABLE_BOOTSTRAP) + # exclude from main target + set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_${target}_EXCLUDE_FROM_MAIN On) + ++ set(cmake_or_make_cmd ${CMAKE_COMMAND} --build --target ${target}) ++ get_filename_component(make_cmd ${CMAKE_MAKE_PROGRAM} NAME) ++ if(make_cmd STREQUAL "gmake") ++ set(cmake_or_make_cmd $(MAKE) -C ${target}) ++ endif() ++ + ExternalProject_Add_Step(${NEXT_CLANG_STAGE} ${target} +- COMMAND ${CMAKE_COMMAND} --build --target ${target} ++ COMMAND ${cmake_or_make_cmd} + COMMENT "Performing ${target} for '${NEXT_CLANG_STAGE}'" + DEPENDEES configure + USES_TERMINAL 1 +Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +@@ -440,7 +440,7 @@ if(runtimes) + # build directory cannot find the C++ headers in certain configurations. + # I need to build a mechanism for runtime projects to provide CMake code + # that executes at LLVM configuration time to handle this case. +- add_dependencies(clang-bootstrap-deps runtimes-configure) ++ #add_dependencies(clang-bootstrap-deps runtimes-configure) + # We need to add the runtimes as a dependency because compiler-rt can be + # built as part of runtimes and we need the profile runtime for PGO + add_dependencies(clang-bootstrap-deps runtimes) diff --git a/debian/patches/series b/debian/patches/series index b872895b..6cdaccdc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -27,7 +27,6 @@ do-not-fail-on-unexpected-pass.diff disable-display-PASS-UNSUPPORTED-XFAIL.diff # llvm-config -fix-llvm-config-obj-src-root.patch 0001-llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch # Lib names @@ -146,3 +145,9 @@ scan-build-py-fix-default-bin.diff libclc-llvm-spirv.diff omp-riscv64.patch +runtimes-fix-cmake-use-make.diff +llvm-fix-lld-linker-check.diff +compilerrt-fix-warn-xray-testing.diff +openmp-fix-runtimes-build.diff +libclc-fix-prepare_builtins-rpath.diff +libcxx-libatomic-only-with-gcc-rtlib.diff diff --git a/debian/patches/symbolizer-path.diff b/debian/patches/symbolizer-path.diff index 3eaaaf84..69caab13 100644 --- a/debian/patches/symbolizer-path.diff +++ b/debian/patches/symbolizer-path.diff @@ -1,7 +1,7 @@ -Index: llvm-toolchain-snapshot_11~++20200326111000+4673699a470/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +Index: llvm-toolchain-12_12.0.1/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp =================================================================== ---- llvm-toolchain-snapshot_11~++20200326111000+4673699a470.orig/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp -+++ llvm-toolchain-snapshot_11~++20200326111000+4673699a470/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +--- llvm-toolchain-12_12.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp ++++ llvm-toolchain-12_12.0.1/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp @@ -25,6 +25,10 @@ #include "sanitizer_symbolizer_internal.h" #include "sanitizer_symbolizer_libbacktrace.h" @@ -13,7 +13,7 @@ Index: llvm-toolchain-snapshot_11~++20200326111000+4673699a470/compiler-rt/lib/s #include // for dlsym() #include -@@ -428,7 +432,7 @@ static SymbolizerTool *ChooseExternalSym +@@ -433,7 +437,7 @@ static SymbolizerTool *ChooseExternalSym return new(*allocator) AtosSymbolizer(found_path, allocator); } #endif // SANITIZER_MAC @@ -22,3 +22,15 @@ Index: llvm-toolchain-snapshot_11~++20200326111000+4673699a470/compiler-rt/lib/s VReport(2, "Using llvm-symbolizer found at: %s\n", found_path); return new(*allocator) LLVMSymbolizer(found_path, allocator); } +Index: llvm-toolchain-12_12.0.1/compiler-rt/lib/sanitizer_common/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/compiler-rt/lib/sanitizer_common/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/compiler-rt/lib/sanitizer_common/CMakeLists.txt +@@ -195,6 +195,7 @@ set(SANITIZER_IMPL_HEADERS + ) + + include_directories(..) ++include_directories(${LLVM_INCLUDE_DIR}) + + set(SANITIZER_COMMON_DEFINITIONS + HAVE_RPC_XDR_H=${HAVE_RPC_XDR_H}) From 20d2a90c2a83bc115e88a72f854ba18714467268 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 26 Sep 2021 21:11:10 -0700 Subject: [PATCH 002/118] rules updates --- debian/rules | 303 +++++++++++++++++++++++++-------------------------- 1 file changed, 148 insertions(+), 155 deletions(-) diff --git a/debian/rules b/debian/rules index c994960b..9cf8921d 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,9 @@ #!/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 +# polly & lldb aren't enabled for every platform +PROJECTS = clang;clang-tools-extra;lld;debuginfo-tests +# 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 @@ -41,8 +43,13 @@ CFLAGS_EXTRA = CONFIGURE_EXTRA = CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 CMAKE_LIBCXX_EXTRA = +STAGE1_CMAKE_EXTRA = +# prepend bootstrap prefix to CMAKE_EXTRA vars +BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) BASE_PATH := $(CURDIR) +STAGE1_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD)/lib +STAGE2_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/lib LIBCXX_EXCEPTIONS :=ON ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) @@ -50,7 +57,11 @@ ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) endif ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) -CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-latomic" -DCMAKE_SHARED_LINKER_FLAGS="-latomic" +CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm -latomic" -DCMAKE_SHARED_LINKER_FLAGS="-latomic" +STAGE1_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm -latomic" -DCMAKE_SHARED_LINKER_FLAGS="-latomic" +else +CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" +STAGE1_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" endif ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) @@ -83,6 +94,7 @@ ifneq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) Z3_FLAG = -DLLVM_ENABLE_Z3_SOLVER=ON endif endif +CMAKE_EXTRA += $(Z3_FLAG) # Change the default CPU for s390x ZARCH=z196 @@ -101,23 +113,24 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # 3.8 fails to build, disable the compiler_rt builtins # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF + STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF # Check for ancient libstdc++ fails due to atomics usage 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 + STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) # avoid an issue with openmp on armhf - CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf + STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf endif ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) # avoid an issue with search path on mips64el # https://bugs.llvm.org/show_bug.cgi?id=41204 - CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 + STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif @@ -152,13 +165,7 @@ endif 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))) -# -fused-ld=gold enables the gold linker (but is not supported by all archs / distro) - LDFLAGS_EXTRA += -fuse-ld=gold -#--no-keep-files-mapped --no-map-whole-files - CXXFLAGS_EXTRA += -fuse-ld=gold - CFLAGS_EXTRA += -fuse-ld=gold -#-Wl,--no-keep-files-mapped -Wl,--no-map-whole-files - CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ + STAGE1_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold endif endif @@ -175,11 +182,11 @@ ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) endif # Enable for bootstrap -LDFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option -Wl,--build-id -CXXFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option -BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) # Nothing for now. Keeping in case we need it -CFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option -BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) # Nothing for now. Keeping in case we need it +LDFLAGS_EXTRA += -Wno-unused-command-line-argument -Wl,--build-id +CFLAGS_EXTRA += -Wno-unused-command-line-argument +CXXFLAGS_EXTRA += -Wno-unused-command-line-argument +BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) +BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) # Enable polly (or not) POLLY_ENABLE=yes @@ -194,7 +201,7 @@ OPENMP_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x x32)) OPENMP_ENABLE=no else - PROJECTS+=;openmp + RUNTIMES+=;openmp endif # Enable libunwind (or not) @@ -202,9 +209,10 @@ LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sparc64 x32)) LIBUNWIND_ENABLE=no else - PROJECTS += ;libunwind - CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DLIBUNWIND_USE_COMPILER_RT=ON + RUNTIMES += ;libunwind + CMAKE_EXTRA += \ + -DLIBUNWIND_USE_COMPILER_RT=ON \ + -DLIBCXXABI_USE_LLVM_UNWINDER=ON endif RUN_TEST=yes @@ -270,7 +278,7 @@ LLD_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH_OS),linux)) # only for linux - CMAKE_EXTRA += -DLLVM_USE_PERF=yes -DLLVM_ENABLE_LIBPFM=ON + CMAKE_EXTRA += -DLLVM_USE_PERF=ON -DLLVM_ENABLE_LIBPFM=ON endif # Only enable it for archs supporting gold @@ -319,14 +327,15 @@ ifeq ($(shell test -e /tmp/cmake/bin/cmake && echo -n yes),yes) export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/tmp/cmake/bin/ endif -GENERATOR=Ninja - %: dh $@ $(DH_OPTIONS) # 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") + +# 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-sanitizer;llvm-config;test-suite preconfigure: @@ -343,7 +352,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)" @@ -414,56 +423,116 @@ override_dh_auto_configure: preconfigure --xml-option append_arg:"replace/llvm::AlignOf::Alignment/(llvm::AlignOf::Alignment)"; \ fi) +# Fails with No target "unwind_static" +# -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ +# -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ +# -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \ +#- to libc++ when libunwind is built +#- Matches what is done on brew: +#- https://bit.ly/3kDNpC9 + echo "Running tests: $(RUN_TEST)" echo "Using cmake: $(CMAKE_BIN)"; \ - CFLAGS="$(CFLAGS_EXTRA)" \ - CXXFLAGS="$(CXXFLAGS_EXTRA)" \ - LDFLAGS="$(LDFLAGS_EXTRA)" \ - LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ - -G $(GENERATOR) \ - -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ - -DCMAKE_SUPPRESS_REGENERATION=ON \ + LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \ + $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ + -DCMAKE_SUPPRESS_REGENERATION=ON \ -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= \ - -DLLVM_ENABLE_SPHINX=ON \ - -DSPHINX_WARNINGS_AS_ERRORS=OFF \ - -DLLVM_ENABLE_RTTI=ON \ - -DLLVM_ENABLE_FFI=ON \ - -DLLVM_ENABLE_DUMP=ON \ - -DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ - -DCLANG_LINK_CLANG_DYLIB=ON \ + -DCMAKE_BUILD_TYPE=Release \ -DENABLE_LINKER_BUILD_ID=ON \ - -DCOMPILER_RT_USE_LIBCXX=NO \ - -DLIBUNWIND_USE_COMPILER_RT=ON \ - $(Z3_FLAG) \ - $(CMAKE_EXTRA) \ - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ + -DLLVM_TARGETS_TO_BUILD=Native \ + -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ + -DLLVM_ENABLE_RUNTIMES="$(RUNTIMES_LIST)" \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLVVM_ENABLE_ZLIB=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_INCLUDE_GO_TESTS=OFF \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - -DCLANG_VENDOR=$(VENDOR) \ - -DCLANG_ENABLE_BOOTSTRAP=ON \ + -DCLANG_DEFAULT_LINKER=lld \ + -DCLANG_PLUGIN_SUPPORT=OFF \ -DCLANG_BUILD_EXAMPLES=OFF \ - -DLLVM_POLLY_LINK_INTO_TOOLS=ON \ - -DBOOTSTRAP_CMAKE_CXX_FLAGS='$(BOOTSTRAP_CXXFLAGS_EXTRA)' \ - -DBOOTSTRAP_CMAKE_C_FLAGS='$(BOOTSTRAP_CFLAGS_EXTRA)' \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_VERBOSE_MAKEFILE;CMAKE_BUILD_TYPE;CMAKE_CXX_FLAGS_RELWITHDEBINFO;LLVM_LINK_LLVM_DYLIB;LLVM_INSTALL_UTILS;LLVM_VERSION_SUFFIX;LLVM_ENABLE_SPHINX;SPHINX_WARNINGS_AS_ERRORS;LLVM_BUILD_LLVM_DYLIB;LLVM_ENABLE_RTTI;LLVM_ENABLE_FFI;LIBCLANG_LIBRARY_VERSION;ENABLE_LINKER_BUILD_ID;POLLY_BUNDLED_JSONCPP;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;LLVM_USE_PERF;LLVM_ENABLE_ASSERTIONS;LLVM_BINUTILS_INCDIR;LLVM_HOST_TRIPLE;LLVM_COMPILER_CHECKED;COMPILER_RT_BUILD_BUILTINS;LIBOMP_LIBFLAGS;CMAKE_SHARED_LINKER_FLAGS;PYTHON_EXECUTABLE;LLVM_ENABLE_Z3_SOLVER;LLVM_POLLY_LINK_INTO_TOOLS;CLANG_VENDOR;LIBUNWIND_USE_COMPILER_RT"; \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + -DCOMPILER_RT_INCLUDE_TESTS=OFF \ + -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ + -DLIBUNWIND_ENABLE_SHARED=ON \ + -DLIBUNWIND_USE_COMPILER_RT=ON \ + -DLIBUNWIND_INSTALL_LIBRARY=OFF \ + -DLIBCXXABI_ENABLE_SHARED=ON \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ + -DLIBCXXABI_INSTALL_LIBRARY=OFF \ + -DLIBCXX_ENABLE_SHARED=ON \ + -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 \ + -DLIBCXX_INSTALL_LIBRARY=OFF \ + -DOPENMP_ENABLE_LIBOMP_PROFILING=OFF \ + -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING=OFF \ + -DOPENMP_USE_LLVM_UNWINDER=ON \ + -DLIBOMP_ENABLE_RTTI=OFF \ + -DLIBOMP_OMPT_SUPPORT=OFF \ + $(STAGE1_CMAKE_EXTRA) \ + -DBUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DRUNTIMES_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DCLANG_ENABLE_BOOTSTRAP=ON \ + -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ + -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ + -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ + -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(BOOTSTRAP_CXXFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_C_FLAGS="$(BOOTSTRAP_CFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="-rtlib=compiler-rt -l:libunwind.so" \ + -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="-rtlib=compiler-rt -l:libunwind.so" \ + -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="-rtlib=compiler-rt -l:libunwind.so" \ + -DBOOTSTRAP_LLVM_ENABLE_LLD=ON \ + -DBOOTSTRAP_LLVM_ENABLE_LIBCXX=ON \ + -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ + -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ + -DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \ + -DBOOTSTRAP_LLVM_ENABLE_SPHINX=ON \ + -DBOOTSTRAP_SPHINX_WARNINGS_AS_ERRORS=OFF \ + -DBOOTSTRAP_LLVM_USE_RELATIVE_PATHS_IN_FILES=ON \ + -DBOOTSTRAP_LLVM_INSTALL_UTILS=ON \ + -DBOOTSTRAP_LLVM_VERSION_SUFFIX= \ + -DBOOTSTRAP_LLVM_POLLY_LINK_INTO_TOOLS=ON \ + -DBOOTSTRAP_LLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ + -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB=ON \ + -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ + -DBOOTSTRAP_CLANG_DEFAULT_CXX_STDLIB=libc++ \ + -DBOOTSTRAP_CLANG_DEFAULT_RTLIB=compiler-rt \ + -DBOOTSTRAP_CLANG_DEFAULT_OBJCOPY=llvm-objcopy \ + -DBOOTSTRAP_CLANG_DEFAULT_OPENMP_RUNTIME=libomp \ + -DBOOTSTRAP_CLANG_VENDOR=$(VENDOR) \ + -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ + -DBOOTSTRAP_SANITIZER_CXX_ABI=libc++ \ + -DBOOTSTRAP_LIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DBOOTSTRAP_LIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ + $(BOOTSTRAP_CMAKE_EXTRA) \ + -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_EXE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;CMAKE_VERBOSE_MAKEFILE;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ exit 1; \ fi - +ifeq (Ninja, $(GENERATOR)) # ninja VERBOSE=-v +else +# make +VERBOSE=VERBOSE=1 +endif debian-full-build: - $(PRE_PROCESS) ninja $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) stage2 +# linker hack so stage2 can link against stage1 libs at runtime + LD_LIBRARY_PATH=$(STAGE1_LIB_DIR):$$LD_LIBRARY_PATH \ + $(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 ! readelf --string-dump .comment $(TARGET_BUILD_STAGE2)/bin/clang 2>&1|grep -q "clang version"; then \ @@ -489,77 +558,6 @@ 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 \ - -DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \ - -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - $(CMAKE_EXTRA) - -debian-libcxxabi-build: -# Builds libcxxabi - echo "Using cmake: $(CMAKE_BIN)"; \ - cd libcxxabi && \ - CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) \ - -S . -B build \ - -G $(GENERATOR) \ - $(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) \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLLVM_ENABLE_RTTI=ON \ - $(CMAKE_LIBCXX_EXTRA) && \ - $(PRE_PROCESS_CONF) ninja -C build/ $(VERBOSE) - 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)"; \ - cd libcxx && \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) \ - CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" \ - -S . -B build \ - -G $(GENERATOR) \ - $(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 \ - -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) && \ - $(PRE_PROCESS_CONF) ninja -C build/ $(VERBOSE) - touch $@ - - debian-libclc-build: # Builds libclc @@ -572,16 +570,17 @@ debian-libclc-build: echo "Using cmake: $$CMAKE_BIN"; \ cd libclc/build && \ $$CMAKE_BIN ../ \ - -G $(GENERATOR) \ + -DCMAKE_C_COMPILER=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang \ + -DCMAKE_CXX_COMPILER=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang++ \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ - -DLLVM_CONFIG=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ + -DLLVM_CONFIG=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ - ninja $(VERBOSE) + make $(NJOBS) $(VERBOSE) touch $@ -override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxxabi-build debian-libcxx-build debian-libclc-build +override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libclc-build override_dh_prep: build_doc dh_prep @@ -639,7 +638,7 @@ 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 - DESTDIR=$(DEB_INST)/ ninja -C $(TARGET_BUILD) $(VERBOSE) stage2-install + $(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 @@ -655,25 +654,20 @@ override_dh_auto_install: # Only run on executable, not script chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1` - chrpath -d libcxxabi/build/lib/libc++abi.so.1.0 - chrpath -d libcxx/build/lib/libc++.so.1.0 - - : # libclang - cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT) libclang-$(LLVM_VERSION).so; \ - ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT) - - : # libomp - cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && rm -f libomp.so; \ - ln -s libomp.so.$(SONAME_OPENMP) libomp.so if test "$(LIBUNWIND_ENABLE)" = yes; then \ mkdir -p debian/tmp/usr/include/libunwind; \ cp -R libunwind/include/* debian/tmp/usr/include/libunwind/; \ fi + : # libclang + cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT); \ + ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT) + + : # libomp if test "$(OPENMP_ENABLE)" = yes; then \ - mkdir -p debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/include/openmp; \ - cp -f openmp/runtime/exports/common*/include/* debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/include/openmp; \ + cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && mv libomp.so libomp.so.$(SONAME_OPENMP); \ + ln -s libomp.so.$(SONAME_OPENMP) libomp.so; \ cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && cp libomp.so.$(SONAME_OPENMP) libomp-$(LLVM_VERSION).so.$(SONAME_OPENMP); \ fi @@ -714,8 +708,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__/ - DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C libcxxabi/build install - DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C libcxx/build install DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C libclc/build install # Rename binaries @@ -769,8 +761,8 @@ endif # Manage the polly files. Sometimes, we build them. Sometimes not. if test "$(POLLY_ENABLE)" = yes; then \ mkdir -p $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly/; \ - mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libpolly* \ - $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ + mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libPolly* \ + $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ rm -rf $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly; \ mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/polly/ \ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/; \ @@ -911,10 +903,10 @@ endif ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-sanitizer || true # Libcxx - ninja $(VERBOSE) -C libcxx/build check-libcxx || true + ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libcxx || true # Libcxxabi - ninja $(VERBOSE) -C libcxxabi/build check-libcxxabi || true + ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libcxxabi || true # Libclc ninja $(VERBOSE) -C libclc/build test || true @@ -937,7 +929,7 @@ endif # Polly tests #ifeq (${POLLY_ENABLE},yes) -# ninja -C $(TARGET_BUILD) check-polly || true +# $(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-polly || true #endif # Managed by debian build system @@ -966,6 +958,7 @@ override_dh_gencontrol: override_dh_auto_clean: rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h docs/_build/ clang/docs/_build tools/clang/docs/_html/ +# rm -rf clang/include/clang/Debian # QA tools rm -rf cov-int/ reports/ rm -f `ls debian/*.in|sed -e "s|.in$$||g"` From e2ff30191194582f9650a7bcf82f79dc0d2aa38f Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 27 Sep 2021 12:08:24 -0700 Subject: [PATCH 003/118] change cmake generator and all build invocations from make to ninja --- debian/rules | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/debian/rules b/debian/rules index 9cf8921d..26bb56e9 100755 --- a/debian/rules +++ b/debian/rules @@ -327,6 +327,8 @@ ifeq ($(shell test -e /tmp/cmake/bin/cmake && echo -n yes),yes) export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/tmp/cmake/bin/ endif +GENERATOR=Ninja + %: dh $@ $(DH_OPTIONS) @@ -433,8 +435,11 @@ override_dh_auto_configure: preconfigure echo "Running tests: $(RUN_TEST)" echo "Using cmake: $(CMAKE_BIN)"; \ - LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \ - $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ + CFLAGS="$(CFLAGS_EXTRA)" \ + CXXFLAGS="$(CXXFLAGS_EXTRA)" \ + LDFLAGS="$(LDFLAGS_EXTRA)" \ + LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ + -G $(GENERATOR) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_VERBOSE_MAKEFILE=ON \ @@ -532,7 +537,7 @@ endif debian-full-build: # linker hack so stage2 can link against stage1 libs at runtime LD_LIBRARY_PATH=$(STAGE1_LIB_DIR):$$LD_LIBRARY_PATH \ - $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 stage2 + $(PRE_PROCESS) ninja $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) stage2 # Check the stage 2 build worked if ! readelf --string-dump .comment $(TARGET_BUILD_STAGE2)/bin/clang 2>&1|grep -q "clang version"; then \ @@ -570,6 +575,7 @@ debian-libclc-build: echo "Using cmake: $$CMAKE_BIN"; \ cd libclc/build && \ $$CMAKE_BIN ../ \ + -G $(GENERATOR) \ -DCMAKE_C_COMPILER=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang \ -DCMAKE_CXX_COMPILER=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang++ \ -DCMAKE_INSTALL_PREFIX=/usr \ @@ -577,7 +583,7 @@ debian-libclc-build: -DCMAKE_INSTALL_INCLUDEDIR=include \ -DLLVM_CONFIG=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ - make $(NJOBS) $(VERBOSE) + ninja $(NJOBS) $(VERBOSE) touch $@ override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libclc-build @@ -638,7 +644,7 @@ 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 - $(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install DESTDIR=$(DEB_INST)/ + DESTDIR=$(DEB_INST)/ ninja -C $(TARGET_BUILD) $(VERBOSE) stage2-install # Not used on Linux. rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/argdumper @@ -929,7 +935,7 @@ endif # Polly tests #ifeq (${POLLY_ENABLE},yes) -# $(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-polly || true +# ninja -C $(TARGET_BUILD) check-polly || true #endif # Managed by debian build system From 34c3eb2847e1736100f3d3d63b976703a81c92bc Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 27 Sep 2021 17:04:32 -0700 Subject: [PATCH 004/118] comment out obsolete patch hardcoding gold linker for compiler-rt as lld is now expected to link all stage1 and stage2 builtins and runtimes --- debian/patches/series | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/patches/series b/debian/patches/series index 6cdaccdc..bd92c474 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -126,7 +126,7 @@ sparc/sparc-D98574-clang-def.patch sparc/sparc-D98575-compiler-rt.patch # Compiler-rt - workaround -workaround-bug-42994-use-linker.diff +#workaround-bug-42994-use-linker.diff # bug 939472 #try-to-unbreak-thinlto.diff From 69de88d53e36d6a25f88333bd81437f581e6c6cd Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 27 Sep 2021 17:41:25 -0700 Subject: [PATCH 005/118] add back LLVM_BINUTILS_INCDIR for gold LTO plugin --- debian/rules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/rules b/debian/rules index 26bb56e9..a9db4e19 100755 --- a/debian/rules +++ b/debian/rules @@ -166,6 +166,7 @@ BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el x32 s390x hurd-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))) STAGE1_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold + CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ endif endif From 057aaddd58a6397ba69acb494aa6779237e8daad Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 27 Sep 2021 18:10:14 -0700 Subject: [PATCH 006/118] uncomment cleanup for clang/include/clang/Debian --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index a9db4e19..9b34b085 100755 --- a/debian/rules +++ b/debian/rules @@ -965,7 +965,7 @@ override_dh_gencontrol: override_dh_auto_clean: rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h docs/_build/ clang/docs/_build tools/clang/docs/_html/ -# rm -rf clang/include/clang/Debian + rm -rf clang/include/clang/Debian # QA tools rm -rf cov-int/ reports/ rm -f `ls debian/*.in|sed -e "s|.in$$||g"` From 6ce54c5ad96255b8467877d417126c786be73ce1 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 27 Sep 2021 19:15:13 -0700 Subject: [PATCH 007/118] add libelf-dev to build-depends for source pkg as a dependency for openmp libomptarget runtime build --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 9294f7d4..6e60288b 100644 --- a/debian/control +++ b/debian/control @@ -6,6 +6,7 @@ Maintainer: LLVM Packaging Team Uploaders: Sylvestre Ledru , Gianfranco Costamagna Build-Depends: debhelper (>= 9.0), cmake, ninja-build, chrpath, texinfo, sharutils, + libelf-dev, libffi-dev, lsb-release, patchutils, diffstat, xz-utils, python3-dev, libedit-dev, libncurses5-dev, swig, python3-six, python3-sphinx (>= 1.3.6), From 124f97744202eb9ae899a4ef6b409724e5a2deb7 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 28 Sep 2021 09:50:41 -0700 Subject: [PATCH 008/118] remove extra `cd` when copying libomp SOs --- debian/rules | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/debian/rules b/debian/rules index 9b34b085..accdc574 100755 --- a/debian/rules +++ b/debian/rules @@ -662,20 +662,20 @@ override_dh_auto_install: # Only run on executable, not script chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1` + : # libclang + cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT); \ + ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT) + if test "$(LIBUNWIND_ENABLE)" = yes; then \ mkdir -p debian/tmp/usr/include/libunwind; \ cp -R libunwind/include/* debian/tmp/usr/include/libunwind/; \ fi - : # libclang - cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT); \ - ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT) - : # libomp if test "$(OPENMP_ENABLE)" = yes; then \ cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && mv libomp.so libomp.so.$(SONAME_OPENMP); \ ln -s libomp.so.$(SONAME_OPENMP) libomp.so; \ - cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && cp libomp.so.$(SONAME_OPENMP) libomp-$(LLVM_VERSION).so.$(SONAME_OPENMP); \ + cp libomp.so.$(SONAME_OPENMP) libomp-$(LLVM_VERSION).so.$(SONAME_OPENMP); \ fi # Remove artifact (where compiler-rt is built) From 42234330409dca1633a99b1080d103ef188221d6 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 28 Sep 2021 09:57:48 -0700 Subject: [PATCH 009/118] revert erroneous package dir name change --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index accdc574..4768afb3 100755 --- a/debian/rules +++ b/debian/rules @@ -769,7 +769,7 @@ endif if test "$(POLLY_ENABLE)" = yes; then \ mkdir -p $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly/; \ mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libPolly* \ - $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ + $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ rm -rf $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly; \ mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/polly/ \ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/; \ From b5196f114291acc66c5fa0261fb651911db68da2 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 28 Sep 2021 10:46:29 -0700 Subject: [PATCH 010/118] remove unnecessary make patch as ninja is the cmake generator --- debian/patches/openmp-fix-runtimes-build.diff | 9 +++++ .../patches/runtimes-fix-cmake-use-make.diff | 33 ------------------- debian/patches/series | 1 - 3 files changed, 9 insertions(+), 34 deletions(-) delete mode 100644 debian/patches/runtimes-fix-cmake-use-make.diff diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index 23edc2d7..902b8b53 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -10,6 +10,15 @@ Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt -DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE} -DCMAKE_CXX_COMPILER_TARGET=${TARGET_TRIPLE} -DCMAKE_ASM_COMPILER_TARGET=${TARGET_TRIPLE} +@@ -440,7 +441,7 @@ if(runtimes) + # build directory cannot find the C++ headers in certain configurations. + # I need to build a mechanism for runtime projects to provide CMake code + # that executes at LLVM configuration time to handle this case. +- add_dependencies(clang-bootstrap-deps runtimes-configure) ++ #add_dependencies(clang-bootstrap-deps runtimes-configure) + # We need to add the runtimes as a dependency because compiler-rt can be + # built as part of runtimes and we need the profile runtime for PGO + add_dependencies(clang-bootstrap-deps runtimes) Index: llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/openmp/CMakeLists.txt diff --git a/debian/patches/runtimes-fix-cmake-use-make.diff b/debian/patches/runtimes-fix-cmake-use-make.diff deleted file mode 100644 index 1c5c744a..00000000 --- a/debian/patches/runtimes-fix-cmake-use-make.diff +++ /dev/null @@ -1,33 +0,0 @@ -Index: llvm-toolchain-12_12.0.1/clang/CMakeLists.txt -=================================================================== ---- llvm-toolchain-12_12.0.1.orig/clang/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/clang/CMakeLists.txt -@@ -854,8 +854,14 @@ if (CLANG_ENABLE_BOOTSTRAP) - # exclude from main target - set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_${target}_EXCLUDE_FROM_MAIN On) - -+ set(cmake_or_make_cmd ${CMAKE_COMMAND} --build --target ${target}) -+ get_filename_component(make_cmd ${CMAKE_MAKE_PROGRAM} NAME) -+ if(make_cmd STREQUAL "gmake") -+ set(cmake_or_make_cmd $(MAKE) -C ${target}) -+ endif() -+ - ExternalProject_Add_Step(${NEXT_CLANG_STAGE} ${target} -- COMMAND ${CMAKE_COMMAND} --build --target ${target} -+ COMMAND ${cmake_or_make_cmd} - COMMENT "Performing ${target} for '${NEXT_CLANG_STAGE}'" - DEPENDEES configure - USES_TERMINAL 1 -Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt -=================================================================== ---- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt -@@ -440,7 +440,7 @@ if(runtimes) - # build directory cannot find the C++ headers in certain configurations. - # I need to build a mechanism for runtime projects to provide CMake code - # that executes at LLVM configuration time to handle this case. -- add_dependencies(clang-bootstrap-deps runtimes-configure) -+ #add_dependencies(clang-bootstrap-deps runtimes-configure) - # We need to add the runtimes as a dependency because compiler-rt can be - # built as part of runtimes and we need the profile runtime for PGO - add_dependencies(clang-bootstrap-deps runtimes) diff --git a/debian/patches/series b/debian/patches/series index bd92c474..be4e37ea 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -145,7 +145,6 @@ scan-build-py-fix-default-bin.diff libclc-llvm-spirv.diff omp-riscv64.patch -runtimes-fix-cmake-use-make.diff llvm-fix-lld-linker-check.diff compilerrt-fix-warn-xray-testing.diff openmp-fix-runtimes-build.diff From 6a6014a6306c833c2fa3af14baa6850bc87c9d34 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 28 Sep 2021 14:59:55 -0700 Subject: [PATCH 011/118] remove patch hardcoding gold linker for compiler-rt --- debian/patches/series | 3 -- .../workaround-bug-42994-use-linker.diff | 34 ------------------- 2 files changed, 37 deletions(-) delete mode 100644 debian/patches/workaround-bug-42994-use-linker.diff diff --git a/debian/patches/series b/debian/patches/series index be4e37ea..dbd27e77 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -125,9 +125,6 @@ risc/clang-riscv64-multiarch.diff sparc/sparc-D98574-clang-def.patch sparc/sparc-D98575-compiler-rt.patch -# Compiler-rt - workaround -#workaround-bug-42994-use-linker.diff - # bug 939472 #try-to-unbreak-thinlto.diff #D67877-cmake-clang-example.patch diff --git a/debian/patches/workaround-bug-42994-use-linker.diff b/debian/patches/workaround-bug-42994-use-linker.diff deleted file mode 100644 index 3d87717d..00000000 --- a/debian/patches/workaround-bug-42994-use-linker.diff +++ /dev/null @@ -1,34 +0,0 @@ -Index: llvm-toolchain-snapshot_11~++20200326111000+4673699a470/compiler-rt/lib/hwasan/CMakeLists.txt -=================================================================== ---- llvm-toolchain-snapshot_11~++20200326111000+4673699a470.orig/compiler-rt/lib/hwasan/CMakeLists.txt -+++ llvm-toolchain-snapshot_11~++20200326111000+4673699a470/compiler-rt/lib/hwasan/CMakeLists.txt -@@ -43,9 +43,9 @@ append_list_if(COMPILER_RT_HWASAN_WITH_I - - set(HWASAN_RTL_CFLAGS ${SANITIZER_COMMON_CFLAGS}) - append_rtti_flag(OFF HWASAN_RTL_CFLAGS) --append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC HWASAN_RTL_CFLAGS) -+append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC -fuse-ld=gold HWASAN_RTL_CFLAGS) - # Prevent clang from generating libc calls. --append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding HWASAN_RTL_CFLAGS) -+append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding -fuse-ld=gold HWASAN_RTL_CFLAGS) - - set(HWASAN_DYNAMIC_LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS}) - -@@ -57,7 +57,7 @@ if(ANDROID) - endif() - endif() - --set(HWASAN_DYNAMIC_CFLAGS ${HWASAN_RTL_CFLAGS}) -+set(HWASAN_DYNAMIC_CFLAGS ${HWASAN_RTL_CFLAGS} -fuse-ld=gold) - append_list_if(COMPILER_RT_HAS_FTLS_MODEL_INITIAL_EXEC - -ftls-model=initial-exec HWASAN_DYNAMIC_CFLAGS) - append_list_if(MSVC /DEBUG HWASAN_DYNAMIC_LINK_FLAGS) -@@ -132,7 +132,7 @@ foreach(arch ${HWASAN_SUPPORTED_ARCH}) - LIBS clang_rt.hwasan-${arch} clang_rt.hwasan_cxx-${arch} - EXTRA hwasan.syms.extra) - set(VERSION_SCRIPT_FLAG -- -Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/clang_rt.hwasan-dynamic-${arch}.vers) -+ -Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/clang_rt.hwasan-dynamic-${arch}.vers -fuse-ld=gold) - set_property(SOURCE - ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp - APPEND PROPERTY From 15413dbaf507c18d9d970d53d8378a9839116a4c Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 28 Sep 2021 15:05:01 -0700 Subject: [PATCH 012/118] remove llvm-config build dir patch file --- .../fix-llvm-config-obj-src-root.patch | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 debian/patches/fix-llvm-config-obj-src-root.patch diff --git a/debian/patches/fix-llvm-config-obj-src-root.patch b/debian/patches/fix-llvm-config-obj-src-root.patch deleted file mode 100644 index 2981e9b7..00000000 --- a/debian/patches/fix-llvm-config-obj-src-root.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- - tools/llvm-config/llvm-config.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: llvm-toolchain-snapshot_11~++20200326111000+4673699a470/llvm/tools/llvm-config/llvm-config.cpp -=================================================================== ---- llvm-toolchain-snapshot_11~++20200326111000+4673699a470.orig/llvm/tools/llvm-config/llvm-config.cpp -+++ llvm-toolchain-snapshot_11~++20200326111000+4673699a470/llvm/tools/llvm-config/llvm-config.cpp -@@ -561,9 +561,9 @@ int main(int argc, char **argv) { - } else if (Arg == "--shared-mode") { - PrintSharedMode = true; - } else if (Arg == "--obj-root") { -- OS << ActivePrefix << '\n'; -+ OS << ActivePrefix << "/build/" << '\n'; - } else if (Arg == "--src-root") { -- OS << LLVM_SRC_ROOT << '\n'; -+ OS << ActivePrefix << "/build/" << '\n'; - } else if (Arg == "--ignore-libllvm") { - LinkDyLib = false; - LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto; From 22dabd066230e0a05c324e61c8191781253c9d1a Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 28 Sep 2021 22:57:32 -0700 Subject: [PATCH 013/118] revert patch for runtimes compiler flag checks --- debian/patches/openmp-fix-runtimes-build.diff | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index 902b8b53..cd835b99 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -164,16 +164,3 @@ Index: llvm-toolchain-12_12.0.1/openmp/tools/archer/CMakeLists.txt install(TARGETS archer archer_static LIBRARY DESTINATION ${OPENMP_INSTALL_LIBDIR} ARCHIVE DESTINATION ${OPENMP_INSTALL_LIBDIR}) -Index: llvm-toolchain-12_12.0.1/runtimes/CMakeLists.txt -=================================================================== ---- llvm-toolchain-12_12.0.1.orig/runtimes/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/runtimes/CMakeLists.txt -@@ -97,7 +97,7 @@ include(HandleLLVMOptions) - include(FindPythonInterp) - - # Remove the -nostdlib++ option we've added earlier. --string(REPLACE "-nostdlib++" "" CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") -+#string(REPLACE "-nostdlib++" "" CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") - - # Use libtool instead of ar if you are both on an Apple host, and targeting Apple. - if(CMAKE_HOST_APPLE AND APPLE) From e91f88e9a1230138d288e1fc17f017e7286a0c2b Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 29 Sep 2021 11:30:37 -0700 Subject: [PATCH 014/118] improve libunwind option handling to try and not break builds on platforms that don't support it --- debian/rules | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/debian/rules b/debian/rules index 4768afb3..db23c0ad 100755 --- a/debian/rules +++ b/debian/rules @@ -188,6 +188,7 @@ CFLAGS_EXTRA += -Wno-unused-command-line-argument CXXFLAGS_EXTRA += -Wno-unused-command-line-argument BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) +BOOTSTRAP_LDFLAGS_EXTRA = -rtlib=compiler-rt # Enable polly (or not) POLLY_ENABLE=yes @@ -211,9 +212,11 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sp LIBUNWIND_ENABLE=no else RUNTIMES += ;libunwind - CMAKE_EXTRA += \ - -DLIBUNWIND_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_LLVM_UNWINDER=ON + BOOTSTRAP_LDFLAGS_EXTRA += -l:libunwind.so +# these are also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += \ + -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ + -DOPENMP_USE_LLVM_UNWINDER=ON endif RUN_TEST=yes @@ -467,7 +470,6 @@ override_dh_auto_configure: preconfigure -DLIBUNWIND_INSTALL_LIBRARY=OFF \ -DLIBCXXABI_ENABLE_SHARED=ON \ -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ -DLIBCXXABI_INSTALL_LIBRARY=OFF \ -DLIBCXX_ENABLE_SHARED=ON \ -DLIBCXX_USE_COMPILER_RT=ON \ @@ -477,7 +479,6 @@ override_dh_auto_configure: preconfigure -DLIBCXX_INSTALL_LIBRARY=OFF \ -DOPENMP_ENABLE_LIBOMP_PROFILING=OFF \ -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING=OFF \ - -DOPENMP_USE_LLVM_UNWINDER=ON \ -DLIBOMP_ENABLE_RTTI=OFF \ -DLIBOMP_OMPT_SUPPORT=OFF \ $(STAGE1_CMAKE_EXTRA) \ @@ -490,9 +491,9 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(BOOTSTRAP_CXXFLAGS_EXTRA)" \ -DBOOTSTRAP_CMAKE_C_FLAGS="$(BOOTSTRAP_CFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="-rtlib=compiler-rt -l:libunwind.so" \ - -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="-rtlib=compiler-rt -l:libunwind.so" \ - -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="-rtlib=compiler-rt -l:libunwind.so" \ + -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_LLVM_ENABLE_LLD=ON \ -DBOOTSTRAP_LLVM_ENABLE_LIBCXX=ON \ -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ From 181db69a11d485051e60aaa233330ac809dffda4 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 29 Sep 2021 18:17:47 -0700 Subject: [PATCH 015/118] remove CMAKE_VERBOSE_MAKEFILE and use cmake to invoke the two stage toolchain build and set VERBOSE which enables verbose build output for all stages and runtime builds --- debian/rules | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/debian/rules b/debian/rules index db23c0ad..3b93030a 100755 --- a/debian/rules +++ b/debian/rules @@ -446,7 +446,6 @@ override_dh_auto_configure: preconfigure -G $(GENERATOR) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_SUPPRESS_REGENERATION=ON \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=Release \ -DENABLE_LINKER_BUILD_ID=ON \ -DLLVM_TARGETS_TO_BUILD=Native \ @@ -521,7 +520,7 @@ override_dh_auto_configure: preconfigure $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_EXE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;CMAKE_VERBOSE_MAKEFILE;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ @@ -537,9 +536,10 @@ VERBOSE=VERBOSE=1 endif debian-full-build: + echo "Using cmake: $(CMAKE_BIN)" # linker hack so stage2 can link against stage1 libs at runtime LD_LIBRARY_PATH=$(STAGE1_LIB_DIR):$$LD_LIBRARY_PATH \ - $(PRE_PROCESS) ninja $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) stage2 + VERBOSE=1 $(PRE_PROCESS) $(CMAKE_BIN) --build $(TARGET_BUILD) $(NJOBS) --target stage2 # Check the stage 2 build worked if ! readelf --string-dump .comment $(TARGET_BUILD_STAGE2)/bin/clang 2>&1|grep -q "clang version"; then \ @@ -550,8 +550,6 @@ 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: From af642aaee0d679959978b59d50edc141d639f775 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Thu, 30 Sep 2021 22:40:52 -0700 Subject: [PATCH 016/118] Revert "revert erroneous package dir name change" This reverts commit 519ee630cdad09ab61813a5a9f57d30f6cac66b9. --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 3b93030a..f2061ca0 100755 --- a/debian/rules +++ b/debian/rules @@ -768,7 +768,7 @@ endif if test "$(POLLY_ENABLE)" = yes; then \ mkdir -p $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly/; \ mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libPolly* \ - $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ + $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ rm -rf $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly; \ mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/polly/ \ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/; \ From 23f635bcd5eee57d6ca4bf38bdd95520e196e6d0 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Thu, 30 Sep 2021 23:09:32 -0700 Subject: [PATCH 017/118] remove legacy make to match upstream (I probably selected wrong change in rebase conflict) --- debian/rules | 5 ----- 1 file changed, 5 deletions(-) diff --git a/debian/rules b/debian/rules index f2061ca0..08f673ec 100755 --- a/debian/rules +++ b/debian/rules @@ -527,13 +527,8 @@ override_dh_auto_configure: preconfigure exit 1; \ fi -ifeq (Ninja, $(GENERATOR)) # ninja VERBOSE=-v -else -# make -VERBOSE=VERBOSE=1 -endif debian-full-build: echo "Using cmake: $(CMAKE_BIN)" From 737758054349f65635339d37e5348efb6b048191 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Thu, 30 Sep 2021 23:10:48 -0700 Subject: [PATCH 018/118] remove unecessary cleanup to match upstream (I probably selected wrong change in rebase conflict) --- debian/rules | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/rules b/debian/rules index 08f673ec..e475bc9f 100755 --- a/debian/rules +++ b/debian/rules @@ -959,7 +959,6 @@ override_dh_gencontrol: override_dh_auto_clean: rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h docs/_build/ clang/docs/_build tools/clang/docs/_html/ - rm -rf clang/include/clang/Debian # QA tools rm -rf cov-int/ reports/ rm -f `ls debian/*.in|sed -e "s|.in$$||g"` From 11a0af38981c05f96d452c816164be65068e5f31 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 1 Oct 2021 14:02:11 -0700 Subject: [PATCH 019/118] fix new openmp patch overwritting previous openmp-soname patch remove `debian/rules` libomp file `mv` on install due to patch fix --- debian/patches/openmp-fix-runtimes-build.diff | 10 ---------- debian/rules | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index cd835b99..649c9906 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -127,16 +127,6 @@ Index: llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt # Shared library can be switched to a static library set(LIBOMP_ENABLE_SHARED TRUE CACHE BOOL "Shared library instead of static library?") -@@ -358,8 +362,7 @@ else() - set(LIBOMP_INSTALL_KIND ARCHIVE) - endif() - --set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBOMP_VERSION_MAJOR}) -- -+set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${LIBOMP_LIBRARY_SUFFIX}) - - # Optional backwards compatibility aliases. - set(LIBOMP_INSTALL_ALIASES TRUE CACHE BOOL Index: llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/openmp/runtime/src/CMakeLists.txt diff --git a/debian/rules b/debian/rules index e475bc9f..4b3ad182 100755 --- a/debian/rules +++ b/debian/rules @@ -667,7 +667,7 @@ override_dh_auto_install: : # libomp if test "$(OPENMP_ENABLE)" = yes; then \ - cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && mv libomp.so libomp.so.$(SONAME_OPENMP); \ + cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib; \ ln -s libomp.so.$(SONAME_OPENMP) libomp.so; \ cp libomp.so.$(SONAME_OPENMP) libomp-$(LLVM_VERSION).so.$(SONAME_OPENMP); \ fi From 122c960c4d1dcb7f7ac1bd970e5516464b5c7c5b Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sat, 2 Oct 2021 12:42:35 -0700 Subject: [PATCH 020/118] patch for additional c++ lib supression when building libomp as c library --- debian/patches/openmp-fix-runtimes-build.diff | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index 649c9906..45499bbf 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -81,11 +81,6 @@ Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt # Install plugin under the lib destination folder. install(TARGETS "omptarget.rtl.${tmachine_libname}" LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}") -@@ -79,4 +81,3 @@ add_subdirectory(remote) - # Make sure the parent scope can see the plugins that will be created. - set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE) - set(LIBOMPTARGET_TESTED_PLUGINS "${LIBOMPTARGET_TESTED_PLUGINS}" PARENT_SCOPE) -- Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/cuda/CMakeLists.txt @@ -131,7 +126,15 @@ Index: llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/openmp/runtime/src/CMakeLists.txt +++ llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt -@@ -162,6 +162,8 @@ set_target_properties(omp PROPERTIES +@@ -134,6 +134,7 @@ endif() + if(NOT ${LIBOMP_USE_STDCPPLIB}) + set(LIBOMP_LINKER_LANGUAGE C) + set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES) ++ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nostdlib++") + else() + set(LIBOMP_LINKER_LANGUAGE CXX) + endif() +@@ -162,6 +163,8 @@ set_target_properties(omp PROPERTIES LINKER_LANGUAGE ${LIBOMP_LINKER_LANGUAGE} ) From fe702823c8af5e194a153cda9dd0716210b30d47 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 3 Oct 2021 13:00:13 -0700 Subject: [PATCH 021/118] use `PACKAGE_VENDOR` instead of `CLANG_VENDOR` --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 4b3ad182..881f4f83 100755 --- a/debian/rules +++ b/debian/rules @@ -447,6 +447,7 @@ override_dh_auto_configure: preconfigure -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_BUILD_TYPE=Release \ + -DPACKAGE_VENDOR=$(VENDOR) \ -DENABLE_LINKER_BUILD_ID=ON \ -DLLVM_TARGETS_TO_BUILD=Native \ -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ @@ -511,7 +512,6 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_CLANG_DEFAULT_RTLIB=compiler-rt \ -DBOOTSTRAP_CLANG_DEFAULT_OBJCOPY=llvm-objcopy \ -DBOOTSTRAP_CLANG_DEFAULT_OPENMP_RUNTIME=libomp \ - -DBOOTSTRAP_CLANG_VENDOR=$(VENDOR) \ -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_SANITIZER_CXX_ABI=libc++ \ -DBOOTSTRAP_LIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ From 145d0de851e1721c6353f6b8f7da92bebda8227e Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 3 Oct 2021 13:06:40 -0700 Subject: [PATCH 022/118] remove patch for lld force linking libatomic --- debian/patches/lld-use-link-atomic-i386.diff | 32 -------------------- debian/patches/series | 1 - 2 files changed, 33 deletions(-) delete mode 100644 debian/patches/lld-use-link-atomic-i386.diff diff --git a/debian/patches/lld-use-link-atomic-i386.diff b/debian/patches/lld-use-link-atomic-i386.diff deleted file mode 100644 index 02cca874..00000000 --- a/debian/patches/lld-use-link-atomic-i386.diff +++ /dev/null @@ -1,32 +0,0 @@ -Index: llvm-toolchain-snapshot_12~++20201021061106+4b7dafd9046/lld/tools/lld/CMakeLists.txt -=================================================================== ---- llvm-toolchain-snapshot_12~++20201021061106+4b7dafd9046.orig/lld/tools/lld/CMakeLists.txt -+++ llvm-toolchain-snapshot_12~++20201021061106+4b7dafd9046/lld/tools/lld/CMakeLists.txt -@@ -1,10 +1,18 @@ -+set(LLD_ATOMIC_LIB "") -+ - set(LLVM_LINK_COMPONENTS - Support - ) - -+if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386" OR -+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686" OR -+ CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" -+ ) -+ list(APPEND LLD_ATOMIC_LIB "atomic") -+endif() -+ - add_lld_tool(lld - lld.cpp -- - SUPPORT_PLUGINS - ) - export_executable_symbols_for_plugins(lld) -@@ -18,6 +26,7 @@ target_link_libraries(lld - lldMachO2 - lldMinGW - lldWasm -+ ${LLD_ATOMIC_LIB} - ) - - install(TARGETS lld diff --git a/debian/patches/series b/debian/patches/series index dbd27e77..62f77466 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -134,7 +134,6 @@ x86-fuzzer.patch python3-shebang.patch print-lldb-path.patch libcxx-armhf-ftbfs.diff -lld-use-link-atomic-i386.diff #bring-reporter-back.patch D99501-ignore-lto-auto.diff scan-build-py-fix-analyze-path.diff From a7dd11a3c388a8214791261f2aa29b129b5e0557 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 3 Oct 2021 13:59:54 -0700 Subject: [PATCH 023/118] add stage2 lib dir as explicit lib path in libclc linker flags --- debian/rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/rules b/debian/rules index 881f4f83..520e1071 100755 --- a/debian/rules +++ b/debian/rules @@ -576,6 +576,9 @@ debian-libclc-build: -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ + -DCMAKE_SHARED_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ + -DCMAKE_MODULE_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ + -DCMAKE_EXE_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ -DLLVM_CONFIG=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ ninja $(NJOBS) $(VERBOSE) From e77266aac83b25a1956d8debba43ce3e9de2f74c Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 5 Oct 2021 11:00:38 -0700 Subject: [PATCH 024/118] fix build config option causing assertions to be enabled by default --- debian/rules | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index 520e1071..0784d1d8 100755 --- a/debian/rules +++ b/debian/rules @@ -245,7 +245,8 @@ ifneq (,$(filter scan-build,$(DEB_BUILD_OPTIONS))) # no need to run tests in this case RUN_TEST=no CONFIGURE_EXTRA += --enable-assertions - CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON +# will also be applied to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON endif ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) @@ -258,7 +259,8 @@ ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) PRE_PROCESS_CONF= COVERITY_ENABLE=1 CONFIGURE_EXTRA += --enable-assertions - CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON +# will also be applied to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON # no need to run tests in this case RUN_TEST=no else @@ -452,7 +454,6 @@ override_dh_auto_configure: preconfigure -DLLVM_TARGETS_TO_BUILD=Native \ -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ -DLLVM_ENABLE_RUNTIMES="$(RUNTIMES_LIST)" \ - -DLLVM_ENABLE_ASSERTIONS=ON \ -DLLVM_ENABLE_PIC=ON \ -DLLVM_ENABLE_RTTI=ON \ -DLVVM_ENABLE_ZLIB=OFF \ From f5573c878aede9b64e94e6e4e8f9981ce1337592 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 5 Oct 2021 21:55:50 -0700 Subject: [PATCH 025/118] move LLVM_BINUTILS_INCDIR to STAGE1_CMAKE_EXTRA and CLANG_BOOTSTRAP_PASSTHROUGH so that LLVMgold.so is built --- debian/rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/rules b/debian/rules index 0784d1d8..1b6533fb 100755 --- a/debian/rules +++ b/debian/rules @@ -166,7 +166,7 @@ BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el x32 s390x hurd-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))) STAGE1_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold - CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ + STAGE1_CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ endif endif @@ -521,7 +521,7 @@ override_dh_auto_configure: preconfigure $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_EXE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ From cb07c38792abcefb4fa25b7de662087b4ff6ca2c Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 3 Oct 2021 18:47:18 -0700 Subject: [PATCH 026/118] minor rules cleanup add vars for stage1 and stage2 bin dirs remove duplicate cmake bin detection in the libclc build remove unused LIBCXX_CMAKE_EXTRA var --- debian/rules | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/debian/rules b/debian/rules index 1b6533fb..4059a1c9 100755 --- a/debian/rules +++ b/debian/rules @@ -42,16 +42,17 @@ CXXFLAGS_EXTRA = CFLAGS_EXTRA = CONFIGURE_EXTRA = CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 -CMAKE_LIBCXX_EXTRA = STAGE1_CMAKE_EXTRA = # prepend bootstrap prefix to CMAKE_EXTRA vars BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) -BASE_PATH := $(CURDIR) +BASE_PATH := $(CURDIR) +STAGE1_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD)/bin STAGE1_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD)/lib +STAGE2_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin STAGE2_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/lib -LIBCXX_EXCEPTIONS :=ON +LIBCXX_EXCEPTIONS := ON ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) LIBCXX_EXCEPTIONS :=OFF endif @@ -114,8 +115,6 @@ 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 STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF - # Check for ancient libstdc++ fails due to atomics usage - CMAKE_LIBCXX_EXTRA += -DLLVM_COMPILER_CHECKED=ON # Prevent clang from getting a > v4t default # See bug #868779 STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi @@ -155,13 +154,6 @@ ifeq ($(LLVM_SPIRV_INSTALLED),yes) LIBCLC_TARGETS_TO_BUILD := $(LIBCLC_TARGETS_TO_BUILD)";spirv-mesa3d-;spirv64-mesa3d-" endif -# Disabled: -# Host compiler does not support '-fuse-ld=lld' -# USE_LLD_ARCHS := amd64 -# ifneq (,$(filter $(DEB_HOST_ARCH),$(USE_LLD_ARCHS))) -# CMAKE_EXTRA += -DLLVM_ENABLE_LLD=ON -# endif - 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))) @@ -335,6 +327,9 @@ endif GENERATOR=Ninja +# 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-sanitizer;llvm-config;test-suite + %: dh $@ $(DH_OPTIONS) @@ -342,9 +337,6 @@ GENERATOR=Ninja PROJECTS_LIST := $(shell echo "$(PROJECTS)"|sed -e "s| ||g") RUNTIMES_LIST := $(shell echo "$(RUNTIMES)"|sed -e "s| ||g") -# 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-sanitizer;llvm-config;test-suite - preconfigure: if ! grep -qs '/proc ' /proc/mounts; then \ @@ -554,33 +546,27 @@ ifeq (${LIBFUZZER_ENABLE},yes) CFLAGS=`dpkg-buildflags --get CFLAGS`; \ CFLAGS="$$CFLAGS `dpkg-buildflags --get CPPFLAGS`"; \ echo $$CFLAGS; \ - $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ + $(STAGE2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ ar ruv libFuzzer.a Fuzzer*.o endif touch $@ debian-libclc-build: # Builds libclc - mkdir -p libclc/build - - CMAKE_BIN=cmake; \ - if test -f /tmp/cmake/bin/cmake; then \ - CMAKE_BIN=/tmp/cmake/bin/cmake; \ - fi; \ - echo "Using cmake: $$CMAKE_BIN"; \ + echo "Using cmake: $(CMAKE_BIN)" cd libclc/build && \ - $$CMAKE_BIN ../ \ + $(CMAKE_BIN) ../ \ -G $(GENERATOR) \ - -DCMAKE_C_COMPILER=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang \ - -DCMAKE_CXX_COMPILER=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/clang++ \ + -DCMAKE_C_COMPILER=$(STAGE2_BIN_DIR)/clang \ + -DCMAKE_CXX_COMPILER=$(STAGE2_BIN_DIR)/clang++ \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ -DCMAKE_SHARED_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ -DCMAKE_MODULE_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ -DCMAKE_EXE_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ - -DLLVM_CONFIG=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ + -DLLVM_CONFIG=$(STAGE2_BIN_DIR)/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ ninja $(NJOBS) $(VERBOSE) touch $@ From adb37dff06fd0637f6b71d7dd48803a36bc50362 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 5 Oct 2021 13:51:20 -0700 Subject: [PATCH 027/118] fix up compiler flags now that clang defaults to llvm runtimes in the quialify-clang.sh script --- debian/qualify-clang.sh | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 7c9861a6..6712534d 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -375,10 +375,11 @@ int main() { return 0; } ' > bar.cc +# llvm runtimes are now default, gnu runtimes must now be specified to be used g++ -c foo.cc && g++ foo.o bar.cc && ./a.out > /dev/null || true -clang++-$VERSION -c foo.cc && clang++-$VERSION foo.o bar.cc && ./a.out > /dev/null -g++ -c foo.cc && clang++-$VERSION foo.o bar.cc && ./a.out > /dev/null || true -clang++-$VERSION -c foo.cc -fPIC && g++ foo.o bar.cc && ./a.out > /dev/null || true +clang++-$VERSION -stdlib=libstdc++ -c foo.cc && clang++-$VERSION -stdlib=libstdc++ -rtlib=libgcc foo.o bar.cc && ./a.out > /dev/null +g++ -c foo.cc && clang++-$VERSION -stdlib=libstdc++ -rtlib=libgcc foo.o bar.cc && ./a.out > /dev/null || true +clang++-$VERSION -stdlib=libstdc++ -c foo.cc -fPIC && g++ foo.o bar.cc && ./a.out > /dev/null || true ## test z3 echo ' @@ -525,7 +526,7 @@ fi clang-$VERSION -fuse-ld=lld -O2 foo.c main.c -o foo ./foo > /dev/null -if ls -al1 /usr/bin/ld.lld|grep ld.lld-$VERSION; then +if ls -al1 /usr/bin/ld.lld-*|grep ld.lld-$VERSION; then # https://bugs.llvm.org/show_bug.cgi?id=40659 # -fuse-ld=lld will call lld # Mismatch of version can fail the check @@ -729,7 +730,7 @@ int main() { return x[5]; } ' > foo.c -clang-$VERSION -o foo -fsanitize=address -O1 -fno-omit-frame-pointer -g foo.c +clang-$VERSION -o foo -fsanitize=address -O1 -fno-omit-frame-pointer -g -lunwind foo.c if ! ./foo 2>&1 | grep -q heap-use-after-free ; then echo "sanitize=address is failing" exit 42 @@ -745,7 +746,7 @@ int main(int argc, char **argv) }' > foo.c # segfaults on 32bit with "-lc" library (also 6.0 does segfault) -clang-$VERSION -fsanitize=address foo.c -o foo -lc +clang-$VERSION -fsanitize=address foo.c -o foo -lc -lunwind ./foo &> /dev/null || true echo ' @@ -774,7 +775,7 @@ int main() { # fails on i386 with: clang: error: unsupported option '-fsanitize=thread' for target 'i686-pc-linux-gnu' if [ $DEB_HOST_ARCH != "i386" ]; then - clang-$VERSION -o foo -fsanitize=thread -g -O1 foo.c + clang-$VERSION -o foo -fsanitize=thread -g -O1 -lunwind foo.c if ! strings ./foo 2>&1 | grep -q "tsan"; then echo "binary doesn't contain tsan code" strings foo @@ -951,13 +952,13 @@ int main() { std::cout << "Hello World!" << std::endl; } EOF -clang++-$VERSION -stdlib=libc++ -unwindlib=libunwind -rtlib=compiler-rt -static-libstdc++ -static-libgcc test.cpp -lpthread -ldl -o test +clang++-$VERSION -stdlib=libc++ -unwindlib=libunwind -rtlib=compiler-rt -static-libstdc++ -static-libgcc test.cpp -lpthread -ldl -o test ./test > /dev/null -clang++-$VERSION -stdlib=libc++ -static-libstdc++ -fuse-ld=lld -l:libc++abi.a test.cpp -o test +clang++-$VERSION -stdlib=libc++ -static-libstdc++ -fuse-ld=lld -l:libc++abi.a -l:libunwind.a test.cpp -o test ./test > /dev/null -clang++-$VERSION -stdlib=libc++ -nostdlib++ test.cpp -l:libc++.a -l:libc++abi.a -pthread -o test +clang++-$VERSION -stdlib=libc++ -nostdlib++ test.cpp -l:libc++.a -l:libc++abi.a -l:libunwind.a -pthread -o test ./test > /dev/null # Bug 889832 @@ -978,7 +979,7 @@ if ! ldd o 2>&1|grep -q libc++abi.so.1; then fi # Use the libc++abi and uses the libstc++ headers -clang++-$VERSION -lc++abi foo.cpp -o o +clang++-$VERSION -stdlib=libstdc++ -lc++abi -lunwind foo.cpp -o o ./o > /dev/null if ! ldd o 2>&1|grep -q libstdc++.so.; then echo "not linked against libstdc++" @@ -1480,7 +1481,7 @@ for SYSTEM in ""; do XARGS="$SYSTEM $MARCH $LIB" printf "\nTest: clang %s\n" "$XARGS" rm -f "$TEMPDIR/test" - "$CLANG" $XARGS -o "$TEMPDIR/test" "$@" "$TEMPDIR/test.c" || true + "$CLANG" $XARGS -lunwind -o "$TEMPDIR/test" "$@" "$TEMPDIR/test.c" || true [ ! -e "$TEMPDIR/test" ] || { "$TEMPDIR/test" || printf 'Error\n'; } done done From ee7a2defc129e48fc504164f7c506d861f0651b1 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 6 Oct 2021 11:58:10 -0700 Subject: [PATCH 028/118] comment out esan test in qualify-clang.sh as it seems esan was removed from llvm/clang: https://github.com/llvm/llvm-project/commit/885b790f89b6068ec4caad8eaa51aa8098327059 --- debian/qualify-clang.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 6712534d..c02203e3 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -1413,8 +1413,9 @@ echo "Testing all other sanitizers ..." echo "int main() { return 1; }" > foo.c # fails to run on i386 with the following error: #clang: error: unsupported option '-fsanitize=efficiency-working-set' for target 'i686-pc-linux-gnu' -clang-$VERSION -fsanitize=efficiency-working-set -o foo foo.c || true -./foo &> /dev/null || true +# seems like esan was removed from clang: https://github.com/llvm/llvm-project/commit/885b790f89b6068ec4caad8eaa51aa8098327059 +#clang-$VERSION -fsanitize=efficiency-working-set -o foo foo.c || true +#./foo &> /dev/null || true cat > "$TEMPDIR/test.c" < From 42dc2f27527009a23abb80ebfd78d376c24baf13 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 6 Oct 2021 13:08:44 -0700 Subject: [PATCH 029/118] add some quilt patch comments --- debian/patches/compilerrt-fix-warn-xray-testing.diff | 1 + debian/patches/libclc-fix-prepare_builtins-rpath.diff | 2 ++ debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff | 1 + debian/patches/llvm-fix-lld-linker-check.diff | 2 ++ debian/patches/openmp-fix-runtimes-build.diff | 3 +++ 5 files changed, 9 insertions(+) diff --git a/debian/patches/compilerrt-fix-warn-xray-testing.diff b/debian/patches/compilerrt-fix-warn-xray-testing.diff index 645e7f88..38babc96 100644 --- a/debian/patches/compilerrt-fix-warn-xray-testing.diff +++ b/debian/patches/compilerrt-fix-warn-xray-testing.diff @@ -1,3 +1,4 @@ +suppress warnings for xray and testing when not enabled Index: llvm-toolchain-12_12.0.1/compiler-rt/cmake/Modules/CompilerRTUtils.cmake =================================================================== --- llvm-toolchain-12_12.0.1.orig/compiler-rt/cmake/Modules/CompilerRTUtils.cmake diff --git a/debian/patches/libclc-fix-prepare_builtins-rpath.diff b/debian/patches/libclc-fix-prepare_builtins-rpath.diff index ac88169a..c1f87571 100644 --- a/debian/patches/libclc-fix-prepare_builtins-rpath.diff +++ b/debian/patches/libclc-fix-prepare_builtins-rpath.diff @@ -1,3 +1,5 @@ +set rpath for prepare_builtins build utility to find correct stage2 +libs at runtime when executed as part of a build Index: llvm-toolchain-12_12.0.1/libclc/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/libclc/CMakeLists.txt diff --git a/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff b/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff index f91624df..41662966 100644 --- a/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff +++ b/debian/patches/libcxx-libatomic-only-with-gcc-rtlib.diff @@ -1,3 +1,4 @@ +if libatomic is found only link it if libgcc is the rtlib Index: llvm-toolchain-12_12.0.1/libcxx/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/libcxx/CMakeLists.txt diff --git a/debian/patches/llvm-fix-lld-linker-check.diff b/debian/patches/llvm-fix-lld-linker-check.diff index ee006e1d..bad28992 100644 --- a/debian/patches/llvm-fix-lld-linker-check.diff +++ b/debian/patches/llvm-fix-lld-linker-check.diff @@ -1,3 +1,5 @@ +remove regex anchor in lld linker detection to account for vendor, if +specified, being prepended to lld version string Index: llvm-toolchain-12_12.0.1/llvm/cmake/modules/AddLLVM.cmake =================================================================== --- llvm-toolchain-12_12.0.1.orig/llvm/cmake/modules/AddLLVM.cmake diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index 45499bbf..b8d20cd0 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -1,3 +1,6 @@ +include required runtimes as dependencies to openmp targets to make sure +they are built first when included as part of a runtimes build since openmp +can depend on them Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt From c7fefea365435ce91c812b3972e7852f7f97ed1a Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 6 Oct 2021 13:32:36 -0700 Subject: [PATCH 030/118] update changelog --- debian/changelog | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/debian/changelog b/debian/changelog index cc44a20d..139cb0a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,28 @@ +llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium + + * evolve build configuration in rules file to leverage a two stage build with + runtimes support whereby the resulting stage2 (final) compiler is used to + build the stage2 (final) runtimes and all stage2 artifacts are free of gnu + compiler and c++ runtimes dependencies + * stage2 runtimes (built as part of the main stage2 build) now include + compiler-rt, libcxx and libcxxabi as well as libunwind and openmp where + supported. Additionally, legacy corresponding standalone build targets are + removed from the rules file + * patch openmp build to include required runtimes as dependencies to build + targets so they are built first when included as part of a runtimes build + since openmp can depend on them + * patch libclc build to set rpath for prepare_builtins build utility to find + correct stage2 libs at runtime when executed as part of a build + * patch libcxx build so that if libatomic is found, only link it if libgcc is + the rtlib + * patch compiler-rt build to suppress xray and testing warns when not enabled + * patch llvm linker detection to account for vendor being prepended to lld + version string + * remove several existing patches incorporating workarounds no longer required + by the modified build configuration + + -- Erik Maciejewski Wed, 06 Oct 2021 01:25:08 -0700 + llvm-toolchain-12 (1:12.0.1-10) UNRELEASED; urgency=medium * If parallel is not set in DEB_BUILD_OPTIONS, use nproc From 9acb6c59eff91d66a1e3159342011c534d5de0c4 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 6 Oct 2021 15:22:44 -0700 Subject: [PATCH 031/118] Revert "fix up compiler flags now that clang defaults to llvm runtimes in" --- debian/qualify-clang.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index c02203e3..e6d2734a 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -375,11 +375,10 @@ int main() { return 0; } ' > bar.cc -# llvm runtimes are now default, gnu runtimes must now be specified to be used g++ -c foo.cc && g++ foo.o bar.cc && ./a.out > /dev/null || true -clang++-$VERSION -stdlib=libstdc++ -c foo.cc && clang++-$VERSION -stdlib=libstdc++ -rtlib=libgcc foo.o bar.cc && ./a.out > /dev/null -g++ -c foo.cc && clang++-$VERSION -stdlib=libstdc++ -rtlib=libgcc foo.o bar.cc && ./a.out > /dev/null || true -clang++-$VERSION -stdlib=libstdc++ -c foo.cc -fPIC && g++ foo.o bar.cc && ./a.out > /dev/null || true +clang++-$VERSION -c foo.cc && clang++-$VERSION foo.o bar.cc && ./a.out > /dev/null +g++ -c foo.cc && clang++-$VERSION foo.o bar.cc && ./a.out > /dev/null || true +clang++-$VERSION -c foo.cc -fPIC && g++ foo.o bar.cc && ./a.out > /dev/null || true ## test z3 echo ' @@ -526,7 +525,7 @@ fi clang-$VERSION -fuse-ld=lld -O2 foo.c main.c -o foo ./foo > /dev/null -if ls -al1 /usr/bin/ld.lld-*|grep ld.lld-$VERSION; then +if ls -al1 /usr/bin/ld.lld|grep ld.lld-$VERSION; then # https://bugs.llvm.org/show_bug.cgi?id=40659 # -fuse-ld=lld will call lld # Mismatch of version can fail the check @@ -730,7 +729,7 @@ int main() { return x[5]; } ' > foo.c -clang-$VERSION -o foo -fsanitize=address -O1 -fno-omit-frame-pointer -g -lunwind foo.c +clang-$VERSION -o foo -fsanitize=address -O1 -fno-omit-frame-pointer -g foo.c if ! ./foo 2>&1 | grep -q heap-use-after-free ; then echo "sanitize=address is failing" exit 42 @@ -746,7 +745,7 @@ int main(int argc, char **argv) }' > foo.c # segfaults on 32bit with "-lc" library (also 6.0 does segfault) -clang-$VERSION -fsanitize=address foo.c -o foo -lc -lunwind +clang-$VERSION -fsanitize=address foo.c -o foo -lc ./foo &> /dev/null || true echo ' @@ -775,7 +774,7 @@ int main() { # fails on i386 with: clang: error: unsupported option '-fsanitize=thread' for target 'i686-pc-linux-gnu' if [ $DEB_HOST_ARCH != "i386" ]; then - clang-$VERSION -o foo -fsanitize=thread -g -O1 -lunwind foo.c + clang-$VERSION -o foo -fsanitize=thread -g -O1 foo.c if ! strings ./foo 2>&1 | grep -q "tsan"; then echo "binary doesn't contain tsan code" strings foo @@ -952,13 +951,13 @@ int main() { std::cout << "Hello World!" << std::endl; } EOF -clang++-$VERSION -stdlib=libc++ -unwindlib=libunwind -rtlib=compiler-rt -static-libstdc++ -static-libgcc test.cpp -lpthread -ldl -o test +clang++-$VERSION -stdlib=libc++ -unwindlib=libunwind -rtlib=compiler-rt -static-libstdc++ -static-libgcc test.cpp -lpthread -ldl -o test ./test > /dev/null -clang++-$VERSION -stdlib=libc++ -static-libstdc++ -fuse-ld=lld -l:libc++abi.a -l:libunwind.a test.cpp -o test +clang++-$VERSION -stdlib=libc++ -static-libstdc++ -fuse-ld=lld -l:libc++abi.a test.cpp -o test ./test > /dev/null -clang++-$VERSION -stdlib=libc++ -nostdlib++ test.cpp -l:libc++.a -l:libc++abi.a -l:libunwind.a -pthread -o test +clang++-$VERSION -stdlib=libc++ -nostdlib++ test.cpp -l:libc++.a -l:libc++abi.a -pthread -o test ./test > /dev/null # Bug 889832 @@ -979,7 +978,7 @@ if ! ldd o 2>&1|grep -q libc++abi.so.1; then fi # Use the libc++abi and uses the libstc++ headers -clang++-$VERSION -stdlib=libstdc++ -lc++abi -lunwind foo.cpp -o o +clang++-$VERSION -lc++abi foo.cpp -o o ./o > /dev/null if ! ldd o 2>&1|grep -q libstdc++.so.; then echo "not linked against libstdc++" @@ -1482,7 +1481,7 @@ for SYSTEM in ""; do XARGS="$SYSTEM $MARCH $LIB" printf "\nTest: clang %s\n" "$XARGS" rm -f "$TEMPDIR/test" - "$CLANG" $XARGS -lunwind -o "$TEMPDIR/test" "$@" "$TEMPDIR/test.c" || true + "$CLANG" $XARGS -o "$TEMPDIR/test" "$@" "$TEMPDIR/test.c" || true [ ! -e "$TEMPDIR/test" ] || { "$TEMPDIR/test" || printf 'Error\n'; } done done From 3ee7840e5b31b9c1883754541d3480a135eb6068 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 11 Oct 2021 12:02:39 -0700 Subject: [PATCH 032/118] reconfigure toolchain to use gnu runtimes by default this requires one small modification to the qualify-clang.sh script for the last libPolly test since the toolchain itself is using libc++ --- debian/qualify-clang.sh | 2 +- debian/rules | 63 ++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index e6d2734a..91370546 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -1271,7 +1271,7 @@ int main() { EmitBackendOutput(*diags, *hsOpts, *cgOpts, *tOpts, *lOpts, *tDesc, m, *action, std::move(AsmOutStream)); } EOF -clang++-$VERSION foo.cpp -o test -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangCodeGen -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangFrontend -lclangDriver -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -lclangBasic -ldl /usr/lib/llvm-$VERSION/lib/libLLVM-$VERSION.so -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -ldl -I /usr/lib/llvm-$VERSION/include/ -L/usr/lib/llvm-$VERSION/lib/ -lPolly -lPollyPPCG -lPollyISL +clang++-$VERSION foo.cpp -o test -stdlib=libc++ -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangCodeGen -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangFrontend -lclangDriver -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -lclangBasic -ldl /usr/lib/llvm-$VERSION/lib/libLLVM-$VERSION.so -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -ldl -I /usr/lib/llvm-$VERSION/include/ -L/usr/lib/llvm-$VERSION/lib/ -lPolly -lPollyPPCG -lPollyISL if test ! -f /usr/bin/lldb-$VERSION; then echo "Install lldb-$VERSION"; diff --git a/debian/rules b/debian/rules index 4059a1c9..bf9bbe2e 100755 --- a/debian/rules +++ b/debian/rules @@ -58,11 +58,8 @@ ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) endif ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) -CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm -latomic" -DCMAKE_SHARED_LINKER_FLAGS="-latomic" -STAGE1_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm -latomic" -DCMAKE_SHARED_LINKER_FLAGS="-latomic" -else -CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" -STAGE1_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" +CMAKE_EXTRA += -DCMAKE_SHARED_LINKER_FLAGS="-latomic" +STAGE1_CMAKE_EXTRA += -DCMAKE_SHARED_LINKER_FLAGS="-latomic" endif ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) @@ -175,12 +172,12 @@ ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) endif # Enable for bootstrap -LDFLAGS_EXTRA += -Wno-unused-command-line-argument -Wl,--build-id CFLAGS_EXTRA += -Wno-unused-command-line-argument CXXFLAGS_EXTRA += -Wno-unused-command-line-argument +LDFLAGS_EXTRA += -Wno-unused-command-line-argument -Wl,--build-id BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -BOOTSTRAP_LDFLAGS_EXTRA = -rtlib=compiler-rt +BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -stdlib=libc++ +BOOTSTRAP_LDFLAGS_EXTRA = -fuse-ld=lld -rtlib=compiler-rt -stdlib=libc++ # Enable polly (or not) POLLY_ENABLE=yes @@ -190,25 +187,29 @@ else PROJECTS+=;polly endif -# Enable openmp (or not) -OPENMP_ENABLE=yes -ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x x32)) - OPENMP_ENABLE=no -else - RUNTIMES+=;openmp -endif - # Enable libunwind (or not) LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sparc64 x32)) LIBUNWIND_ENABLE=no else RUNTIMES += ;libunwind - BOOTSTRAP_LDFLAGS_EXTRA += -l:libunwind.so -# these are also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += \ - -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DOPENMP_USE_LLVM_UNWINDER=ON + BOOTSTRAP_LDFLAGS_EXTRA += -unwindlib=libunwind +# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON +endif + +# Enable openmp (or not) +OPENMP_ENABLE=yes +ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x x32)) + OPENMP_ENABLE=no +else + RUNTIMES+=;openmp +# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" +ifeq ($(LIBUNWIND_ENABLE),yes) +# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DOPENMP_USE_LLVM_UNWINDER=ON +endif endif RUN_TEST=yes @@ -452,7 +453,6 @@ override_dh_auto_configure: preconfigure -DLLVM_BUILD_DOCS=OFF \ -DLLVM_INCLUDE_GO_TESTS=OFF \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - -DCLANG_DEFAULT_LINKER=lld \ -DCLANG_PLUGIN_SUPPORT=OFF \ -DCLANG_BUILD_EXAMPLES=OFF \ -DCOMPILER_RT_BUILD_XRAY=OFF \ @@ -487,7 +487,6 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_LLVM_ENABLE_LLD=ON \ -DBOOTSTRAP_LLVM_ENABLE_LIBCXX=ON \ -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ @@ -501,10 +500,9 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB=ON \ -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ - -DBOOTSTRAP_CLANG_DEFAULT_CXX_STDLIB=libc++ \ - -DBOOTSTRAP_CLANG_DEFAULT_RTLIB=compiler-rt \ - -DBOOTSTRAP_CLANG_DEFAULT_OBJCOPY=llvm-objcopy \ - -DBOOTSTRAP_CLANG_DEFAULT_OPENMP_RUNTIME=libomp \ + -DBOOTSTRAP_CLANG_DEFAULT_LINKER=ld \ + -DBOOTSTRAP_CLANG_DEFAULT_CXX_STDLIB=libstdc++ \ + -DBOOTSTRAP_CLANG_DEFAULT_RTLIB=libgcc \ -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_SANITIZER_CXX_ABI=libc++ \ -DBOOTSTRAP_LIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ @@ -512,8 +510,8 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_EXE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=-L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(BOOTSTRAP_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ @@ -560,12 +558,13 @@ debian-libclc-build: -G $(GENERATOR) \ -DCMAKE_C_COMPILER=$(STAGE2_BIN_DIR)/clang \ -DCMAKE_CXX_COMPILER=$(STAGE2_BIN_DIR)/clang++ \ + -DCMAKE_CXX_FLAGS="$(BOOTSTRAP_CXXFLAGS_EXTRA)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ - -DCMAKE_SHARED_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ - -DCMAKE_MODULE_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ - -DCMAKE_EXE_LINKER_FLAGS="-L$(STAGE2_LIB_DIR)" \ -DLLVM_CONFIG=$(STAGE2_BIN_DIR)/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ ninja $(NJOBS) $(VERBOSE) From aaf419a998aede5aa08acd27b49acea29f728f79 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 11 Oct 2021 18:20:45 -0700 Subject: [PATCH 033/118] reconfigure build options further to produce a toolchain built with gnu runtimes as well as configured to use gnu runtimes by default this also reverts a small change in qualify-clang.sh specifying libc++ for one test and required by the previous toolchain configuration --- debian/qualify-clang.sh | 2 +- debian/rules | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 91370546..e6d2734a 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -1271,7 +1271,7 @@ int main() { EmitBackendOutput(*diags, *hsOpts, *cgOpts, *tOpts, *lOpts, *tDesc, m, *action, std::move(AsmOutStream)); } EOF -clang++-$VERSION foo.cpp -o test -stdlib=libc++ -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangCodeGen -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangFrontend -lclangDriver -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -lclangBasic -ldl /usr/lib/llvm-$VERSION/lib/libLLVM-$VERSION.so -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -ldl -I /usr/lib/llvm-$VERSION/include/ -L/usr/lib/llvm-$VERSION/lib/ -lPolly -lPollyPPCG -lPollyISL +clang++-$VERSION foo.cpp -o test -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangCodeGen -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangFrontend -lclangDriver -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -lclangBasic -ldl /usr/lib/llvm-$VERSION/lib/libLLVM-$VERSION.so -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -ldl -I /usr/lib/llvm-$VERSION/include/ -L/usr/lib/llvm-$VERSION/lib/ -lPolly -lPollyPPCG -lPollyISL if test ! -f /usr/bin/lldb-$VERSION; then echo "Install lldb-$VERSION"; diff --git a/debian/rules b/debian/rules index bf9bbe2e..cadb0396 100755 --- a/debian/rules +++ b/debian/rules @@ -176,8 +176,8 @@ CFLAGS_EXTRA += -Wno-unused-command-line-argument CXXFLAGS_EXTRA += -Wno-unused-command-line-argument LDFLAGS_EXTRA += -Wno-unused-command-line-argument -Wl,--build-id BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -stdlib=libc++ -BOOTSTRAP_LDFLAGS_EXTRA = -fuse-ld=lld -rtlib=compiler-rt -stdlib=libc++ +BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) +BOOTSTRAP_LDFLAGS_EXTRA = # Enable polly (or not) POLLY_ENABLE=yes @@ -193,7 +193,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sp LIBUNWIND_ENABLE=no else RUNTIMES += ;libunwind - BOOTSTRAP_LDFLAGS_EXTRA += -unwindlib=libunwind # this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH STAGE1_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON endif @@ -455,8 +454,12 @@ override_dh_auto_configure: preconfigure -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ -DCLANG_PLUGIN_SUPPORT=OFF \ -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_DEFAULT_LINKER=ld \ + -DCLANG_DEFAULT_CXX_STDLIB=libstdc++ \ + -DCLANG_DEFAULT_RTLIB=libgcc \ -DCOMPILER_RT_BUILD_XRAY=OFF \ -DCOMPILER_RT_INCLUDE_TESTS=OFF \ + -DCOMPILER_RT_USE_LIBCXX=NO \ -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ -DLIBUNWIND_ENABLE_SHARED=ON \ -DLIBUNWIND_USE_COMPILER_RT=ON \ @@ -487,7 +490,6 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_LLVM_ENABLE_LIBCXX=ON \ -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ -DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \ @@ -500,18 +502,14 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB=ON \ -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ - -DBOOTSTRAP_CLANG_DEFAULT_LINKER=ld \ - -DBOOTSTRAP_CLANG_DEFAULT_CXX_STDLIB=libstdc++ \ - -DBOOTSTRAP_CLANG_DEFAULT_RTLIB=libgcc \ -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ - -DBOOTSTRAP_SANITIZER_CXX_ABI=libc++ \ -DBOOTSTRAP_LIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DBOOTSTRAP_LIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(BOOTSTRAP_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;CLANG_DEFAULT_LINKER;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;LLVM_USE_LINKER;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ From d9e74d1c5c7fa2b7e9da80e5fa7de9b07bec64cc Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 11 Oct 2021 18:37:56 -0700 Subject: [PATCH 034/118] update changelog --- debian/changelog | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index 139cb0a6..21361952 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,13 +1,11 @@ llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium - * evolve build configuration in rules file to leverage a two stage build with - runtimes support whereby the resulting stage2 (final) compiler is used to - build the stage2 (final) runtimes and all stage2 artifacts are free of gnu - compiler and c++ runtimes dependencies - * stage2 runtimes (built as part of the main stage2 build) now include - compiler-rt, libcxx and libcxxabi as well as libunwind and openmp where - supported. Additionally, legacy corresponding standalone build targets are - removed from the rules file + * evolve llvm build configuration in rules to leverage the two stage build + with runtimes support whereby the resulting stage2 (final) compiler is used + to build the stage2 (final) runtimes as part of a single monolithic build + * the stage2 runtimes build now includes compiler-rt, libcxx and libcxxabi as + well as libunwind and openmp where supported. Additionally, legacy + corresponding standalone build targets are removed from the rules file * patch openmp build to include required runtimes as dependencies to build targets so they are built first when included as part of a runtimes build since openmp can depend on them From 582a02e2f175c8bc193f2ffd0175767d6ca80810 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 14 Oct 2021 21:29:10 +0200 Subject: [PATCH 035/118] prepare upload --- debian/changelog | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 21361952..bfc56ed2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium +llvm-toolchain-12 (1:12.0.1-10) unstable; urgency=medium * evolve llvm build configuration in rules to leverage the two stage build with runtimes support whereby the resulting stage2 (final) compiler is used @@ -19,10 +19,7 @@ llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium * remove several existing patches incorporating workarounds no longer required by the modified build configuration - -- Erik Maciejewski Wed, 06 Oct 2021 01:25:08 -0700 - -llvm-toolchain-12 (1:12.0.1-10) UNRELEASED; urgency=medium - + [ Sylvestre Ledru ] * If parallel is not set in DEB_BUILD_OPTIONS, use nproc * Add source-is-missing llvm/test/* / lldb/test/* / lld/test/* to the source override @@ -31,7 +28,7 @@ llvm-toolchain-12 (1:12.0.1-10) UNRELEASED; urgency=medium [ John Paul Adrian Glaubitz ] * Disable libunwind on sparc, sparc64 and x32 - -- Sylvestre Ledru Sat, 02 Oct 2021 10:50:27 +0200 + -- Erik Maciejewski Wed, 06 Oct 2021 01:25:08 -0700 llvm-toolchain-12 (1:12.0.1-9) unstable; urgency=medium From d8b04d188fa3a59e969962a5bacf1ff772b4159b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 15 Oct 2021 10:45:27 +0200 Subject: [PATCH 036/118] Remove omp-device-info from LLVMExports.cmake (Closes: #996551) --- debian/changelog | 6 ++++++ debian/rules | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b30b5613..6e5fb2c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-13 (1:13.0.0-6) unstable; urgency=medium + + * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) + + -- Sylvestre Ledru Fri, 15 Oct 2021 10:45:30 +0200 + llvm-toolchain-13 (1:13.0.0-5) unstable; urgency=medium * Restrict the dependency on libunwind-13-dev from Package: libc++-13-dev diff --git a/debian/rules b/debian/rules index fdcf2070..e47035e2 100755 --- a/debian/rules +++ b/debian/rules @@ -756,7 +756,7 @@ endif rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/llvm/Support/LICENSE.TXT # Disable CMake's package validation checks for target files that we may remove. - sed -i '/_IMPORT_CHECK_TARGETS \(Polly\|sancov\|omptarget\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake + sed -i '/_IMPORT_CHECK_TARGETS \(Polly\|sancov\|omp-device-info\|omptarget\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake # Disable CMake's package validation checks for binaries that may not be installed sed -i 's|.*_IMPORT_CHECK_FILES_FOR_.*/bin/.*)|#&|' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake From 0ae8e6c3b20ca76d257616450b59d2ef3308a9ac Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sun, 17 Oct 2021 01:20:31 -0700 Subject: [PATCH 037/118] d/changelog: Start 1:12.0.1-11 changelog Signed-off-by: Jordan Justen --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index bfc56ed2..045c33ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium + + [ Jordan Justen ] + * UNRELEASED + + -- Jordan Justen Sun, 17 Oct 2021 01:17:06 -0700 + llvm-toolchain-12 (1:12.0.1-10) unstable; urgency=medium * evolve llvm build configuration in rules to leverage the two stage build From 236aed51ac7b92060d3fb7f6acff7fa261986fe9 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sun, 17 Oct 2021 01:23:06 -0700 Subject: [PATCH 038/118] d/rules: Add amdgcn-mesa-mesa3d to libclc build Signed-off-by: Jordan Justen --- debian/changelog | 3 ++- debian/rules | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 045c33ba..1e528a55 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,8 @@ llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium [ Jordan Justen ] - * UNRELEASED + * d/rules: Add amdgcn-mesa-mesa3d to libclc build. + Closes: #993904, #995069 -- Jordan Justen Sun, 17 Oct 2021 01:17:06 -0700 diff --git a/debian/rules b/debian/rules index cadb0396..ed4af6b4 100755 --- a/debian/rules +++ b/debian/rules @@ -146,7 +146,7 @@ else LLVM_SPIRV_INSTALLED = yes endif -LIBCLC_TARGETS_TO_BUILD="amdgcn--;amdgcn--amdhsa;r600--;nvptx--;nvptx64--;nvptx--nvidiacl;nvptx64--nvidiacl" +LIBCLC_TARGETS_TO_BUILD="amdgcn--;amdgcn--amdhsa;amdgcn-mesa-mesa3d;r600--;nvptx--;nvptx64--;nvptx--nvidiacl;nvptx64--nvidiacl" ifeq ($(LLVM_SPIRV_INSTALLED),yes) LIBCLC_TARGETS_TO_BUILD := $(LIBCLC_TARGETS_TO_BUILD)";spirv-mesa3d-;spirv64-mesa3d-" endif From 64822f9a9edff41278a766aa66012bec450e8714 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 17 Oct 2021 22:01:58 +0200 Subject: [PATCH 039/118] add more stuff to remove --- debian/qualify-clang.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index e6d2734a..b0e09fb4 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -11,7 +11,7 @@ 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 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}_amd64.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" echo "To install everything:" -echo "sudo apt --purge remove 'libomp5-*' 'libc++*dev' 'libc++*' 'python3-lldb-*' 'libunwind-*dev' 'libclc-*dev'" +echo "sudo apt --purge remove 'libomp5-*' 'libc++*dev' 'libc++*' 'python3-lldb-*' 'libunwind-*' 'libclc-*dev'" echo "sudo dpkg -i $LIST" L="" for f in $LIST; do From 7057efdb4e29db586b0b15c96371736f539409d7 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 17 Oct 2021 22:02:24 +0200 Subject: [PATCH 040/118] add a test: Make sure that #993904 and #995069 don't come back' --- debian/qualify-clang.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index b0e09fb4..c184fce9 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -1049,6 +1049,12 @@ if test ! -f /usr/lib/clc/amdgcn--amdhsa.bc; then exit -1; fi +if test ! -f /usr/lib/clc/polaris10-amdgcn-mesa-mesa3d.bc; then + # Make sure that #993904 and #995069 don't come back + echo "/usr/lib/clc/polaris10-amdgcn-mesa-mesa3d.bc doesn't exist" + exit 1 +fi + LLVM_CONFIG=llvm-config-$VERSION /usr/lib/llvm-$VERSION/share/libclc/check_external_calls.sh /usr/lib/clc/amdgcn--amdhsa.bc > /dev/null # libunwind From 63f3c0d93e7f1661fc4ad04cece9ac881842247c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 17 Oct 2021 22:16:29 +0200 Subject: [PATCH 041/118] prepare for upload --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1e528a55..649632c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-12 (1:12.0.1-11) UNRELEASED; urgency=medium +llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium [ Jordan Justen ] * d/rules: Add amdgcn-mesa-mesa3d to libclc build. From 1b8f0889568f87aa82fe4d6eb12fe624e0cbf3b7 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 09:26:53 +0200 Subject: [PATCH 042/118] Fix a atomic issue. Thanks to YunQiang Su for the patch Partial fix for #995827 --- debian/changelog | 2 ++ debian/patches/series | 1 + debian/patches/unbreak-atomic-arm.diff | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 debian/patches/unbreak-atomic-arm.diff diff --git a/debian/changelog b/debian/changelog index 6e5fb2c0..3d3f8c1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ llvm-toolchain-13 (1:13.0.0-6) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) + * Fix a atomic issue. Thanks to YunQiang Su for the patch + Partial fix for #995827 -- Sylvestre Ledru Fri, 15 Oct 2021 10:45:30 +0200 diff --git a/debian/patches/series b/debian/patches/series index 96823ec0..c3b92fbe 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -145,3 +145,4 @@ scan-build-py-fix-default-bin.diff libclc-llvm-spirv.diff omp-riscv64.patch test-disable-lldb-i386.diff +unbreak-atomic-arm.diff diff --git a/debian/patches/unbreak-atomic-arm.diff b/debian/patches/unbreak-atomic-arm.diff new file mode 100644 index 00000000..5a4fc884 --- /dev/null +++ b/debian/patches/unbreak-atomic-arm.diff @@ -0,0 +1,19 @@ +Index: llvm-toolchain-13-13.0.0/compiler-rt/lib/scudo/standalone/CMakeLists.txt +=================================================================== +--- llvm-toolchain-13-13.0.0.orig/compiler-rt/lib/scudo/standalone/CMakeLists.txt ++++ llvm-toolchain-13-13.0.0/compiler-rt/lib/scudo/standalone/CMakeLists.txt +@@ -137,6 +137,13 @@ append_list_if(COMPILER_RT_HAS_LIBPTHREA + + append_list_if(FUCHSIA zircon SCUDO_LINK_LIBS) + ++if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips" OR ++ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips64" OR ++ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mipsel" OR ++ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips64el") ++ list(APPEND SCUDO_LINK_LIBS atomic) ++endif() ++ + if(COMPILER_RT_HAS_SCUDO_STANDALONE) + add_compiler_rt_object_libraries(RTScudoStandalone + ARCHS ${SCUDO_STANDALONE_SUPPORTED_ARCH} + From 66dfda543ca74897147a28f4b60db3686f034e9c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 11:07:30 +0200 Subject: [PATCH 043/118] Bring back the llvm manpages (Closes: #995684) Were generated at the wrong place --- debian/changelog | 2 ++ debian/llvm-X.Y.manpages.in | 2 +- debian/qualify-clang.sh | 6 ++++++ debian/rules | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3d3f8c1f..f86f82a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ llvm-toolchain-13 (1:13.0.0-6) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) * Fix a atomic issue. Thanks to YunQiang Su for the patch Partial fix for #995827 + * Bring back the llvm manpages (Closes: #995684) + Were generated at the wrong place -- Sylvestre Ledru Fri, 15 Oct 2021 10:45:30 +0200 diff --git a/debian/llvm-X.Y.manpages.in b/debian/llvm-X.Y.manpages.in index 35702d06..e2483708 100644 --- a/debian/llvm-X.Y.manpages.in +++ b/debian/llvm-X.Y.manpages.in @@ -1,4 +1,4 @@ -docs/_build/man/* +llvm/docs/_build/man/* debian/man/llvm-dwarfdump-@LLVM_VERSION@.1 debian/man/llvm-mc-@LLVM_VERSION@.1 debian/man/llvm-objdump-@LLVM_VERSION@.1 diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 5db5b871..b1b7fcb7 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -44,6 +44,12 @@ if grep "File format not recognized" foo.log; then exit 1 fi +# Test #995684 +if test /usr/share/man/man1/llc-$VERSION.1.gz; then + echo "llvm manpage are missing (using llc as an example)" + exit 1 +fi + if test ! -f /usr/bin/scan-build-$VERSION; then echo "Install clang-tools-$VERSION" exit 1 diff --git a/debian/rules b/debian/rules index e47035e2..7a15c040 100755 --- a/debian/rules +++ b/debian/rules @@ -597,7 +597,7 @@ ifeq (${POLLY_ENABLE},yes) endif # Rename manpages - d=$(CURDIR)/docs/_build/man/; \ + d=$(CURDIR)/llvm/docs/_build/man/; \ if test -d $$d; then \ cd $$d; \ for f in *.1; do \ @@ -966,7 +966,7 @@ override_dh_gencontrol: override_dh_auto_clean: - rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h docs/_build/ clang/docs/_build tools/clang/docs/_html/ + rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h llvm/docs/_build/ clang/docs/_build tools/clang/docs/_html/ # QA tools rm -rf cov-int/ reports/ rm -f `ls debian/*.in|sed -e "s|.in$$||g"` From a39301619e44611b1cf0774486be94b5e15af762 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 14:31:45 +0200 Subject: [PATCH 044/118] add a workaround to handle the proper replace in 13 --- debian/control | 4 ++-- debian/rules | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index 735c45eb..7086f119 100644 --- a/debian/control +++ b/debian/control @@ -559,10 +559,10 @@ Section: libdevel Architecture: amd64 arm64 armhf i386 mips64el ppc64el ppc64 riscv64 Depends: libomp5-13 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Suggests: libomp-13-doc -Breaks: libiomp-dev (<< 3.7-1), libomp-dev (<< 44), llvm-13 (<< 1:13.0.0~++20211013044936) +Breaks: libiomp-dev (<< 3.7-1), libomp-dev (<< 44), llvm-13 (<< 1:13.0.0-4) Provides: libomp-x.y-dev Conflicts: libomp-x.y-dev -Replaces: libomp-x.y-dev, llvm-13 (<< 1:13.0.0~++20211013044936) +Replaces: libomp-x.y-dev, llvm-13 (<< 1:13.0.0-4) Description: LLVM OpenMP runtime - dev package The runtime is the part of the OpenMP implementation that your code is linked against, and that manages the multiple threads in an OpenMP program diff --git a/debian/rules b/debian/rules index 7a15c040..e1a7e675 100755 --- a/debian/rules +++ b/debian/rules @@ -373,6 +373,15 @@ preconfigure: debian/llvm-$(LLVM_VERSION)-dev.install \ debian/llvm-$(LLVM_VERSION)-linker-tools.install + # workaround the breaks/replaces/conflicts introduced with the omp-device-info move + # we update the version to make it work with apt.llvm.org + # Yeah, this is ugly but I don't know how to do better + if test "$(LLVM_VERSION)" = "13"; then \ + if echo "$(LLVM_VERSION_SNAPSHOT)"|grep -q "++"; then \ + sed -i -e "s|(<< 1:13.0.0-4)|(<< 1:13.0.0~++20211013044936)|g" debian/control; \ + fi; \ + fi + # Conditionally enable *.spv files. Debian buster and Ubuntu 18.04 # don't have llvm-spirv to create the *.spv files. if test "$(LLVM_SPIRV_INSTALLED)" = "yes"; then \ From 4cd75253306d4d740c620bdb140757cfbaed502d Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 15 Oct 2021 14:01:44 -0700 Subject: [PATCH 045/118] add missing LIBUNWIND_USE_COMPILER_RT to CLANG_BOOTSTRAP_PASSTHROUGH to link correct compiler-rt lib in stage2 --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index ed4af6b4..61df365f 100755 --- a/debian/rules +++ b/debian/rules @@ -509,7 +509,7 @@ override_dh_auto_configure: preconfigure $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(BOOTSTRAP_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;LLVM_USE_LINKER;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;LLVM_USE_LINKER;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ From ee4d16b438f7c102736f6a12ac4a6082ab3d05f6 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 15 Oct 2021 20:42:47 -0700 Subject: [PATCH 046/118] consolidate two conditionals for libatomic that were essentially the same, but the one removed could conflict with BOOTSTRAP_SHARED_LINK_FLAGS elsewhere in the rules file --- debian/rules | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/debian/rules b/debian/rules index 61df365f..da4da048 100755 --- a/debian/rules +++ b/debian/rules @@ -57,18 +57,14 @@ ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) LIBCXX_EXCEPTIONS :=OFF endif -ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) -CMAKE_EXTRA += -DCMAKE_SHARED_LINKER_FLAGS="-latomic" -STAGE1_CMAKE_EXTRA += -DCMAKE_SHARED_LINKER_FLAGS="-latomic" -endif - ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 endif -ifneq (,$(filter $(DEB_HOST_ARCH),armel mipsel powerpc riscv64)) +ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) # For some reason, in the stage2 build, when clang is used to compile -# itself. The atomic detection is failing on armel and riscv64. Forcing the inclusion everywhere. +# itself. The atomic detection is failing on armel and riscv64. Forcing the inclusion +# everywhere and in all stages LDFLAGS_EXTRA += -latomic endif From a7ba5e95ef5819b8da548b21d893f4e4ea9cbbd1 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sat, 16 Oct 2021 04:18:46 -0700 Subject: [PATCH 047/118] add COMPILER_RT_DEFAULT_TARGET_ONLY=ON to armel and armhf toolchain build options to prevent related arches that might not be supported on the build host from being included in the build (like armv6m soft-float on the armhf build host) --- debian/rules | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index da4da048..46db70ea 100755 --- a/debian/rules +++ b/debian/rules @@ -111,12 +111,16 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # Prevent clang from getting a > v4t default # See bug #868779 STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi +# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) # avoid an issue with openmp on armhf STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf +# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH + STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) @@ -505,7 +509,7 @@ override_dh_auto_configure: preconfigure $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(BOOTSTRAP_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;LLVM_USE_LINKER;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;LLVM_USE_LINKER;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_DEFAULT_TARGET_ONLY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ From 2bb5eae6394008ee9f04e9da6d8152dd2667df81 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 17 Oct 2021 15:40:45 -0700 Subject: [PATCH 048/118] reorganize flags and cmake options around stages for the toolchain build --- debian/rules | 119 ++++++++++++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/debian/rules b/debian/rules index 46db70ea..f7e75ba0 100755 --- a/debian/rules +++ b/debian/rules @@ -37,14 +37,28 @@ DH_VERSION := $(shell dpkg -s debhelper | grep '^Version' | awk '{print $$2}') include /usr/share/dpkg/architecture.mk -LDFLAGS_EXTRA = -CXXFLAGS_EXTRA = -CFLAGS_EXTRA = CONFIGURE_EXTRA = -CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 +# all stages all builds +CFLAGS_EXTRA = -Wno-unused-command-line-argument +CXXFLAGS_EXTRA = -Wno-unused-command-line-argument +LDFLAGS_EXTRA = -Wno-unused-command-line-argument -Wl,--build-id +# stage 1 toolchain build only +STAGE1_CFLAGS_EXTRA = $(CFLAGS_EXTRA) +STAGE1_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) +STAGE1_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) +# stage 2 toolchain and stand-alone builds +STAGE2_CFLAGS_EXTRA = $(CFLAGS_EXTRA) +STAGE2_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) +STAGE2_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) + +# toolchain build cmake options STAGE1_CMAKE_EXTRA = -# prepend bootstrap prefix to CMAKE_EXTRA vars -BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) +STAGE2_CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 +STAGE1_AND_STAGE2_CMAKE_EXTRA = +# build-only var combining all first stage cmake options +CMAKE_EXTRA = $(STAGE1_CMAKE_EXTRA) $(STAGE1_AND_STAGE2_CMAKE_EXTRA) +# build-only var prepending BOOTSTRAP_ prefix to all stage 2 cmake vars +BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE2_CMAKE_EXTRA) $(STAGE1_AND_STAGE2_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) BASE_PATH := $(CURDIR) STAGE1_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD)/bin @@ -58,7 +72,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) endif ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) -CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 +STAGE1_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 endif ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) @@ -88,14 +102,14 @@ ifneq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) Z3_FLAG = -DLLVM_ENABLE_Z3_SOLVER=ON endif endif -CMAKE_EXTRA += $(Z3_FLAG) +STAGE2_CMAKE_EXTRA += $(Z3_FLAG) # Change the default CPU for s390x ZARCH=z196 ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) ZARCH=z13 endif -CMAKE_EXTRA += -DCLANG_SYSTEMZ_DEFAULT_ARCH=$(ZARCH) +STAGE2_CMAKE_EXTRA += -DCLANG_SYSTEMZ_DEFAULT_ARCH=$(ZARCH) export CC=gcc-$(GCC_VERSION) export CXX=g++-$(GCC_VERSION) @@ -106,27 +120,24 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) opt_flags += -marm # 3.8 fails to build, disable the compiler_rt builtins # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html - CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF - STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF # Prevent clang from getting a > v4t default # See bug #868779 - STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi -# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) # avoid an issue with openmp on armhf - STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf -# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) # avoid an issue with search path on mips64el # https://bugs.llvm.org/show_bug.cgi?id=41204 - STAGE1_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif @@ -154,8 +165,8 @@ endif 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))) - STAGE1_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold - STAGE1_CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ endif endif @@ -168,17 +179,9 @@ ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) LDFLAGS_EXTRA += -coverage -lgcov RUN_TEST=yes # OpenMP doesn't respect LDFLAGS - CMAKE_EXTRA+= -DLIBOMP_LDFLAGS="-coverage -lgcov" # don't pass LDFLAGS_EXTRA because it expects gcc arg + STAGE2_CMAKE_EXTRA+= -DLIBOMP_LDFLAGS="-coverage -lgcov" # don't pass LDFLAGS_EXTRA because it expects gcc arg endif -# Enable for bootstrap -CFLAGS_EXTRA += -Wno-unused-command-line-argument -CXXFLAGS_EXTRA += -Wno-unused-command-line-argument -LDFLAGS_EXTRA += -Wno-unused-command-line-argument -Wl,--build-id -BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -BOOTSTRAP_LDFLAGS_EXTRA = - # Enable polly (or not) POLLY_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), powerpc powerpcspe)) @@ -193,8 +196,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sp LIBUNWIND_ENABLE=no else RUNTIMES += ;libunwind -# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON endif # Enable openmp (or not) @@ -203,11 +205,9 @@ ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x OPENMP_ENABLE=no else RUNTIMES+=;openmp -# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" ifeq ($(LIBUNWIND_ENABLE),yes) -# this is also added to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DOPENMP_USE_LLVM_UNWINDER=ON + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DOPENMP_USE_LLVM_UNWINDER=ON endif endif @@ -237,8 +237,7 @@ ifneq (,$(filter scan-build,$(DEB_BUILD_OPTIONS))) # no need to run tests in this case RUN_TEST=no CONFIGURE_EXTRA += --enable-assertions -# will also be applied to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON endif ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) @@ -251,8 +250,7 @@ ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) PRE_PROCESS_CONF= COVERITY_ENABLE=1 CONFIGURE_EXTRA += --enable-assertions -# will also be applied to stage2 via CLANG_BOOTSTRAP_PASSTHROUGH - STAGE1_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON # no need to run tests in this case RUN_TEST=no else @@ -266,9 +264,6 @@ ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch. LLDB_ENABLE=no else -# See https://llvm.org/bugs/show_bug.cgi?id=28898 -# Enable it again as it seems it is fixed upstream https://bugs.llvm.org/show_bug.cgi?id=35291 -# CMAKE_EXTRA += -DLLDB_DISABLE_LIBEDIT=ON PROJECTS+=;lldb endif @@ -276,7 +271,7 @@ LLD_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH_OS),linux)) # only for linux - CMAKE_EXTRA += -DLLVM_USE_PERF=ON -DLLVM_ENABLE_LIBPFM=ON + STAGE2_CMAKE_EXTRA += -DLLVM_USE_PERF=ON -DLLVM_ENABLE_LIBPFM=ON endif # Only enable it for archs supporting gold @@ -290,7 +285,7 @@ ifeq (,$(filter $(DEB_HOST_ARCH), armhf)) # * LLVM_ENABLE_LTO doesn't work with gcc >= 9 (option not accepted) # * BOOTSTRAP_LLVM_ENABLE_LTO is producing some large binary # See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=943623 -# CMAKE_EXTRA += -DBOOTSTRAP_LLVM_ENABLE_LTO="Thin" +# STAGE2_CMAKE_EXTRA += -DLLVM_ENABLE_LTO="Thin" endif endif @@ -436,11 +431,17 @@ override_dh_auto_configure: preconfigure CFLAGS="$(CFLAGS_EXTRA)" \ CXXFLAGS="$(CXXFLAGS_EXTRA)" \ LDFLAGS="$(LDFLAGS_EXTRA)" \ - LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ + LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \ + $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ -G $(GENERATOR) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="$(STAGE1_CFLAGS_EXTRA)" \ + -DCMAKE_CXX_FLAGS="$(STAGE1_CXXFLAGS_EXTRA)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE1_LDFLAGS_EXTRA)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE1_LDFLAGS_EXTRA)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE1_LDFLAGS_EXTRA)" \ -DPACKAGE_VENDOR=$(VENDOR) \ -DENABLE_LINKER_BUILD_ID=ON \ -DLLVM_TARGETS_TO_BUILD=Native \ @@ -477,7 +478,7 @@ override_dh_auto_configure: preconfigure -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING=OFF \ -DLIBOMP_ENABLE_RTTI=OFF \ -DLIBOMP_OMPT_SUPPORT=OFF \ - $(STAGE1_CMAKE_EXTRA) \ + $(CMAKE_EXTRA) \ -DBUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DRUNTIMES_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ @@ -485,11 +486,11 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ - -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(BOOTSTRAP_CXXFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_C_FLAGS="$(BOOTSTRAP_CFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE2_CFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE2_CXXFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ -DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \ @@ -508,8 +509,8 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(BOOTSTRAP_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_HOST_TRIPLE;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_ENABLE_ASSERTIONS;LLVM_INCLUDE_GO_TESTS;LLVM_BINUTILS_INCDIR;LLVM_USE_LINKER;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_DEFAULT_TARGET_ONLY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXXABI_USE_LLVM_UNWINDER;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;OPENMP_USE_LLVM_UNWINDER;LIBOMP_LIBFLAGS;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ @@ -539,7 +540,8 @@ debian-full-build: debian-libfuzzer-build: ifeq (${LIBFUZZER_ENABLE},yes) cd $(TARGET_BUILD); \ - CFLAGS=`dpkg-buildflags --get CFLAGS`; \ + CFLAGS=$(STAGE2_CFLAGS_EXTRA); \ + CFLAGS="$$CFLAGS `dpkg-buildflags --get CFLAGS`"; \ CFLAGS="$$CFLAGS `dpkg-buildflags --get CPPFLAGS`"; \ echo $$CFLAGS; \ $(STAGE2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ @@ -556,10 +558,11 @@ debian-libclc-build: -G $(GENERATOR) \ -DCMAKE_C_COMPILER=$(STAGE2_BIN_DIR)/clang \ -DCMAKE_CXX_COMPILER=$(STAGE2_BIN_DIR)/clang++ \ - -DCMAKE_CXX_FLAGS="$(BOOTSTRAP_CXXFLAGS_EXTRA)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ - -DCMAKE_EXE_LINKER_FLAGS="$(BOOTSTRAP_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_C_FLAGS="$(STAGE2_CFLAGS_EXTRA)" \ + -DCMAKE_CXX_FLAGS="$(STAGE2_CXXFLAGS_EXTRA)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ From 37b09ab9633da35b41bfdb6f40a505eccd188b48 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 17 Oct 2021 21:51:55 -0700 Subject: [PATCH 049/118] set baseline arch to armv5t, remove older 3.8 workaround for armel build --- debian/rules | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/debian/rules b/debian/rules index f7e75ba0..5ba9c3b3 100755 --- a/debian/rules +++ b/debian/rules @@ -117,17 +117,14 @@ export CXX=g++-$(GCC_VERSION) opt_flags = -O2 -DNDEBUG -g1 ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) - opt_flags += -marm - # 3.8 fails to build, disable the compiler_rt builtins - # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF - # Prevent clang from getting a > v4t default - # See bug #868779 +# https://wiki.debian.org/ArmEabiPort +# since debian buster (10) armel baseline is 5T + STAGE2_CFLAGS_EXTRA += -march=armv5t + STAGE2_CXXFLAGS_EXTRA += -march=armv5t STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif - ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) # avoid an issue with openmp on armhf STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf From 4f0c8cb34675f1175a8a09bf3380c1b1d3ec5b48 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 17 Oct 2021 21:55:23 -0700 Subject: [PATCH 050/118] update to debian host triple for the armhf build --- debian/rules | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index 5ba9c3b3..831a4023 100755 --- a/debian/rules +++ b/debian/rules @@ -126,8 +126,7 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) -# avoid an issue with openmp on armhf - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabihf STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif @@ -137,7 +136,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif - ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.8-20121128-1~ ; echo $$?),0) control_vars = '-Vdep:devlibs=libstdc++-$(GCC_VERSION)-dev, libgcc-$(GCC_VERSION)-dev' \ '-Vdep:devlibs-objc=libobjc-$(GCC_VERSION)-dev' From 4bcf61cc0ba3dd549a443e0d28af0f9b38dd6f3a Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 19 Oct 2021 18:45:17 +0200 Subject: [PATCH 051/118] update changelog --- debian/changelog | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 649632c0..afc54e5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,19 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium - [ Jordan Justen ] - * d/rules: Add amdgcn-mesa-mesa3d to libclc build. - Closes: #993904, #995069 + * add missing LIBUNWIND_USE_COMPILER_RT to CLANG_BOOTSTRAP_PASSTHROUGH to link + correct compiler-rt lib in stage2 + * consolidate two conditionals for libatomic that were essentially the same, + but the one removed could conflict with BOOTSTRAP_SHARED_LINK_FLAGS + elsewhere in the rules file + * attempt to fix arm builtins by adding COMPILER_RT_DEFAULT_TARGET_ONLY=ON to + armel and armhf toolchain build options to prevent related arches that might + not be supported on the build host from being included in the build (like + armv6m soft-float on the armhf build host) + * reorganize flags and cmake options around stages for the toolchain build + * set baseline arch to armv5t, remove older 3.8 workaround for armel build + * update to debian host triple for the armhf build - -- Jordan Justen Sun, 17 Oct 2021 01:17:06 -0700 + -- Erik Maciejewski Sat, 16 Oct 2021 09:07:25 -0700 llvm-toolchain-12 (1:12.0.1-10) unstable; urgency=medium From ac63cfad6bb121d4f4521ffbe639e9194a526bd6 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sun, 17 Oct 2021 01:23:06 -0700 Subject: [PATCH 052/118] d/rules: Add amdgcn-mesa-mesa3d to libclc build Signed-off-by: Jordan Justen --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index afc54e5d..a5916c02 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium +<<<<<<< * add missing LIBUNWIND_USE_COMPILER_RT to CLANG_BOOTSTRAP_PASSTHROUGH to link correct compiler-rt lib in stage2 * consolidate two conditionals for libatomic that were essentially the same, @@ -12,6 +13,11 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium * reorganize flags and cmake options around stages for the toolchain build * set baseline arch to armv5t, remove older 3.8 workaround for armel build * update to debian host triple for the armhf build +======= + [ Jordan Justen ] + * d/rules: Add amdgcn-mesa-mesa3d to libclc build. + Closes: #993904, #995069 +>>>>>>> -- Erik Maciejewski Sat, 16 Oct 2021 09:07:25 -0700 From 3a471b5b337121ce5332c121399f5497a5049c08 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 17 Oct 2021 22:16:29 +0200 Subject: [PATCH 053/118] prepare for upload --- debian/changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index a5916c02..eafbbaaf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,9 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium * reorganize flags and cmake options around stages for the toolchain build * set baseline arch to armv5t, remove older 3.8 workaround for armel build * update to debian host triple for the armhf build + [ Jordan Justen ] + * d/rules: Add amdgcn-mesa-mesa3d to libclc build. + Closes: #993904, #995069 ======= [ Jordan Justen ] * d/rules: Add amdgcn-mesa-mesa3d to libclc build. From 49601274e7b86f72bfc414e1c09010ab106871ed Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 13:26:42 +0200 Subject: [PATCH 054/118] fix merge --- debian/changelog | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index eafbbaaf..2e6f93b4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,5 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium -<<<<<<< * add missing LIBUNWIND_USE_COMPILER_RT to CLANG_BOOTSTRAP_PASSTHROUGH to link correct compiler-rt lib in stage2 * consolidate two conditionals for libatomic that were essentially the same, @@ -13,14 +12,10 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium * reorganize flags and cmake options around stages for the toolchain build * set baseline arch to armv5t, remove older 3.8 workaround for armel build * update to debian host triple for the armhf build + [ Jordan Justen ] * d/rules: Add amdgcn-mesa-mesa3d to libclc build. Closes: #993904, #995069 -======= - [ Jordan Justen ] - * d/rules: Add amdgcn-mesa-mesa3d to libclc build. - Closes: #993904, #995069 ->>>>>>> -- Erik Maciejewski Sat, 16 Oct 2021 09:07:25 -0700 From 4b26a33863d5b6ad65d074869d7e25a578ed6003 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 13:30:12 +0200 Subject: [PATCH 055/118] Bring back the llvm manpages (Closes: #995684) Were generated at the wrong place --- debian/changelog | 4 ++++ debian/llvm-X.Y.manpages.in | 2 +- debian/qualify-clang.sh | 6 ++++++ debian/rules | 4 ++-- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2e6f93b4..fdf55f21 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,10 @@ llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium * d/rules: Add amdgcn-mesa-mesa3d to libclc build. Closes: #993904, #995069 + [ Sylvestre Ledru ] + * Bring back the llvm manpages (Closes: #995684) + Were generated at the wrong place + -- Erik Maciejewski Sat, 16 Oct 2021 09:07:25 -0700 llvm-toolchain-12 (1:12.0.1-10) unstable; urgency=medium diff --git a/debian/llvm-X.Y.manpages.in b/debian/llvm-X.Y.manpages.in index 35702d06..e2483708 100644 --- a/debian/llvm-X.Y.manpages.in +++ b/debian/llvm-X.Y.manpages.in @@ -1,4 +1,4 @@ -docs/_build/man/* +llvm/docs/_build/man/* debian/man/llvm-dwarfdump-@LLVM_VERSION@.1 debian/man/llvm-mc-@LLVM_VERSION@.1 debian/man/llvm-objdump-@LLVM_VERSION@.1 diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index c184fce9..029b0e55 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -44,6 +44,12 @@ if grep "File format not recognized" foo.log; then exit 1 fi +# Test #995684 +if test ! -f /usr/share/man/man1/llc-$VERSION.1.gz; then + echo "llvm manpage are missing (using llc as an example)" + exit 1 +fi + if test ! -f /usr/bin/scan-build-$VERSION; then echo "Install clang-tools-$VERSION" exit 1 diff --git a/debian/rules b/debian/rules index 831a4023..e1c52e70 100755 --- a/debian/rules +++ b/debian/rules @@ -585,7 +585,7 @@ ifeq (${POLLY_ENABLE},yes) endif # Rename manpages - d=$(CURDIR)/docs/_build/man/; \ + d=$(CURDIR)/llvm/docs/_build/man/; \ if test -d $$d; then \ cd $$d; \ for f in *.1; do \ @@ -943,7 +943,7 @@ override_dh_gencontrol: override_dh_auto_clean: - rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h docs/_build/ clang/docs/_build tools/clang/docs/_html/ + rm -rf $(TARGET_BUILD) tools/clang/include/clang/Debian/debian_path.h llvm/docs/_build/ clang/docs/_build tools/clang/docs/_html/ # QA tools rm -rf cov-int/ reports/ rm -f `ls debian/*.in|sed -e "s|.in$$||g"` From e5d18af7f981944643f98698614a60311db96340 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 13:24:21 +0200 Subject: [PATCH 056/118] add more docs --- debian/rules | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/rules b/debian/rules index e1c52e70..8a053181 100755 --- a/debian/rules +++ b/debian/rules @@ -42,6 +42,12 @@ CONFIGURE_EXTRA = CFLAGS_EXTRA = -Wno-unused-command-line-argument CXXFLAGS_EXTRA = -Wno-unused-command-line-argument LDFLAGS_EXTRA = -Wno-unused-command-line-argument -Wl,--build-id + +# We use a stage2 build. It means that a first clang is built using gcc, +# a second clang is built with the first +# And the various compoments are built using the second clang. +# See https://llvm.org/docs/AdvancedBuilds.html + # stage 1 toolchain build only STAGE1_CFLAGS_EXTRA = $(CFLAGS_EXTRA) STAGE1_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) From 0203a45f38e0538a384f1cc46c83dfdddc4e0ce4 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 18 Oct 2021 13:34:33 +0200 Subject: [PATCH 057/118] improve the check --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 8a053181..2353afe8 100755 --- a/debian/rules +++ b/debian/rules @@ -602,7 +602,7 @@ endif fi # the clang doc generation only generates clang manpage # When it will do more, we should move that in the loop above - cd $(CURDIR)/clang/docs/_build/man/; mv clang.1 clang-$(LLVM_VERSION).1 + cd $(CURDIR)/clang/docs/_build/man/ && mv clang.1 clang-$(LLVM_VERSION).1 # Remove the copy of jquery. See bug #701087 for d in $(TARGET_BUILD_STAGE2)/docs/html/_static/ $(TARGET_BUILD_STAGE2)/tools/clang/docs/html/_static/ $(TARGET_BUILD_STAGE2)/tools/clang/tools/extra/docs/html/_static/; do \ From a122693ff949acef71623896736c848f0765218f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 19 Oct 2021 18:44:39 +0200 Subject: [PATCH 058/118] dump the log when an error is found --- debian/qualify-clang.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 029b0e55..5b413ee9 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -1305,6 +1305,7 @@ if dpkg -l|grep -q clang-$VERSION-dbgsym; then if ! grep "main at driver.cpp" foo.log; then echo "Could not find the debug info" echo "Or the main() of clang isn't in driver.cpp anymore" + cat foo.log exit -1 fi else From bbd39dd55eb5faafb84025eba6863a6c73baf30a Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 19 Oct 2021 13:10:04 -0700 Subject: [PATCH 059/118] re-disable building builtins on armel as they still fail --- debian/rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/rules b/debian/rules index 2353afe8..78b19d53 100755 --- a/debian/rules +++ b/debian/rules @@ -128,6 +128,9 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) STAGE2_CFLAGS_EXTRA += -march=armv5t STAGE2_CXXFLAGS_EXTRA += -march=armv5t STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi + # 12 still failing to build, disable the compiler_rt builtins + # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif From a1ea41e97fefdeeeb9672ebf37071fd940d36b73 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 19 Oct 2021 13:11:29 -0700 Subject: [PATCH 060/118] fix an issue where builtins were not being linked into libcxxabi if LIBCXXABI_USE_COMPILER_RT=ON, add builtins to libcxxabi library flags, otherwise add libgcc following how libunwind does the same --- debian/patches/libcxxabi-fix-link-builtins.diff | 16 ++++++++++++++++ debian/patches/series | 1 + 2 files changed, 17 insertions(+) create mode 100644 debian/patches/libcxxabi-fix-link-builtins.diff diff --git a/debian/patches/libcxxabi-fix-link-builtins.diff b/debian/patches/libcxxabi-fix-link-builtins.diff new file mode 100644 index 00000000..7a71c4f1 --- /dev/null +++ b/debian/patches/libcxxabi-fix-link-builtins.diff @@ -0,0 +1,16 @@ +if LIBCXXABI_USE_COMPILER_RT=ON, add builtins to libcxxabi library +flags, otherwise add libgcc following how libunwind does the same +Index: llvm-toolchain-12_12.0.1/libcxxabi/src/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/libcxxabi/src/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/libcxxabi/src/CMakeLists.txt +@@ -104,7 +104,9 @@ if (ANDROID AND ANDROID_PLATFORM_LEVEL L + list(APPEND LIBCXXABI_LIBRARIES android_support) + endif() + +-if (NOT LIBCXXABI_USE_COMPILER_RT) ++if (LIBCXXABI_USE_COMPILER_RT) ++ add_library_flags("${LIBCXXABI_BUILTINS_LIBRARY}") ++else() + add_library_flags_if(LIBCXXABI_HAS_GCC_LIB gcc) + endif () diff --git a/debian/patches/series b/debian/patches/series index 62f77466..260e2d1f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -146,3 +146,4 @@ compilerrt-fix-warn-xray-testing.diff openmp-fix-runtimes-build.diff libclc-fix-prepare_builtins-rpath.diff libcxx-libatomic-only-with-gcc-rtlib.diff +libcxxabi-fix-link-builtins.diff From 1e66de180ac8f3e8734782540b5d92ded2d7406e Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 19 Oct 2021 13:31:44 -0700 Subject: [PATCH 061/118] update changelog --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index fdf55f21..9782deb8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +llvm-toolchain-12 (1:12.0.1-12) unstable; urgency=medium + + * re-disable building builtins on armel as they still fail + * add patch to libcxxabi cmake build for adding builtins to lib flags fixing + an issue where builtins were not being linked into libcxxabi when + LIBCXXABI_USE_COMPILER_RT=ON + + -- Erik Maciejewski Tue, 19 Oct 2021 01:28:50 -0700 + llvm-toolchain-12 (1:12.0.1-11) unstable; urgency=medium * add missing LIBUNWIND_USE_COMPILER_RT to CLANG_BOOTSTRAP_PASSTHROUGH to link From b0199c560b9718ca0d2f3ab3c33c3ec95b3060fe Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 19 Oct 2021 14:07:40 -0700 Subject: [PATCH 062/118] update latest changelog entry with closes --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9782deb8..862ab1fd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ llvm-toolchain-12 (1:12.0.1-12) unstable; urgency=medium - * re-disable building builtins on armel as they still fail + * re-disable building builtins on armel as they still fail (Closes: #996828) * add patch to libcxxabi cmake build for adding builtins to lib flags fixing an issue where builtins were not being linked into libcxxabi when - LIBCXXABI_USE_COMPILER_RT=ON + LIBCXXABI_USE_COMPILER_RT=ON (Closes: #996796) -- Erik Maciejewski Tue, 19 Oct 2021 01:28:50 -0700 From 247a30585e62fa23e4964880ff5ee46a3e96b111 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 20 Oct 2021 07:36:43 +0200 Subject: [PATCH 063/118] Remove omp-device-info from LLVMExports.cmake (Closes: #996551) For real this time --- debian/changelog | 7 +++++++ debian/rules | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f86f82a2..3ffa961e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-13 (1:13.0.0-7) unstable; urgency=medium + + * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) + For real this time + + -- Sylvestre Ledru Wed, 20 Oct 2021 07:36:28 +0200 + llvm-toolchain-13 (1:13.0.0-6) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) diff --git a/debian/rules b/debian/rules index e1a7e675..a3a480fb 100755 --- a/debian/rules +++ b/debian/rules @@ -765,7 +765,7 @@ endif rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/llvm/Support/LICENSE.TXT # Disable CMake's package validation checks for target files that we may remove. - sed -i '/_IMPORT_CHECK_TARGETS \(Polly\|sancov\|omp-device-info\|omptarget\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake + sed -i '/_IMPORT_CHECK_TARGETS \(Polly\|sancov\|llvm-omp-device-info\|omptarget\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake # Disable CMake's package validation checks for binaries that may not be installed sed -i 's|.*_IMPORT_CHECK_FILES_FOR_.*/bin/.*)|#&|' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake From 735c3c37451c5c395b2b73eb7f95b6bb4a5b8b1e Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 20 Oct 2021 07:50:47 +0200 Subject: [PATCH 064/118] Rename unbreak-atomic-arm.diff => unbreak-atomic-mips.diff --- debian/patches/series | 2 +- .../{unbreak-atomic-arm.diff => unbreak-atomic-mips.diff} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename debian/patches/{unbreak-atomic-arm.diff => unbreak-atomic-mips.diff} (100%) diff --git a/debian/patches/series b/debian/patches/series index c3b92fbe..f035e4d0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -145,4 +145,4 @@ scan-build-py-fix-default-bin.diff libclc-llvm-spirv.diff omp-riscv64.patch test-disable-lldb-i386.diff -unbreak-atomic-arm.diff +unbreak-atomic-mips.diff diff --git a/debian/patches/unbreak-atomic-arm.diff b/debian/patches/unbreak-atomic-mips.diff similarity index 100% rename from debian/patches/unbreak-atomic-arm.diff rename to debian/patches/unbreak-atomic-mips.diff From f41f6ed1f2fdfc663581df1ff19da5854d00ac2f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 20 Oct 2021 23:01:22 +0200 Subject: [PATCH 065/118] Fix the link issue (hopefully on all archs) (Closes: #995827) customs LDFLAGS were not passed to the stage2 --- debian/changelog | 2 ++ debian/rules | 3 +++ 2 files changed, 5 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3ffa961e..27ae20d6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ llvm-toolchain-13 (1:13.0.0-7) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) For real this time + * Fix the link issue (hopefully on all archs) (Closes: #995827) + customs LDFLAGS were not passed to the stage2 -- Sylvestre Ledru Wed, 20 Oct 2021 07:36:28 +0200 diff --git a/debian/rules b/debian/rules index a3a480fb..e0c791cf 100755 --- a/debian/rules +++ b/debian/rules @@ -456,6 +456,9 @@ override_dh_auto_configure: preconfigure -DLLVM_POLLY_LINK_INTO_TOOLS=ON \ -DBOOTSTRAP_CMAKE_CXX_FLAGS='$(BOOTSTRAP_CXXFLAGS_EXTRA)' \ -DBOOTSTRAP_CMAKE_C_FLAGS='$(BOOTSTRAP_CFLAGS_EXTRA)' \ + -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(LDFLAGS_EXTRA)" \ -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_VERBOSE_MAKEFILE;CMAKE_BUILD_TYPE;CMAKE_CXX_FLAGS_RELWITHDEBINFO;LLVM_LINK_LLVM_DYLIB;LLVM_INSTALL_UTILS;LLVM_VERSION_SUFFIX;LLVM_ENABLE_SPHINX;SPHINX_WARNINGS_AS_ERRORS;LLVM_BUILD_LLVM_DYLIB;LLVM_ENABLE_RTTI;LLVM_ENABLE_FFI;LIBCLANG_LIBRARY_VERSION;ENABLE_LINKER_BUILD_ID;POLLY_BUNDLED_JSONCPP;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;LLVM_USE_PERF;LLVM_ENABLE_ASSERTIONS;LLVM_BINUTILS_INCDIR;LLVM_HOST_TRIPLE;LLVM_COMPILER_CHECKED;COMPILER_RT_BUILD_BUILTINS;LIBOMP_LIBFLAGS;CMAKE_SHARED_LINKER_FLAGS;PYTHON_EXECUTABLE;LLVM_ENABLE_Z3_SOLVER;LLVM_POLLY_LINK_INTO_TOOLS;CLANG_VENDOR;LIBUNWIND_USE_COMPILER_RT"|| tail -100 build-llvm/CMakeFiles/CMakeError.log FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ From 59574f7b096bdc35b0d65256a8b2bf5b290300e8 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 20 Oct 2021 23:08:58 +0200 Subject: [PATCH 066/118] Trim trailing whitespace. Changes-By: lintian-brush Fixes: lintian: trailing-whitespace See-also: https://lintian.debian.org/tags/trailing-whitespace.html --- debian/changelog | 6 ++++++ debian/control | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 27ae20d6..5372f88b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-13 (1:13.0.0-8) UNRELEASED; urgency=medium + + * Trim trailing whitespace. + + -- Sylvestre Ledru Wed, 20 Oct 2021 23:08:57 -0000 + llvm-toolchain-13 (1:13.0.0-7) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) diff --git a/debian/control b/debian/control index 7086f119..1b4af1f0 100644 --- a/debian/control +++ b/debian/control @@ -508,7 +508,7 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-13 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +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 s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm13 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} From bd013e98bb82072dcd9341e7c3c471f99f87c1c3 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 20 Oct 2021 23:08:58 +0200 Subject: [PATCH 067/118] Update watch file format version to 4. Changes-By: lintian-brush Fixes: lintian: older-debian-watch-file-standard See-also: https://lintian.debian.org/tags/older-debian-watch-file-standard.html --- debian/changelog | 1 + debian/watch | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5372f88b..bb6f3986 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ llvm-toolchain-13 (1:13.0.0-8) UNRELEASED; urgency=medium * Trim trailing whitespace. + * Update watch file format version to 4. -- Sylvestre Ledru Wed, 20 Oct 2021 23:08:57 -0000 diff --git a/debian/watch b/debian/watch index a6d1751f..abd072ff 100644 --- a/debian/watch +++ b/debian/watch @@ -1,3 +1,2 @@ -version=3 +version=4 https://llvm.org/releases/download.html .*/llvm-([\d\.\-]+).src.tar.xz - From 424a69e8304973462ab8795fd165843d3e3e1d73 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 20 Oct 2021 23:12:13 +0200 Subject: [PATCH 068/118] * Update to compat 11. oldstable has 12 bionic has 11 --- debian/changelog | 12 +++++------- debian/compat | 2 +- debian/control | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index bb6f3986..2a4332df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,16 +1,14 @@ -llvm-toolchain-13 (1:13.0.0-8) UNRELEASED; urgency=medium - - * Trim trailing whitespace. - * Update watch file format version to 4. - - -- Sylvestre Ledru Wed, 20 Oct 2021 23:08:57 -0000 - llvm-toolchain-13 (1:13.0.0-7) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) For real this time * Fix the link issue (hopefully on all archs) (Closes: #995827) customs LDFLAGS were not passed to the stage2 + * Trim trailing whitespace. + * Update watch file format version to 4. + * Update to compat 11. + oldstable has 12 + bionic has 11 -- Sylvestre Ledru Wed, 20 Oct 2021 07:36:28 +0200 diff --git a/debian/compat b/debian/compat index ec635144..b4de3947 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +11 diff --git a/debian/control b/debian/control index 1b4af1f0..da6f60fc 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: optional Rules-Requires-Root: no Maintainer: LLVM Packaging Team Uploaders: Sylvestre Ledru , Gianfranco Costamagna -Build-Depends: debhelper (>= 9.0), cmake, ninja-build, +Build-Depends: debhelper (>= 11.0), cmake, ninja-build, chrpath, texinfo, sharutils, libffi-dev, lsb-release, patchutils, diffstat, xz-utils, python3-dev, From 21741170dffa8e4d2c55cbe4d30884ce4be1b798 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 20 Oct 2021 16:47:20 -0700 Subject: [PATCH 069/118] update rules to incorporate relevant arch specific configs from snapshot --- debian/rules | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/debian/rules b/debian/rules index 78b19d53..7af38c99 100755 --- a/debian/rules +++ b/debian/rules @@ -72,10 +72,10 @@ STAGE1_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD)/lib STAGE2_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin STAGE2_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/lib +# toggleable defaults +COMPILER_RT_USE_BUILTINS_LIBRARY := ON LIBCXX_EXCEPTIONS := ON -ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) - LIBCXX_EXCEPTIONS :=OFF -endif +LIBCXX_USE_COMPILER_RT := ON ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) STAGE1_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 @@ -128,10 +128,13 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) STAGE2_CFLAGS_EXTRA += -march=armv5t STAGE2_CXXFLAGS_EXTRA += -march=armv5t STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi - # 12 still failing to build, disable the compiler_rt builtins - # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON +# 12 still failing to build, disable the compiler_rt builtins +# See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF + COMPILER_RT_USE_BUILTINS_LIBRARY := OFF +# See https://bugs.llvm.org/show_bug.cgi?id=52022 + LIBCXX_USE_COMPILER_RT := OFF endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) @@ -139,12 +142,30 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif +ifneq (,$(filter $(DEB_HOST_ARCH),i386)) +# Sometimes, i386 needs help with the triple + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=i386-linux-gnu +endif + ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) # avoid an issue with search path on mips64el # https://bugs.llvm.org/show_bug.cgi?id=41204 STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif +ifneq (,$(filter $(DEB_HOST_ARCH),x32)) + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 + STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 +# See https://bugs.llvm.org/show_bug.cgi?id=52022 + LIBCXX_USE_COMPILER_RT := OFF +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) + LIBCXX_EXCEPTIONS := OFF +# See https://bugs.llvm.org/show_bug.cgi?id=52022 + LIBCXX_USE_COMPILER_RT := OFF +endif + ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.8-20121128-1~ ; echo $$?),0) control_vars = '-Vdep:devlibs=libstdc++-$(GCC_VERSION)-dev, libgcc-$(GCC_VERSION)-dev' \ '-Vdep:devlibs-objc=libobjc-$(GCC_VERSION)-dev' @@ -464,16 +485,18 @@ override_dh_auto_configure: preconfigure -DCLANG_DEFAULT_RTLIB=libgcc \ -DCOMPILER_RT_BUILD_XRAY=OFF \ -DCOMPILER_RT_INCLUDE_TESTS=OFF \ - -DCOMPILER_RT_USE_LIBCXX=NO \ - -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ + -DCOMPILER_RT_USE_LIBCXX=OFF \ + -DCOMPILER_RT_USE_BUILTINS_LIBRARY=$(COMPILER_RT_USE_BUILTINS_LIBRARY) \ -DLIBUNWIND_ENABLE_SHARED=ON \ -DLIBUNWIND_USE_COMPILER_RT=ON \ -DLIBUNWIND_INSTALL_LIBRARY=OFF \ -DLIBCXXABI_ENABLE_SHARED=ON \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLIBCXXABI_USE_COMPILER_RT=$(LIBCXX_USE_COMPILER_RT) \ -DLIBCXXABI_INSTALL_LIBRARY=OFF \ -DLIBCXX_ENABLE_SHARED=ON \ - -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ + -DLIBCXX_USE_COMPILER_RT=$(LIBCXX_USE_COMPILER_RT) \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ @@ -508,13 +531,11 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB=ON \ -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ - -DBOOTSTRAP_LIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ - -DBOOTSTRAP_LIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ From d62d68611ca73add66471fdab3c6b6baad9d8f1d Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 20 Oct 2021 19:01:11 -0700 Subject: [PATCH 070/118] patch to add a check and only set up and build compiler-rt builtins if they have not been disabled in a runtimes build --- .../llvm-runtimes-builtins-build-check.diff | 20 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 21 insertions(+) create mode 100644 debian/patches/llvm-runtimes-builtins-build-check.diff diff --git a/debian/patches/llvm-runtimes-builtins-build-check.diff b/debian/patches/llvm-runtimes-builtins-build-check.diff new file mode 100644 index 00000000..b4f7eab9 --- /dev/null +++ b/debian/patches/llvm-runtimes-builtins-build-check.diff @@ -0,0 +1,20 @@ +add a check and only set up and build compiler-rt builtins if they have +not been disabled +Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +@@ -131,7 +131,12 @@ endfunction() + # is required because the other runtimes need the builtin libraries present + # before the just-built compiler can pass the configuration tests. + get_compiler_rt_path(compiler_rt_path) +-if(compiler_rt_path) ++# check if builtins have been disabled ++set(RUNTIMES_BUILD_BUILTINS ON) ++if(DEFINED COMPILER_RT_BUILD_BUILTINS) ++ set(RUNTIMES_BUILD_BUILTINS ${COMPILER_RT_BUILD_BUILTINS}) ++endif() ++if(compiler_rt_path AND RUNTIMES_BUILD_BUILTINS) + if(NOT LLVM_BUILTIN_TARGETS) + builtin_default_target(${compiler_rt_path} + DEPENDS clang-resource-headers) diff --git a/debian/patches/series b/debian/patches/series index 260e2d1f..3fd68af1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -147,3 +147,4 @@ openmp-fix-runtimes-build.diff libclc-fix-prepare_builtins-rpath.diff libcxx-libatomic-only-with-gcc-rtlib.diff libcxxabi-fix-link-builtins.diff +llvm-runtimes-builtins-build-check.diff From b2fc856dcecc387ed91531fb2414711c789a89dd Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 20 Oct 2021 19:03:54 -0700 Subject: [PATCH 071/118] patch to fix compiler-rt builtins default arch detection for armhf by adding the same armhf target triple handling used for compiler-rt libs --- .../compilerrt-builtins-arch-fix-armhf.diff | 18 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 19 insertions(+) create mode 100644 debian/patches/compilerrt-builtins-arch-fix-armhf.diff diff --git a/debian/patches/compilerrt-builtins-arch-fix-armhf.diff b/debian/patches/compilerrt-builtins-arch-fix-armhf.diff new file mode 100644 index 00000000..d762b29c --- /dev/null +++ b/debian/patches/compilerrt-builtins-arch-fix-armhf.diff @@ -0,0 +1,18 @@ +fix builtins armhf default arch detection by adding the same armhf triple +handling use for compiler-rt +Index: llvm-toolchain-12_12.0.1/compiler-rt/lib/builtins/CMakeLists.txt +=================================================================== +--- llvm-toolchain-12_12.0.1.orig/compiler-rt/lib/builtins/CMakeLists.txt ++++ llvm-toolchain-12_12.0.1/compiler-rt/lib/builtins/CMakeLists.txt +@@ -16,6 +16,11 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR + + load_llvm_config() + construct_compiler_rt_default_triple() ++ if ("${COMPILER_RT_DEFAULT_TARGET_TRIPLE}" MATCHES ".*hf$") ++ if (${COMPILER_RT_DEFAULT_TARGET_ARCH} MATCHES "^arm") ++ set(COMPILER_RT_DEFAULT_TARGET_ARCH "armhf") ++ endif() ++ endif() + + if(APPLE) + include(CompilerRTDarwinUtils) diff --git a/debian/patches/series b/debian/patches/series index 3fd68af1..b705399e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -148,3 +148,4 @@ libclc-fix-prepare_builtins-rpath.diff libcxx-libatomic-only-with-gcc-rtlib.diff libcxxabi-fix-link-builtins.diff llvm-runtimes-builtins-build-check.diff +compilerrt-builtins-arch-fix-armhf.diff From 018298c1690e6a45af97673e08e981ead773c9f8 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 20 Oct 2021 21:31:26 -0700 Subject: [PATCH 072/118] remove legacy var for use when libcxx was a standalone build --- debian/rules | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/rules b/debian/rules index 7af38c99..806781f4 100755 --- a/debian/rules +++ b/debian/rules @@ -93,9 +93,6 @@ endif # Disable also lto export DEB_BUILD_MAINT_OPTIONS=reproducible=-fixfilepath optimize=-lto -# Cxx flags for building libcxx and libcxxabi -LIBCXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) - ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) lt 4.9-20140411-1~ ; echo $$?),0) # Too old version of gcc. Force 4.9 GCC_VERSION := 4.9 From ba7dad1665a9f40940551f3901a66ed02340b22b Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 20 Oct 2021 21:34:02 -0700 Subject: [PATCH 073/118] update changelog --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 862ab1fd..2f98fa1e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +llvm-toolchain-12 (1:12.0.1-13) unstable; urgency=medium + + * update rules to incorporate relevant arch specific configs from snapshot + * patch llvm runtimes cmake build to add a check and only set up and build + compiler-rt builtins if they have not been disabled in a runtimes build + * patch compiler-rt builtins cmake build to fix default arch detection for + armhf by adding the same target triple handling used for compiler-rt libs + * remove legacy var for use when libcxx was a standalone build + + -- Erik Maciejewski Wed, 20 Oct 2021 09:04:42 -0700 + llvm-toolchain-12 (1:12.0.1-12) unstable; urgency=medium * re-disable building builtins on armel as they still fail (Closes: #996828) From dd07b033af2725f1135acf8be7f93d5b5757164f Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Thu, 21 Oct 2021 20:53:12 -0700 Subject: [PATCH 074/118] flag consinstency pass for build stages and sub-builds utilize dpkg-buildflags for defaults where appropriate and make sure all flags intended for a stage are also applied to the stage's builtins and runtimes builds --- debian/rules | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/debian/rules b/debian/rules index 806781f4..a9f78c28 100755 --- a/debian/rules +++ b/debian/rules @@ -38,10 +38,22 @@ DH_VERSION := $(shell dpkg -s debhelper | grep '^Version' | awk '{print $$2}') include /usr/share/dpkg/architecture.mk CONFIGURE_EXTRA = + +# set up global build flags (dpkg-buildflags) + +# these are handled on a per stage / build basis +export DEB_CFLAGS_MAINT_STRIP=-g -O2 +export DEB_CXXFLAGS_MAINT_STRIP=-g -O2 + +# additional global build flags +export DEB_CFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument +export DEB_CXXFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument +export DEB_LDFLAGS_MAINT_APPEND=-Wl,--build-id + # all stages all builds -CFLAGS_EXTRA = -Wno-unused-command-line-argument -CXXFLAGS_EXTRA = -Wno-unused-command-line-argument -LDFLAGS_EXTRA = -Wno-unused-command-line-argument -Wl,--build-id +CFLAGS_EXTRA = $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) +CXXFLAGS_EXTRA = $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) +LDFLAGS_EXTRA = $(shell dpkg-buildflags --get LDFLAGS) # We use a stage2 build. It means that a first clang is built using gcc, # a second clang is built with the first @@ -503,8 +515,8 @@ override_dh_auto_configure: preconfigure -DLIBOMP_ENABLE_RTTI=OFF \ -DLIBOMP_OMPT_SUPPORT=OFF \ $(CMAKE_EXTRA) \ - -DBUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DRUNTIMES_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ @@ -530,8 +542,8 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ - -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ @@ -562,9 +574,7 @@ debian-full-build: debian-libfuzzer-build: ifeq (${LIBFUZZER_ENABLE},yes) cd $(TARGET_BUILD); \ - CFLAGS=$(STAGE2_CFLAGS_EXTRA); \ - CFLAGS="$$CFLAGS `dpkg-buildflags --get CFLAGS`"; \ - CFLAGS="$$CFLAGS `dpkg-buildflags --get CPPFLAGS`"; \ + CFLAGS="$(opt_flags) $(STAGE2_CFLAGS_EXTRA)"; \ echo $$CFLAGS; \ $(STAGE2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ ar ruv libFuzzer.a Fuzzer*.o @@ -580,8 +590,8 @@ debian-libclc-build: -G $(GENERATOR) \ -DCMAKE_C_COMPILER=$(STAGE2_BIN_DIR)/clang \ -DCMAKE_CXX_COMPILER=$(STAGE2_BIN_DIR)/clang++ \ - -DCMAKE_C_FLAGS="$(STAGE2_CFLAGS_EXTRA)" \ - -DCMAKE_CXX_FLAGS="$(STAGE2_CXXFLAGS_EXTRA)" \ + -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE2_CFLAGS_EXTRA)" \ + -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE2_CXXFLAGS_EXTRA)" \ -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ -DCMAKE_EXE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ From feeebfb2e99ed7426c5cac8a9fbebbab46cc2217 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Thu, 21 Oct 2021 21:14:48 -0700 Subject: [PATCH 075/118] re-enable fixfilepath for use with dpkg-buildflags in debian/rules as it has been supported since clang-10 --- debian/rules | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/debian/rules b/debian/rules index a9f78c28..0db4b516 100755 --- a/debian/rules +++ b/debian/rules @@ -40,11 +40,11 @@ include /usr/share/dpkg/architecture.mk CONFIGURE_EXTRA = # set up global build flags (dpkg-buildflags) - +# disable lto +export DEB_BUILD_MAINT_OPTIONS=optimize=-lto # these are handled on a per stage / build basis export DEB_CFLAGS_MAINT_STRIP=-g -O2 export DEB_CXXFLAGS_MAINT_STRIP=-g -O2 - # additional global build flags export DEB_CFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument export DEB_CXXFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument @@ -100,11 +100,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe risc LDFLAGS_EXTRA += -latomic endif -# Ensure fixfilepath feature is disabled. The fixfilepath feature -# sets a -ffile-prefix-map flag, which is only supported in clang-10. -# Disable also lto -export DEB_BUILD_MAINT_OPTIONS=reproducible=-fixfilepath optimize=-lto - ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) lt 4.9-20140411-1~ ; echo $$?),0) # Too old version of gcc. Force 4.9 GCC_VERSION := 4.9 From 2e88154bccfef6e4e9f0afa961d74fe429c6961c Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Thu, 21 Oct 2021 21:26:22 -0700 Subject: [PATCH 076/118] better naming scheme for stage variables in debian/rules establish a consistent STAGE_[stage]_ prefix naming scheme for stage variables and replace STAGE1_AND_STAGE2_ prefix with STAGE_ALL_ prefix for better future-proofing --- debian/rules | 110 +++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/debian/rules b/debian/rules index 0db4b516..5710a1a4 100755 --- a/debian/rules +++ b/debian/rules @@ -61,22 +61,22 @@ LDFLAGS_EXTRA = $(shell dpkg-buildflags --get LDFLAGS) # See https://llvm.org/docs/AdvancedBuilds.html # stage 1 toolchain build only -STAGE1_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -STAGE1_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -STAGE1_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) +STAGE_1_CFLAGS_EXTRA = $(CFLAGS_EXTRA) +STAGE_1_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) +STAGE_1_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) # stage 2 toolchain and stand-alone builds -STAGE2_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -STAGE2_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -STAGE2_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) +STAGE_2_CFLAGS_EXTRA = $(CFLAGS_EXTRA) +STAGE_2_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) +STAGE_2_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) # toolchain build cmake options -STAGE1_CMAKE_EXTRA = -STAGE2_CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 -STAGE1_AND_STAGE2_CMAKE_EXTRA = +STAGE_1_CMAKE_EXTRA = +STAGE_2_CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 +STAGE_ALL_CMAKE_EXTRA = # build-only var combining all first stage cmake options -CMAKE_EXTRA = $(STAGE1_CMAKE_EXTRA) $(STAGE1_AND_STAGE2_CMAKE_EXTRA) +CMAKE_EXTRA = $(STAGE_1_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA) # build-only var prepending BOOTSTRAP_ prefix to all stage 2 cmake vars -BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE2_CMAKE_EXTRA) $(STAGE1_AND_STAGE2_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) +BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE_2_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) BASE_PATH := $(CURDIR) STAGE1_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD)/bin @@ -90,7 +90,7 @@ LIBCXX_EXCEPTIONS := ON LIBCXX_USE_COMPILER_RT := ON ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) -STAGE1_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 +STAGE_1_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 endif ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) @@ -112,14 +112,14 @@ ifneq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) Z3_FLAG = -DLLVM_ENABLE_Z3_SOLVER=ON endif endif -STAGE2_CMAKE_EXTRA += $(Z3_FLAG) +STAGE_2_CMAKE_EXTRA += $(Z3_FLAG) # Change the default CPU for s390x ZARCH=z196 ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) ZARCH=z13 endif -STAGE2_CMAKE_EXTRA += -DCLANG_SYSTEMZ_DEFAULT_ARCH=$(ZARCH) +STAGE_2_CMAKE_EXTRA += -DCLANG_SYSTEMZ_DEFAULT_ARCH=$(ZARCH) export CC=gcc-$(GCC_VERSION) export CXX=g++-$(GCC_VERSION) @@ -129,37 +129,37 @@ opt_flags = -O2 -DNDEBUG -g1 ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # https://wiki.debian.org/ArmEabiPort # since debian buster (10) armel baseline is 5T - STAGE2_CFLAGS_EXTRA += -march=armv5t - STAGE2_CXXFLAGS_EXTRA += -march=armv5t - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON + STAGE_2_CFLAGS_EXTRA += -march=armv5t + STAGE_2_CXXFLAGS_EXTRA += -march=armv5t + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON # 12 still failing to build, disable the compiler_rt builtins # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF # See https://bugs.llvm.org/show_bug.cgi?id=52022 LIBCXX_USE_COMPILER_RT := OFF endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabihf - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabihf + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif ifneq (,$(filter $(DEB_HOST_ARCH),i386)) # Sometimes, i386 needs help with the triple - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=i386-linux-gnu + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=i386-linux-gnu endif ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) # avoid an issue with search path on mips64el # https://bugs.llvm.org/show_bug.cgi?id=41204 - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif ifneq (,$(filter $(DEB_HOST_ARCH),x32)) - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 + STAGE_ALL_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 # See https://bugs.llvm.org/show_bug.cgi?id=52022 LIBCXX_USE_COMPILER_RT := OFF endif @@ -194,8 +194,8 @@ endif 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))) - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ + STAGE_ALL_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold + STAGE_ALL_CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ endif endif @@ -208,7 +208,7 @@ ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) LDFLAGS_EXTRA += -coverage -lgcov RUN_TEST=yes # OpenMP doesn't respect LDFLAGS - STAGE2_CMAKE_EXTRA+= -DLIBOMP_LDFLAGS="-coverage -lgcov" # don't pass LDFLAGS_EXTRA because it expects gcc arg + STAGE_2_CMAKE_EXTRA+= -DLIBOMP_LDFLAGS="-coverage -lgcov" # don't pass LDFLAGS_EXTRA because it expects gcc arg endif # Enable polly (or not) @@ -225,7 +225,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sp LIBUNWIND_ENABLE=no else RUNTIMES += ;libunwind - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON + STAGE_ALL_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON endif # Enable openmp (or not) @@ -234,9 +234,9 @@ ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x OPENMP_ENABLE=no else RUNTIMES+=;openmp - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" + STAGE_ALL_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" ifeq ($(LIBUNWIND_ENABLE),yes) - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DOPENMP_USE_LLVM_UNWINDER=ON + STAGE_ALL_CMAKE_EXTRA += -DOPENMP_USE_LLVM_UNWINDER=ON endif endif @@ -266,7 +266,7 @@ ifneq (,$(filter scan-build,$(DEB_BUILD_OPTIONS))) # no need to run tests in this case RUN_TEST=no CONFIGURE_EXTRA += --enable-assertions - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON + STAGE_ALL_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON endif ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) @@ -279,7 +279,7 @@ ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) PRE_PROCESS_CONF= COVERITY_ENABLE=1 CONFIGURE_EXTRA += --enable-assertions - STAGE1_AND_STAGE2_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON + STAGE_ALL_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON # no need to run tests in this case RUN_TEST=no else @@ -300,7 +300,7 @@ LLD_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH_OS),linux)) # only for linux - STAGE2_CMAKE_EXTRA += -DLLVM_USE_PERF=ON -DLLVM_ENABLE_LIBPFM=ON + STAGE_2_CMAKE_EXTRA += -DLLVM_USE_PERF=ON -DLLVM_ENABLE_LIBPFM=ON endif # Only enable it for archs supporting gold @@ -314,7 +314,7 @@ ifeq (,$(filter $(DEB_HOST_ARCH), armhf)) # * LLVM_ENABLE_LTO doesn't work with gcc >= 9 (option not accepted) # * BOOTSTRAP_LLVM_ENABLE_LTO is producing some large binary # See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=943623 -# STAGE2_CMAKE_EXTRA += -DLLVM_ENABLE_LTO="Thin" +# STAGE_2_CMAKE_EXTRA += -DLLVM_ENABLE_LTO="Thin" endif endif @@ -466,11 +466,11 @@ override_dh_auto_configure: preconfigure -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_FLAGS="$(STAGE1_CFLAGS_EXTRA)" \ - -DCMAKE_CXX_FLAGS="$(STAGE1_CXXFLAGS_EXTRA)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE1_LDFLAGS_EXTRA)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE1_LDFLAGS_EXTRA)" \ - -DCMAKE_EXE_LINKER_FLAGS="$(STAGE1_LDFLAGS_EXTRA)" \ + -DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS_EXTRA)" \ + -DCMAKE_CXX_FLAGS="$(STAGE_1_CXXFLAGS_EXTRA)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \ -DPACKAGE_VENDOR=$(VENDOR) \ -DENABLE_LINKER_BUILD_ID=ON \ -DLLVM_TARGETS_TO_BUILD=Native \ @@ -510,18 +510,18 @@ override_dh_auto_configure: preconfigure -DLIBOMP_ENABLE_RTTI=OFF \ -DLIBOMP_OMPT_SUPPORT=OFF \ $(CMAKE_EXTRA) \ - -DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ - -DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE2_CFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE2_CXXFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE_2_CFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE_2_CXXFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \ -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ -DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \ @@ -537,8 +537,8 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ - -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ @@ -569,7 +569,7 @@ debian-full-build: debian-libfuzzer-build: ifeq (${LIBFUZZER_ENABLE},yes) cd $(TARGET_BUILD); \ - CFLAGS="$(opt_flags) $(STAGE2_CFLAGS_EXTRA)"; \ + CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)"; \ echo $$CFLAGS; \ $(STAGE2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ ar ruv libFuzzer.a Fuzzer*.o @@ -585,11 +585,11 @@ debian-libclc-build: -G $(GENERATOR) \ -DCMAKE_C_COMPILER=$(STAGE2_BIN_DIR)/clang \ -DCMAKE_CXX_COMPILER=$(STAGE2_BIN_DIR)/clang++ \ - -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE2_CFLAGS_EXTRA)" \ - -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE2_CXXFLAGS_EXTRA)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ - -DCMAKE_EXE_LINKER_FLAGS="$(STAGE2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)" \ + -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS_EXTRA)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ From 9a1ae924d45bf9e6ef3f07605324c95e1829a947 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 22 Oct 2021 03:00:18 -0700 Subject: [PATCH 077/118] add explicit s390x build options to debian/rules, set LLVM_HOST_TRIPLE=s390x-linux-gnu and COMPILER_RT_DEFAULT_TARGET_ONLY=ON so that builtins are only built for the explicit host arch --- debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/rules b/debian/rules index 5710a1a4..fb767457 100755 --- a/debian/rules +++ b/debian/rules @@ -165,6 +165,8 @@ ifneq (,$(filter $(DEB_HOST_ARCH),x32)) endif ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=s390x-linux-gnu + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON LIBCXX_EXCEPTIONS := OFF # See https://bugs.llvm.org/show_bug.cgi?id=52022 LIBCXX_USE_COMPILER_RT := OFF From 5f699155e273a4a25bed794ea651ef565342fed7 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 22 Oct 2021 03:13:53 -0700 Subject: [PATCH 078/118] update changelog --- debian/changelog | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2f98fa1e..80d9e4dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,20 @@ +llvm-toolchain-12 (1:12.0.1-14) unstable; urgency=medium + + * fix build flag inconsistencies (potentially causing build failures) by + utilizing dpkg-buildflags for defaults where appropriate and making sure all + flags intended for a given stage are also applied to the stage's builtins + and runtimes builds + * re-enable fixfilepath for use with dpkg-buildflags in debian/rules as it has + been supported since clang-10 + * establish a consistent STAGE_[stage]_ prefix naming scheme for stage + variables and replace STAGE1_AND_STAGE2_ prefix with STAGE_ALL_ prefix for + better future-proofing in debian/rules + * add explicit s390x build options to debian/rules, set + LLVM_HOST_TRIPLE=s390x-linux-gnu and COMPILER_RT_DEFAULT_TARGET_ONLY=ON + so that builtins are only built for the explicit host arch (Closes: #996802) + + -- Erik Maciejewski Fri, 22 Oct 2021 03:12:48 -0700 + llvm-toolchain-12 (1:12.0.1-13) unstable; urgency=medium * update rules to incorporate relevant arch specific configs from snapshot From 35a8b4a6fcb54bae9073fc5ddba71244576d4b79 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 22 Oct 2021 04:46:21 -0700 Subject: [PATCH 079/118] modify stage dir var names to use new prefix scheme in debian/rules --- debian/changelog | 1 + debian/rules | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/debian/changelog b/debian/changelog index 80d9e4dd..6c2c49d7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,7 @@ llvm-toolchain-12 (1:12.0.1-14) unstable; urgency=medium * establish a consistent STAGE_[stage]_ prefix naming scheme for stage variables and replace STAGE1_AND_STAGE2_ prefix with STAGE_ALL_ prefix for better future-proofing in debian/rules + * modify stage dir var names to use new prefix scheme in debian/rules * add explicit s390x build options to debian/rules, set LLVM_HOST_TRIPLE=s390x-linux-gnu and COMPILER_RT_DEFAULT_TARGET_ONLY=ON so that builtins are only built for the explicit host arch (Closes: #996802) diff --git a/debian/rules b/debian/rules index fb767457..fd5cb8e0 100755 --- a/debian/rules +++ b/debian/rules @@ -79,10 +79,10 @@ CMAKE_EXTRA = $(STAGE_1_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA) BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE_2_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) BASE_PATH := $(CURDIR) -STAGE1_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD)/bin -STAGE1_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD)/lib -STAGE2_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin -STAGE2_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/lib +STAGE_1_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD)/bin +STAGE_1_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD)/lib +STAGE_2_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin +STAGE_2_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/lib # toggleable defaults COMPILER_RT_USE_BUILTINS_LIBRARY := ON @@ -540,7 +540,7 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ @@ -554,7 +554,7 @@ VERBOSE=-v debian-full-build: echo "Using cmake: $(CMAKE_BIN)" # linker hack so stage2 can link against stage1 libs at runtime - LD_LIBRARY_PATH=$(STAGE1_LIB_DIR):$$LD_LIBRARY_PATH \ + LD_LIBRARY_PATH=$(STAGE_1_LIB_DIR):$$LD_LIBRARY_PATH \ VERBOSE=1 $(PRE_PROCESS) $(CMAKE_BIN) --build $(TARGET_BUILD) $(NJOBS) --target stage2 # Check the stage 2 build worked @@ -573,7 +573,7 @@ ifeq (${LIBFUZZER_ENABLE},yes) cd $(TARGET_BUILD); \ CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)"; \ echo $$CFLAGS; \ - $(STAGE2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ + $(STAGE_2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ ar ruv libFuzzer.a Fuzzer*.o endif touch $@ @@ -585,17 +585,17 @@ debian-libclc-build: cd libclc/build && \ $(CMAKE_BIN) ../ \ -G $(GENERATOR) \ - -DCMAKE_C_COMPILER=$(STAGE2_BIN_DIR)/clang \ - -DCMAKE_CXX_COMPILER=$(STAGE2_BIN_DIR)/clang++ \ + -DCMAKE_C_COMPILER=$(STAGE_2_BIN_DIR)/clang \ + -DCMAKE_CXX_COMPILER=$(STAGE_2_BIN_DIR)/clang++ \ -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)" \ -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS_EXTRA)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ - -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE2_LIB_DIR)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ - -DLLVM_CONFIG=$(STAGE2_BIN_DIR)/llvm-config \ + -DLLVM_CONFIG=$(STAGE_2_BIN_DIR)/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ ninja $(NJOBS) $(VERBOSE) touch $@ From 4baa08eb6f13c1210f840a663ef0afe446a725f9 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 10:35:38 +0200 Subject: [PATCH 080/118] Disable lldb on mipsel and mips64el as it isn't supported See https://reviews.llvm.org/D102872 (Closes: #997011) --- debian/changelog | 8 ++++++++ debian/rules | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2a4332df..789089d5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +llvm-toolchain-13 (1:13.0.0-8) unstable; urgency=medium + + * Disable lldb on mipsel and mips64el as it isn't supported + See https://reviews.llvm.org/D102872 + (Closes: #997011) + + -- Sylvestre Ledru Sat, 23 Oct 2021 10:33:56 +0200 + llvm-toolchain-13 (1:13.0.0-7) unstable; urgency=medium * Remove omp-device-info from LLVMExports.cmake (Closes: #996551) diff --git a/debian/rules b/debian/rules index e0c791cf..ea9f7bde 100755 --- a/debian/rules +++ b/debian/rules @@ -262,7 +262,7 @@ else endif LLDB_ENABLE=yes -LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 +LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 mips64el mipsel # hurd has threading issues ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch. From 659305bc0841aa0415ccb9a90c76b6b4c5349fee Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 10:35:38 +0200 Subject: [PATCH 081/118] Disable lldb on mipsel and mips64el as it isn't supported See https://reviews.llvm.org/D102872 (Closes: #997011) --- debian/changelog | 8 ++++++++ debian/rules | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6c2c49d7..6da66266 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +llvm-toolchain-13 (1:13.0.0-8) unstable; urgency=medium + + * Disable lldb on mipsel and mips64el as it isn't supported + See https://reviews.llvm.org/D102872 + (Closes: #997011) + + -- Sylvestre Ledru Sat, 23 Oct 2021 10:33:56 +0200 + llvm-toolchain-12 (1:12.0.1-14) unstable; urgency=medium * fix build flag inconsistencies (potentially causing build failures) by diff --git a/debian/rules b/debian/rules index fd5cb8e0..e64efa9d 100755 --- a/debian/rules +++ b/debian/rules @@ -289,7 +289,7 @@ else endif LLDB_ENABLE=yes -LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 +LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 mips64el mipsel # hurd has threading issues ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch. From 1e06e0a7e7ba7d70bfd6e2012c94cfce196be792 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 13:09:28 +0200 Subject: [PATCH 082/118] disable lldb on mips*: also update control --- debian/control | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/debian/control b/debian/control index da6f60fc..337f2a03 100644 --- a/debian/control +++ b/debian/control @@ -497,8 +497,8 @@ Description: LLVM-based linker, header files # ------------- lldb ------------- Package: lldb-13 -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 s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm13 (= ${binary:Version}), llvm-13-dev, python3-lldb-13 Pre-Depends: ${misc:Pre-Depends} @@ -508,8 +508,8 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-13 -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 s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm13 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -522,8 +522,8 @@ Description: Next generation, high-performance debugger, library Package: python3-lldb-13 Section: python -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 s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, ${python3:Depends}, liblldb-13 (= ${binary:Version}), python3-six Conflicts: python3-lldb-x.y Replaces: python3-lldb-x.y @@ -538,8 +538,8 @@ Description: Next generation, high-performance debugger, python3 lib Package: liblldb-13-dev Section: libdevel -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 s390x sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-13 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Description: Next generation, high-performance debugger, header files From fa65a721e987b7a44b67942687cf1f2ccf44e14c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 13:09:45 +0200 Subject: [PATCH 083/118] fix changelog --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6da66266..1452410a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-13 (1:13.0.0-8) unstable; urgency=medium +llvm-toolchain-12 (1:12.0.1-15) unstable; urgency=medium * Disable lldb on mipsel and mips64el as it isn't supported See https://reviews.llvm.org/D102872 From c9086c29ede4e6dcb7969d2828a1243132aa6d86 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 13:09:28 +0200 Subject: [PATCH 084/118] disable lldb on mips*: also update control --- debian/control | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/debian/control b/debian/control index 6e60288b..51798c4a 100644 --- a/debian/control +++ b/debian/control @@ -499,8 +499,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 -# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 mips ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}), llvm-12-dev, python3-lldb-12 Pre-Depends: ${misc:Pre-Depends} @@ -510,8 +510,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 -# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -524,8 +524,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 -# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 mipsel mips64el 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 @@ -540,8 +540,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 -# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 have been removed +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 mipsel mips64el 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 From cd137e1365535027ab90d432365b2564bf591cd5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 13:12:17 +0200 Subject: [PATCH 085/118] remove old references to 'mips' --- debian/control | 10 +++++----- debian/rules | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/debian/control b/debian/control index 51798c4a..d12af64a 100644 --- a/debian/control +++ b/debian/control @@ -14,7 +14,7 @@ Build-Depends: debhelper (>= 9.0), cmake, ninja-build, libxml2-dev, libjsoncpp-dev, pkg-config, lcov, procps, help2man, zlib1g-dev, - g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel powerpc ppc64 s390 s390x sparc sparc64 x32], + g++-multilib [amd64 i386 kfreebsd-amd64 mips64 mips64el mipsel powerpc ppc64 s390 s390x sparc sparc64 x32], libjs-mathjax, python3-recommonmark, doxygen, gfortran, ocaml-nox [amd64 arm64 armhf ppc64el riscv64 s390x], @@ -459,7 +459,7 @@ Description: Modular compiler and toolchain technologies, examples # ------------- lld ------------- Package: lld-12 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 riscv64 +Architecture: amd64 arm64 armel armhf i386 mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 riscv64 # ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} @@ -469,7 +469,7 @@ Description: LLVM-based linker Project. Package: liblld-12 -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 riscv64 +Architecture: amd64 arm64 armel armhf i386 mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 riscv64 # ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} @@ -483,7 +483,7 @@ Description: LLVM-based linker, library Package: liblld-12-dev Section: libdevel -Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 riscv64 +Architecture: amd64 arm64 armel armhf i386 mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 riscv64 # ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lld-12 (= ${binary:Version}), liblld-12 (= ${binary:Version}) @@ -499,7 +499,7 @@ Description: LLVM-based linker, header files # ------------- lldb ------------- Package: lldb-12 -Architecture: amd64 arm64 armel armhf i386 mips ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 +Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 # ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 sparc64 mipsel mips64el have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm12 (= ${binary:Version}), llvm-12-dev, python3-lldb-12 diff --git a/debian/rules b/debian/rules index e64efa9d..34c27422 100755 --- a/debian/rules +++ b/debian/rules @@ -93,7 +93,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) STAGE_1_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 endif -ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mips mipsel powerpc powerpcspe riscv64)) +ifneq (,$(filter $(DEB_HOST_ARCH),i386 armel mipsel powerpc powerpcspe riscv64)) # For some reason, in the stage2 build, when clang is used to compile # itself. The atomic detection is failing on armel and riscv64. Forcing the inclusion # everywhere and in all stages @@ -232,7 +232,7 @@ endif # Enable openmp (or not) OPENMP_ENABLE=yes -ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpc powerpcspe sparc64 s390x x32)) +ifneq (,$(filter $(DEB_HOST_ARCH), mipsel powerpc powerpcspe sparc64 s390x x32)) OPENMP_ENABLE=no else RUNTIMES+=;openmp @@ -335,7 +335,7 @@ ifeq (,$(filter $(DEB_HOST_ARCH_OS),linux)) LIBFUZZER_ENABLE=no endif -ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel)) +ifneq (,$(filter $(DEB_HOST_ARCH), mipsel)) LIBOMP_ARCH = mips endif From 6558504cac899becbe567ce39bbffd06e5793ea5 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 22 Oct 2021 15:47:32 -0700 Subject: [PATCH 086/118] disable builtins for unsupported arch s390x --- debian/rules | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/debian/rules b/debian/rules index 34c27422..30902691 100755 --- a/debian/rules +++ b/debian/rules @@ -133,7 +133,7 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) STAGE_2_CXXFLAGS_EXTRA += -march=armv5t STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON -# 12 still failing to build, disable the compiler_rt builtins +# disable compiler-rt builtins (not supported for baseline armel arch: armv5t) # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF @@ -157,17 +157,19 @@ ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif -ifneq (,$(filter $(DEB_HOST_ARCH),x32)) - STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 - STAGE_ALL_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 -# See https://bugs.llvm.org/show_bug.cgi?id=52022 - LIBCXX_USE_COMPILER_RT := OFF -endif - ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=s390x-linux-gnu STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON LIBCXX_EXCEPTIONS := OFF +# disable compiler-rt builtins (not supported for s390x) + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF + COMPILER_RT_USE_BUILTINS_LIBRARY := OFF + LIBCXX_USE_COMPILER_RT := OFF +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),x32)) + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 + STAGE_ALL_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 # See https://bugs.llvm.org/show_bug.cgi?id=52022 LIBCXX_USE_COMPILER_RT := OFF endif From b7363248b115339c4fb838fcd3ae43671eedae0a Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 22 Oct 2021 15:50:03 -0700 Subject: [PATCH 087/118] set arm toolchain arch profiles explicitly to debian baselines as the target host triples alone are ambiguous and compiler defaults and debian baselines may not align --- debian/rules | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/debian/rules b/debian/rules index 30902691..574384c0 100755 --- a/debian/rules +++ b/debian/rules @@ -127,12 +127,12 @@ export CXX=g++-$(GCC_VERSION) opt_flags = -O2 -DNDEBUG -g1 ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) -# https://wiki.debian.org/ArmEabiPort -# since debian buster (10) armel baseline is 5T - STAGE_2_CFLAGS_EXTRA += -march=armv5t - STAGE_2_CXXFLAGS_EXTRA += -march=armv5t STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON +# align arch profile with debian baseline +# https://wiki.debian.org/ArmEabiPort + CFLAGS_EXTRA += -march=armv5t + CXXFLAGS_EXTRA += -march=armv5t # disable compiler-rt builtins (not supported for baseline armel arch: armv5t) # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF @@ -144,6 +144,10 @@ endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabihf STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON +# align arch profile with debian baseline +# https://wiki.debian.org/ArmHardFloatPort#Minimum_CPU_.26_FPU + CFLAGS_EXTRA += -march=armv7-a -mfpu=vfpv3-d16 + CXXFLAGS_EXTRA += -march=armv7-a -mfpu=vfpv3-d16 endif ifneq (,$(filter $(DEB_HOST_ARCH),i386)) From 36bdfcce52b2cc0175b6220eb7e0318425dff1fe Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sat, 23 Oct 2021 12:48:33 -0700 Subject: [PATCH 088/118] add arch specific config for powerpc to force correct arch profile for builtins --- debian/rules | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/rules b/debian/rules index 574384c0..a326a368 100755 --- a/debian/rules +++ b/debian/rules @@ -161,6 +161,11 @@ ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc)) + STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=powerpc-linux-gnu + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON +endif + ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=s390x-linux-gnu STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON From 14aeabd6c88aacab9a1a980301e589b24a6e5f68 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 24 Oct 2021 00:08:40 -0700 Subject: [PATCH 089/118] set LIBCXX_USE_COMPILER_RT to OFF to disable builtins when libunwind is not enabled since the unwind implementation with gnu builtins will then be required --- debian/rules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index a326a368..1cfc778d 100755 --- a/debian/rules +++ b/debian/rules @@ -137,7 +137,6 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF -# See https://bugs.llvm.org/show_bug.cgi?id=52022 LIBCXX_USE_COMPILER_RT := OFF endif @@ -179,8 +178,6 @@ endif ifneq (,$(filter $(DEB_HOST_ARCH),x32)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 STAGE_ALL_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 -# See https://bugs.llvm.org/show_bug.cgi?id=52022 - LIBCXX_USE_COMPILER_RT := OFF endif ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.8-20121128-1~ ; echo $$?),0) @@ -236,6 +233,9 @@ endif LIBUNWIND_ENABLE=yes ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel mipsel hurd-i386 powerpc sparc sparc64 x32)) LIBUNWIND_ENABLE=no +# do not use compiler-rt builtins for libcxx (libcxxabi) when libunwind is +# disabled since the gnu implementation in libgcc_s will then be required + LIBCXX_USE_COMPILER_RT := OFF else RUNTIMES += ;libunwind STAGE_ALL_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON From 5b59bd3630b57d8d581a67c05ec6ba4a69d1110e Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 24 Oct 2021 02:38:55 -0700 Subject: [PATCH 090/118] update changelog --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1452410a..7b6fbd97 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,17 @@ llvm-toolchain-12 (1:12.0.1-15) unstable; urgency=medium See https://reviews.llvm.org/D102872 (Closes: #997011) + [ Erik Maciejewski ] + * disable compiler-rt builtins for unsupported arch s390x in debian/rules + * set arm toolchain arch profiles explicitly to debian baselines in + debian/rules as the target host triples alone are ambiguous and compiler + defaults and debian baselines may not align + * add arch specific config for powerpc to debian/rules and set host target + triple and compiler-rt config to force correct arch profile for builtins + * set LIBCXX_USE_COMPILER_RT to OFF in debian/rules to disable builtins when + libunwind is not enabled since the unwind implementation with gnu builtins + will then be required + -- Sylvestre Ledru Sat, 23 Oct 2021 10:33:56 +0200 llvm-toolchain-12 (1:12.0.1-14) unstable; urgency=medium From 5088c762224eb5fe12d9e0dbe70e274c106145fe Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 24 Oct 2021 19:55:40 -0700 Subject: [PATCH 091/118] dpkg-buildflags cleanup use make variables populated by /usr/share/dpkg/buildflags.mk and remove _EXTRA suffix from STAGE_1_ and STAGE_2_ flag vars --- debian/rules | 88 +++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/debian/rules b/debian/rules index 1cfc778d..57d966fe 100755 --- a/debian/rules +++ b/debian/rules @@ -39,43 +39,42 @@ include /usr/share/dpkg/architecture.mk CONFIGURE_EXTRA = -# set up global build flags (dpkg-buildflags) +# dpkg-buildflags support # disable lto -export DEB_BUILD_MAINT_OPTIONS=optimize=-lto +export DEB_BUILD_MAINT_OPTIONS = optimize=-lto # these are handled on a per stage / build basis -export DEB_CFLAGS_MAINT_STRIP=-g -O2 -export DEB_CXXFLAGS_MAINT_STRIP=-g -O2 -# additional global build flags -export DEB_CFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument -export DEB_CXXFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument -export DEB_LDFLAGS_MAINT_APPEND=-Wl,--build-id +export DEB_CFLAGS_MAINT_STRIP = -g -O2 +export DEB_CXXFLAGS_MAINT_STRIP = -g -O2 -# all stages all builds -CFLAGS_EXTRA = $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -CXXFLAGS_EXTRA = $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -LDFLAGS_EXTRA = $(shell dpkg-buildflags --get LDFLAGS) +include /usr/share/dpkg/buildflags.mk # We use a stage2 build. It means that a first clang is built using gcc, # a second clang is built with the first # And the various compoments are built using the second clang. # See https://llvm.org/docs/AdvancedBuilds.html -# stage 1 toolchain build only -STAGE_1_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -STAGE_1_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -STAGE_1_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) -# stage 2 toolchain and stand-alone builds -STAGE_2_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -STAGE_2_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -STAGE_2_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA) +# collect additional flags for all stages all builds +CFLAGS_EXTRA = -Wno-unused-command-line-argument +CXXFLAGS_EXTRA = -Wno-unused-command-line-argument +LDFLAGS_EXTRA = -Wl,--build-id -# toolchain build cmake options +# collect all flags for stage 1 toolchain build only +STAGE_1_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS) +STAGE_1_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS) +STAGE_1_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA) + +# collect all flags for stage 2 toolchain and stand-alone builds +STAGE_2_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS) +STAGE_2_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS) +STAGE_2_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA) + +# collect additional cmake options for toolchain build configuration STAGE_1_CMAKE_EXTRA = STAGE_2_CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 STAGE_ALL_CMAKE_EXTRA = -# build-only var combining all first stage cmake options +# toolchain config-only var combining all stage 1 cmake options CMAKE_EXTRA = $(STAGE_1_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA) -# build-only var prepending BOOTSTRAP_ prefix to all stage 2 cmake vars +# toolchain config-only var prepending BOOTSTRAP_ to all stage 2 cmake options BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE_2_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) BASE_PATH := $(CURDIR) @@ -470,20 +469,17 @@ override_dh_auto_configure: preconfigure echo "Running tests: $(RUN_TEST)" echo "Using cmake: $(CMAKE_BIN)"; \ - CFLAGS="$(CFLAGS_EXTRA)" \ - CXXFLAGS="$(CXXFLAGS_EXTRA)" \ - LDFLAGS="$(LDFLAGS_EXTRA)" \ LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \ $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ -G $(GENERATOR) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS_EXTRA)" \ - -DCMAKE_CXX_FLAGS="$(STAGE_1_CXXFLAGS_EXTRA)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \ - -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \ + -DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(STAGE_1_CXXFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \ -DPACKAGE_VENDOR=$(VENDOR) \ -DENABLE_LINKER_BUILD_ID=ON \ -DLLVM_TARGETS_TO_BUILD=Native \ @@ -523,18 +519,18 @@ override_dh_auto_configure: preconfigure -DLIBOMP_ENABLE_RTTI=OFF \ -DLIBOMP_OMPT_SUPPORT=OFF \ $(CMAKE_EXTRA) \ - -DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ - -DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE_2_CFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE_2_CXXFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \ - -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \ + -DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE_2_CFLAGS)" \ + -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE_2_CXXFLAGS)" \ + -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \ + -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \ + -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \ -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ -DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \ @@ -550,8 +546,8 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ $(BOOTSTRAP_CMAKE_EXTRA) \ - -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ @@ -582,7 +578,7 @@ debian-full-build: debian-libfuzzer-build: ifeq (${LIBFUZZER_ENABLE},yes) cd $(TARGET_BUILD); \ - CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)"; \ + CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS)"; \ echo $$CFLAGS; \ $(STAGE_2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \ ar ruv libFuzzer.a Fuzzer*.o @@ -598,11 +594,11 @@ debian-libclc-build: -G $(GENERATOR) \ -DCMAKE_C_COMPILER=$(STAGE_2_BIN_DIR)/clang \ -DCMAKE_CXX_COMPILER=$(STAGE_2_BIN_DIR)/clang++ \ - -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)" \ - -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS_EXTRA)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \ - -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \ + -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ From 8fdac930acf4971d51e0a5ab17c457521d1e9c83 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 24 Oct 2021 20:03:08 -0700 Subject: [PATCH 092/118] cmake options cleanup remove some redundant cmake options (options with the same value as their default) from, and move PYTHON_EXECUTABLE cmake option to, the cmake configure command --- debian/rules | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/debian/rules b/debian/rules index 57d966fe..e988d8b3 100755 --- a/debian/rules +++ b/debian/rules @@ -70,7 +70,7 @@ STAGE_2_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA) # collect additional cmake options for toolchain build configuration STAGE_1_CMAKE_EXTRA = -STAGE_2_CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3 +STAGE_2_CMAKE_EXTRA = STAGE_ALL_CMAKE_EXTRA = # toolchain config-only var combining all stage 1 cmake options CMAKE_EXTRA = $(STAGE_1_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA) @@ -500,14 +500,11 @@ override_dh_auto_configure: preconfigure -DCOMPILER_RT_INCLUDE_TESTS=OFF \ -DCOMPILER_RT_USE_LIBCXX=OFF \ -DCOMPILER_RT_USE_BUILTINS_LIBRARY=$(COMPILER_RT_USE_BUILTINS_LIBRARY) \ - -DLIBUNWIND_ENABLE_SHARED=ON \ -DLIBUNWIND_USE_COMPILER_RT=ON \ -DLIBUNWIND_INSTALL_LIBRARY=OFF \ - -DLIBCXXABI_ENABLE_SHARED=ON \ -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DLIBCXXABI_USE_COMPILER_RT=$(LIBCXX_USE_COMPILER_RT) \ -DLIBCXXABI_INSTALL_LIBRARY=OFF \ - -DLIBCXX_ENABLE_SHARED=ON \ -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DLIBCXX_USE_COMPILER_RT=$(LIBCXX_USE_COMPILER_RT) \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ @@ -523,6 +520,7 @@ override_dh_auto_configure: preconfigure -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI" \ -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ @@ -545,10 +543,11 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ + -DBOOTSTRAP_PYTHON_EXECUTABLE=/usr/bin/python3 \ $(BOOTSTRAP_CMAKE_EXTRA) \ -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE" + -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" + FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ From 27687a106d97892d89d726bb5c1a9da2fb2b2f67 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Mon, 25 Oct 2021 16:09:12 -0700 Subject: [PATCH 093/118] re-disable fixfilepath disable fixfilepath in dpkg-buildflags in favor of using the more llvm aware implementation provided by the llvm-project by setting LLVM_USE_RELATIVE_PATHS_IN_FILES=ON in both stages of the toolchain build --- debian/rules | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index e988d8b3..0d4a140f 100755 --- a/debian/rules +++ b/debian/rules @@ -40,8 +40,8 @@ include /usr/share/dpkg/architecture.mk CONFIGURE_EXTRA = # dpkg-buildflags support -# disable lto -export DEB_BUILD_MAINT_OPTIONS = optimize=-lto +# disable fixfilepath in favor of the llvm-project supplied flavor, disable lto +export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto # these are handled on a per stage / build basis export DEB_CFLAGS_MAINT_STRIP = -g -O2 export DEB_CXXFLAGS_MAINT_STRIP = -g -O2 @@ -490,6 +490,7 @@ override_dh_auto_configure: preconfigure -DLVVM_ENABLE_ZLIB=OFF \ -DLLVM_BUILD_DOCS=OFF \ -DLLVM_INCLUDE_GO_TESTS=OFF \ + -DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ -DCLANG_PLUGIN_SUPPORT=OFF \ -DCLANG_BUILD_EXAMPLES=OFF \ @@ -520,7 +521,7 @@ override_dh_auto_configure: preconfigure -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI" \ + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;LLVM_USE_RELATIVE_PATHS_IN_FILES;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI" \ -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ From 561e241958a822391024a327f521d0584888852a Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Tue, 26 Oct 2021 12:16:55 -0700 Subject: [PATCH 094/118] update changelog --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7b6fbd97..04a53d59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +llvm-toolchain-12 (1:12.0.1-16) unstable; urgency=medium + + * use make variables populated by /usr/share/dpkg/buildflags.mk and remove + _EXTRA suffix from STAGE_1_ and STAGE_2_ flag vars to improve clarity and + readability for the multi-stage setup in debian/rules + * remove some redundant cmake options (options with the same value as their + default) from, and move PYTHON_EXECUTABLE cmake option to, the cmake + configure command in debian/rules + * re-disable fixfilepath in dpkg-buildflags in favor of using the more llvm + aware implementation provided by the llvm-project by setting + LLVM_USE_RELATIVE_PATHS_IN_FILES=ON in both stages of the toolchain + build in debian/rules + + -- Erik Maciejewski Tue, 26 Oct 2021 12:14:18 -0700 + llvm-toolchain-12 (1:12.0.1-15) unstable; urgency=medium * Disable lldb on mipsel and mips64el as it isn't supported From 159a8dd7ea99703ede3b85047875a21349754933 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 28 Oct 2021 16:46:26 +0200 Subject: [PATCH 095/118] autopkgtest/integration-test-suite-test: restrict to arm64/amd64 for now --- debian/changelog | 6 +++++- debian/tests/control | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 04a53d59..ac32c824 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ llvm-toolchain-12 (1:12.0.1-16) unstable; urgency=medium + [ Erik Maciejewski ] * use make variables populated by /usr/share/dpkg/buildflags.mk and remove _EXTRA suffix from STAGE_1_ and STAGE_2_ flag vars to improve clarity and readability for the multi-stage setup in debian/rules @@ -11,7 +12,10 @@ llvm-toolchain-12 (1:12.0.1-16) unstable; urgency=medium LLVM_USE_RELATIVE_PATHS_IN_FILES=ON in both stages of the toolchain build in debian/rules - -- Erik Maciejewski Tue, 26 Oct 2021 12:14:18 -0700 + [ Sylvestre Ledru ] + * autopkgtest/integration-test-suite-test: restrict to arm64/amd64 for now + + -- Sylvestre Ledru Thu, 28 Oct 2021 16:45:49 +0200 llvm-toolchain-12 (1:12.0.1-15) unstable; urgency=medium diff --git a/debian/tests/control b/debian/tests/control index 8af2a823..1ffcef79 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -8,6 +8,7 @@ Restrictions: allow-stderr Tests: integration-test-suite-test Depends: @, cmake, make, g++, libstdc++-10-dev Restrictions: allow-stderr +Architecture: amd64 arm64 Tests: cmake-test Depends: gcc, build-essential, cmake, llvm-12-dev From 78ee42a8ece66614d7dc25326ac2c1f473c5b2d2 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 3 Nov 2021 20:59:09 -0700 Subject: [PATCH 096/118] adjust llvm-12 openmp runtimes quilt patches for llvm-13 remove patch for openmp/cmake/HandleOpenMPOptions.cmake addressing the defualt value for `-std` as this as been fixed in llvm 13.0.0 --- debian/patches/openmp-fix-runtimes-build.diff | 34 +++++-------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index b8d20cd0..8ca2d591 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -5,15 +5,15 @@ Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt +++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt -@@ -236,6 +236,7 @@ function(runtime_default_target) - -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_TRIPLE} +@@ -233,6 +233,7 @@ function(runtime_default_target) -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED} -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default} + -DLLVM_BUILD_TOOLS=${LLVM_BUILD_TOOLS} + -DCMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR} - -DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE} - -DCMAKE_CXX_COMPILER_TARGET=${TARGET_TRIPLE} - -DCMAKE_ASM_COMPILER_TARGET=${TARGET_TRIPLE} -@@ -440,7 +441,7 @@ if(runtimes) + -DCMAKE_C_COMPILER_WORKS=ON + -DCMAKE_CXX_COMPILER_WORKS=ON + -DCMAKE_ASM_COMPILER_WORKS=ON +@@ -448,7 +449,7 @@ if(runtimes) # build directory cannot find the C++ headers in certain configurations. # I need to build a mechanism for runtime projects to provide CMake code # that executes at LLVM configuration time to handle this case. @@ -55,22 +55,6 @@ Index: llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt # Build host runtime library, after LIBOMPTARGET variables are set since they are needed # to enable time profiling support in the OpenMP runtime. add_subdirectory(runtime) -Index: llvm-toolchain-12_12.0.1/openmp/cmake/HandleOpenMPOptions.cmake -=================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/cmake/HandleOpenMPOptions.cmake -+++ llvm-toolchain-12_12.0.1/openmp/cmake/HandleOpenMPOptions.cmake -@@ -29,7 +29,8 @@ append_if(OPENMP_HAVE_WNO_EXTRA_FLAG "-W - append_if(OPENMP_HAVE_WNO_PEDANTIC_FLAG "-Wno-pedantic" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) - append_if(OPENMP_HAVE_WNO_MAYBE_UNINITIALIZED_FLAG "-Wno-maybe-uninitialized" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) - --append_if(OPENMP_HAVE_STD_GNUPP14_FLAG "-std=gnu++14" CMAKE_CXX_FLAGS) --if (NOT OPENMP_HAVE_STD_GNUPP14_FLAG) -- append_if(OPENMP_HAVE_STD_CPP14_FLAG "-std=c++14" CMAKE_CXX_FLAGS) -+# prefer c++14 over gnu++14? -+append_if(OPENMP_HAVE_STD_CPP14_FLAG "-std=c++14" CMAKE_CXX_FLAGS) -+if (NOT OPENMP_HAVE_STD_CPP14_FLAG) -+ append_if(OPENMP_HAVE_STD_GNUPP14_FLAG "-std=gnu++14" CMAKE_CXX_FLAGS) - endif() Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/CMakeLists.txt @@ -101,9 +85,9 @@ Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt =================================================================== --- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/src/CMakeLists.txt +++ llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt -@@ -48,6 +48,8 @@ set_target_properties(omptarget - PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${LIBOMPTARGET_LIBRARY_DIR}) +@@ -38,6 +38,8 @@ target_link_libraries(omptarget PRIVATE + ${CMAKE_DL_LIBS} + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports") +add_runtimes_build_depends_if_needed(omptarget) + From e19658433701d8ec3d1e90186b8f6d06bef52fed Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 3 Nov 2021 21:04:04 -0700 Subject: [PATCH 097/118] update changelog --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index e8df8616..abee814b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +llvm-toolchain-13 (1:13.0.0-9) unstable; urgency=medium + + * Merge migration to 2stage runtimes build 12 => 13 + * Adjust openmp runtime quilt patches from branch 12 for changes in upstream + (llvmorg-13.0.0) sources + + -- Erik Maciejewski Wed, 03 Nov 2021 20:03:56 -0700 + llvm-toolchain-13 (1:13.0.0-8) unstable; urgency=medium * Disable lldb on mipsel and mips64el as it isn't supported From c39e93a38ef46e5df7b42165851a2e341f59cbd3 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 5 Nov 2021 16:49:08 -0700 Subject: [PATCH 098/118] add option to disable compiler-rt scudo standalone patch compiler-rt build to add cmake option for disabling scudo standalone add COMPILER_RT_BUILD_SCUDO_STANDALONE=OFF to armel build since the baseline armv5t arch profile is not supported --- debian/changelog | 9 +++++++++ ...pilerrt-build-scudo-standalone-option.diff | 19 +++++++++++++++++++ debian/patches/series | 1 + debian/rules | 2 ++ 4 files changed, 31 insertions(+) create mode 100644 debian/patches/compilerrt-build-scudo-standalone-option.diff diff --git a/debian/changelog b/debian/changelog index abee814b..81856d3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +llvm-toolchain-13 (1:13.0.0-10) unstable; urgency=medium + + * patch compiler-rt build to add option to disable scudo standalone allocator + as it is not always supported by all debian baseline arch profiles + * add COMPILER_RT_BUILD_SCUDO_STANDALONE=OFF to armel build in debian/rules + since the baseline armv5t arch profile is not supported + + -- Erik Maciejewski Fri, 05 Nov 2021 16:38:43 -0700 + llvm-toolchain-13 (1:13.0.0-9) unstable; urgency=medium * Merge migration to 2stage runtimes build 12 => 13 diff --git a/debian/patches/compilerrt-build-scudo-standalone-option.diff b/debian/patches/compilerrt-build-scudo-standalone-option.diff new file mode 100644 index 00000000..8f9059ed --- /dev/null +++ b/debian/patches/compilerrt-build-scudo-standalone-option.diff @@ -0,0 +1,19 @@ +add option to disable compiler-rt scudo standalone allocator as it is +not always supported by all arch profiles such as arm5vt of ARM32 arch +Index: llvm-toolchain-13_13.0.0/compiler-rt/CMakeLists.txt +=================================================================== +--- llvm-toolchain-13_13.0.0.orig/compiler-rt/CMakeLists.txt ++++ llvm-toolchain-13_13.0.0/compiler-rt/CMakeLists.txt +@@ -250,6 +250,12 @@ option(COMPILER_RT_USE_BUILTINS_LIBRARY + + include(config-ix) + ++option(COMPILER_RT_BUILD_SCUDO_STANDALONE ++ "override whether or not to build scudo standalone" ON) ++if(NOT COMPILER_RT_BUILD_SCUDO_STANDALONE) ++ set(COMPILER_RT_HAS_SCUDO_STANDALONE FALSE) ++endif() ++ + #================================ + # Setup Compiler Flags + #================================ diff --git a/debian/patches/series b/debian/patches/series index 4a619575..d509154a 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -149,3 +149,4 @@ libcxx-libatomic-only-with-gcc-rtlib.diff libcxxabi-fix-link-builtins.diff llvm-runtimes-builtins-build-check.diff compilerrt-builtins-arch-fix-armhf.diff +compilerrt-build-scudo-standalone-option.diff diff --git a/debian/rules b/debian/rules index 22f5dda2..61195d17 100755 --- a/debian/rules +++ b/debian/rules @@ -141,6 +141,8 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF LIBCXX_USE_COMPILER_RT := OFF +# disable scudo standalone (not supported for baseline armel arch: armv5t) + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_SCUDO_STANDALONE=OFF endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) From 297b1c5ea2a133c543970db2092b0f0e1d6bd8ca Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 6 Nov 2021 15:36:34 +0100 Subject: [PATCH 099/118] upload in exp --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 81856d3e..8eff42d6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,7 +7,7 @@ llvm-toolchain-13 (1:13.0.0-10) unstable; urgency=medium -- Erik Maciejewski Fri, 05 Nov 2021 16:38:43 -0700 -llvm-toolchain-13 (1:13.0.0-9) unstable; urgency=medium +llvm-toolchain-13 (1:13.0.0-9~exp1) experimental; urgency=medium * Merge migration to 2stage runtimes build 12 => 13 * Adjust openmp runtime quilt patches from branch 12 for changes in upstream From da2623782d3c80d50a4cfe57da85ba28d37222cf Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 8 Nov 2021 14:08:24 +0100 Subject: [PATCH 100/118] fix versoin --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8eff42d6..29cd079d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-13 (1:13.0.0-10) unstable; urgency=medium +llvm-toolchain-13 (1:13.0.0-9~exp2) experimental; urgency=medium * patch compiler-rt build to add option to disable scudo standalone allocator as it is not always supported by all debian baseline arch profiles From 666ecb7903d34827657688379273947a0f2f5546 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 8 Nov 2021 14:09:57 +0100 Subject: [PATCH 101/118] upload to unstable --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 29cd079d..52a4b8c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-13 (1:13.0.0-9) unstable; urgency=medium + + * Upload to unstable (all green on exp) + + -- Sylvestre Ledru Mon, 08 Nov 2021 14:09:25 +0100 + llvm-toolchain-13 (1:13.0.0-9~exp2) experimental; urgency=medium * patch compiler-rt build to add option to disable scudo standalone allocator From 8573df8c5e536b5e936a89591ca4bd9a19befc75 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 8 Nov 2021 14:12:07 +0100 Subject: [PATCH 102/118] Fix an autopkgtest test (Closes: #997902) --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 52a4b8c0..3d1935f4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ llvm-toolchain-13 (1:13.0.0-9) unstable; urgency=medium * Upload to unstable (all green on exp) + * Fix an autopkgtest test (Closes: #997902) -- Sylvestre Ledru Mon, 08 Nov 2021 14:09:25 +0100 From 1f9d9a0b011a30a3a44e526e12dbcea7862a74fd Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 10 Nov 2021 21:19:51 +0100 Subject: [PATCH 103/118] merge 13 => 14 --- debian/changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 8daa02d9..0f0519aa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,9 @@ llvm-toolchain-snapshot (1:14~++20211022081626+13755436bb3d-1~exp1) UNRELEASED; See bug #52200 * Adjust the sphinx build as the makefile have been removed + [ Erik Maciejewski ] + * Merge migration to 2stage runtimes build 13 => 14 + -- Sylvestre Ledru Fri, 22 Oct 2021 08:21:06 +0200 llvm-toolchain-snapshot (1:14~++20210926041028+6063e6b499c7-1~exp1) experimental; urgency=medium From 34a14ee9f4c8cfb56599974350a4002fb3737ac2 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 10 Nov 2021 22:18:01 +0100 Subject: [PATCH 104/118] remoge dup arch --- debian/control | 2 -- 1 file changed, 2 deletions(-) diff --git a/debian/control b/debian/control index 3ad3ae4c..b467138f 100644 --- a/debian/control +++ b/debian/control @@ -504,8 +504,6 @@ Description: Next generation, high-performance debugger reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler. -Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 -# ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed Package: liblldb-14 Architecture: amd64 arm64 armel armhf i386 ppc64el kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc hppa m68k sh4 x32 # ia64 hurd powerpc powerpcspe ppc64 alpha riscv64 s390x sparc64 mipsel mips64el have been removed From 2b65a438b19d1b9132f08d73e3bff0de4f4604c5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 11 Nov 2021 13:14:07 +0100 Subject: [PATCH 105/118] debuginfo-tests => cross-project-tests --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 4581bbc2..ed8e601b 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,7 @@ #!/usr/bin/make -f # polly & lldb aren't enabled for every platform -PROJECTS = clang;clang-tools-extra;lld;debuginfo-tests +PROJECTS = clang;clang-tools-extra;lld;cross-project-tests # openmp & libunwind aren't enabled for every platform RUNTIMES = compiler-rt;libcxx;libcxxabi From a13dfd15b11c9a31d2f70225d28856d73c87ad1d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 11 Nov 2021 13:20:55 +0100 Subject: [PATCH 106/118] fix typos --- debian/rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/rules b/debian/rules index ed8e601b..3ac22a0f 100755 --- a/debian/rules +++ b/debian/rules @@ -568,7 +568,7 @@ override_dh_auto_configure: preconfigure FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ - echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ + echo "mismatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ exit 1; \ fi @@ -744,7 +744,7 @@ endif mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/lib/clang_linux/ mkdir -p $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux/ mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/share/ -# On some archs, the sanatizers are not built. As we explicitly includes some txt files, create +# On some archs, the sanitizers are not built. As we explicitly includes some txt files, create # a fake txt to make sure it doesn't fail echo "The *.txt files, if available, contain helper to override some of the errors messages." > $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/README.txt echo "Please visit https://github.com/google/sanitizers/wiki/AddressSanitizer for help" >> $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/README.txt From 6fb9dd580c988fd3d58ebc787c9e98876497c554 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 11 Nov 2021 13:20:55 +0100 Subject: [PATCH 107/118] fix typos --- debian/rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/rules b/debian/rules index 61195d17..e7744685 100755 --- a/debian/rules +++ b/debian/rules @@ -556,7 +556,7 @@ override_dh_auto_configure: preconfigure FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ - echo "mistmatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ + echo "mismatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ exit 1; \ fi @@ -724,7 +724,7 @@ endif mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/lib/clang_linux/ mkdir -p $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux/ mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/share/ -# On some archs, the sanatizers are not built. As we explicitly includes some txt files, create +# On some archs, the sanitizers are not built. As we explicitly includes some txt files, create # a fake txt to make sure it doesn't fail echo "The *.txt files, if available, contain helper to override some of the errors messages." > $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/README.txt echo "Please visit https://github.com/google/sanitizers/wiki/AddressSanitizer for help" >> $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/README.txt From 90755700695a1c7010910cb0715807e01ae1afd5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 10 Nov 2021 21:27:55 +0100 Subject: [PATCH 108/118] Document some recent changes --- debian/README.source | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/README.source b/debian/README.source index a5b685cc..fbd46fa2 100644 --- a/debian/README.source +++ b/debian/README.source @@ -4,6 +4,13 @@ as possible from upstream. However, because of the objectives of Debian, besides paths, some changes are made. +The Debian packaging is also used by apt.llvm.org. + +From 12.0.1-10 & 13.0.0-9, the build system use the runtimes build system. +This is now the upstream preferred way to build llvm. +It means that some projects like libc++ or compiler-rt are built once clang +is built. + = File names = * To make sure that most of the llvm-toolchain packages are co-installable, From 88d3b7d9fd8e64a3bd681343ddcf1cfa3389125c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 10 Nov 2021 21:29:22 +0100 Subject: [PATCH 109/118] fix a typo --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index e7744685..f143e742 100755 --- a/debian/rules +++ b/debian/rules @@ -54,7 +54,7 @@ include /usr/share/dpkg/buildflags.mk # We use a stage2 build. It means that a first clang is built using gcc, # a second clang is built with the first -# And the various compoments are built using the second clang. +# And the various components are built using the second clang. # See https://llvm.org/docs/AdvancedBuilds.html # collect additional flags for all stages all builds From 83e6a6baf092412acbbb95571376aab8d41bdc70 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 10 Nov 2021 21:30:33 +0100 Subject: [PATCH 110/118] fix a typo --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3d1935f4..2b49bd52 100644 --- a/debian/changelog +++ b/debian/changelog @@ -600,7 +600,7 @@ llvm-toolchain-12 (1:12.0.0~++rc4-1) unstable; urgency=medium llvm-toolchain-12 (1:12.0.0~++rc3-4) unstable; urgency=medium - * dont' fail fsanitize=thread on i386, not supported + * Don't fail fsanitize=thread on i386, not supported * Don't hard fail on z3 failures with "set -e" at the begin, if z3 support is not available we do fail and exit testsuite without checking the log * Don't force gcc-11 anymore on riscv64, gcc-10 has the fixes now From 66767e15bb69da784caadfab34ef0ca1ed9e8ee9 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 11 Nov 2021 22:45:36 +0100 Subject: [PATCH 111/118] Add back -DLLVM_VERSION_SUFFIX=. Useless for 13 but necessary for snapshot Otherwise, it adds "git" to the libs --- debian/changelog | 7 +++++++ debian/rules | 1 + 2 files changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2b49bd52..582a9108 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-13 (1:13.0.0-10) unstable; urgency=medium + + * Add back -DLLVM_VERSION_SUFFIX=. Useless for 13 but necessary for snapshot + Otherwise, it adds "git" to the libs + + -- Sylvestre Ledru Thu, 11 Nov 2021 22:45:25 +0100 + llvm-toolchain-13 (1:13.0.0-9) unstable; urgency=medium * Upload to unstable (all green on exp) diff --git a/debian/rules b/debian/rules index f143e742..0b8a84b4 100755 --- a/debian/rules +++ b/debian/rules @@ -478,6 +478,7 @@ override_dh_auto_configure: preconfigure $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ -G $(GENERATOR) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ + -DLLVM_VERSION_SUFFIX= \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS)" \ From 53287b1c7b87586b46fa7a69ae54ab87dd96f45f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 11 Nov 2021 22:54:42 +0100 Subject: [PATCH 112/118] update of the version --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0f0519aa..68c69319 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-snapshot (1:14~++20211022081626+13755436bb3d-1~exp1) UNRELEASED; urgency=medium +llvm-toolchain-snapshot (1:14~++20211111061527+d56b171ee965-1~exp1) UNRELEASED; urgency=medium * Remove the triple patch. it is causing the library search path to fail. Add a test in debian/qualify-clang.sh to verify we don't regress @@ -20,7 +20,7 @@ llvm-toolchain-snapshot (1:14~++20211022081626+13755436bb3d-1~exp1) UNRELEASED; [ Erik Maciejewski ] * Merge migration to 2stage runtimes build 13 => 14 - -- Sylvestre Ledru Fri, 22 Oct 2021 08:21:06 +0200 + -- Sylvestre Ledru Thu, 11 Nov 2021 18:19:57 +0100 llvm-toolchain-snapshot (1:14~++20210926041028+6063e6b499c7-1~exp1) experimental; urgency=medium From 2dee6a81741322dbcb35201f84d0b7573d9a414c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 13 Nov 2021 00:15:53 +0100 Subject: [PATCH 113/118] If lua is available on the system at built time, a lua lldb binding was created. It was leading to some build failures depending on the package installed on the build system. Force the deactivation of the lua build when lldb is built. --- debian/changelog | 4 ++++ debian/rules | 1 + 2 files changed, 5 insertions(+) diff --git a/debian/changelog b/debian/changelog index bafe8dc7..b8ab4dad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,10 @@ llvm-toolchain-snapshot (1:14~++20211111061527+d56b171ee965-1~exp1) UNRELEASED; as llvm-spir is too old on these version. See bug #52200 * Adjust the sphinx build as the makefile have been removed + * If lua is available on the system at built time, a lua lldb binding + was created. It was leading to some build failures depending + on the package installed on the build system. + Force the deactivation of the lua build when lldb is built. [ Erik Maciejewski ] * Merge migration to 2stage runtimes build 13 => 14 diff --git a/debian/rules b/debian/rules index e4488601..922232e5 100755 --- a/debian/rules +++ b/debian/rules @@ -323,6 +323,7 @@ ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch. LLDB_ENABLE=no else + STAGE_ALL_CMAKE_EXTRA += -DLLDB_ENABLE_LUA=OFF PROJECTS+=;lldb endif From 765d78d13754de85c5e5809e4080cec4d8a4f5f4 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 13 Nov 2021 00:17:09 +0100 Subject: [PATCH 114/118] Fix whitespaces --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 922232e5..d69d8880 100755 --- a/debian/rules +++ b/debian/rules @@ -54,7 +54,7 @@ include /usr/share/dpkg/buildflags.mk # We use a stage2 build. It means that a first clang is built using gcc, # a second clang is built with the first -# And the various components are built using the second clang. +# And the various compoments are built using the second clang. # See https://llvm.org/docs/AdvancedBuilds.html # collect additional flags for all stages all builds From 317db0b99c0fd0908e0b08211e679c636cd2b3d1 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 13 Nov 2021 00:19:58 +0100 Subject: [PATCH 115/118] * libomp: add new symbols - GOMP_5.0.1 - GOMP_alloc - GOMP_free - __kmpc_aligned_alloc - __kmpc_atomic_bool_1_cas - __kmpc_atomic_bool_1_cas_cpt - __kmpc_atomic_bool_2_cas - __kmpc_atomic_bool_2_cas_cpt - __kmpc_atomic_bool_4_cas - __kmpc_atomic_bool_4_cas_cpt - __kmpc_atomic_bool_8_cas - __kmpc_atomic_bool_8_cas_cpt - __kmpc_atomic_float10_max - __kmpc_atomic_float10_max_cpt - __kmpc_atomic_float10_min - __kmpc_atomic_float10_min_cpt - __kmpc_atomic_val_1_cas - __kmpc_atomic_val_1_cas_cpt - __kmpc_atomic_val_2_cas - __kmpc_atomic_val_2_cas_cpt - __kmpc_atomic_val_4_cas - __kmpc_atomic_val_4_cas_cpt - __kmpc_atomic_val_8_cas - __kmpc_atomic_val_8_cas_cpt - omp_aligned_alloc - omp_aligned_calloc --- debian/changelog | 27 +++++++++++++++++++++++++++ debian/libomp5-X.Y.symbols.in | 30 +++++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b8ab4dad..37a31cd8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,33 @@ llvm-toolchain-snapshot (1:14~++20211111061527+d56b171ee965-1~exp1) UNRELEASED; was created. It was leading to some build failures depending on the package installed on the build system. Force the deactivation of the lua build when lldb is built. + * libomp: add new symbols + - GOMP_5.0.1 + - GOMP_alloc + - GOMP_free + - __kmpc_aligned_alloc + - __kmpc_atomic_bool_1_cas + - __kmpc_atomic_bool_1_cas_cpt + - __kmpc_atomic_bool_2_cas + - __kmpc_atomic_bool_2_cas_cpt + - __kmpc_atomic_bool_4_cas + - __kmpc_atomic_bool_4_cas_cpt + - __kmpc_atomic_bool_8_cas + - __kmpc_atomic_bool_8_cas_cpt + - __kmpc_atomic_float10_max + - __kmpc_atomic_float10_max_cpt + - __kmpc_atomic_float10_min + - __kmpc_atomic_float10_min_cpt + - __kmpc_atomic_val_1_cas + - __kmpc_atomic_val_1_cas_cpt + - __kmpc_atomic_val_2_cas + - __kmpc_atomic_val_2_cas_cpt + - __kmpc_atomic_val_4_cas + - __kmpc_atomic_val_4_cas_cpt + - __kmpc_atomic_val_8_cas + - __kmpc_atomic_val_8_cas_cpt + - omp_aligned_alloc + - omp_aligned_calloc [ Erik Maciejewski ] * Merge migration to 2stage runtimes build 13 => 14 diff --git a/debian/libomp5-X.Y.symbols.in b/debian/libomp5-X.Y.symbols.in index 99e5e47d..09b22a3f 100644 --- a/debian/libomp5-X.Y.symbols.in +++ b/debian/libomp5-X.Y.symbols.in @@ -4,7 +4,10 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# GOMP_3.0@GOMP_3.0 0.20131209 GOMP_4.0@GOMP_4.0 0.20131209 GOMP_4.5@GOMP_4.5 7 + GOMP_5.0.1@GOMP_5.0.1 14 GOMP_5.0@GOMP_5.0 11 + GOMP_alloc@GOMP_5.0.1 14 + GOMP_alloc@VERSION 14 GOMP_atomic_end@GOMP_1.0 0.20131209 GOMP_atomic_end@VERSION 0.20130412 GOMP_atomic_start@GOMP_1.0 0.20131209 @@ -33,6 +36,8 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# GOMP_doacross_ull_wait@VERSION 7 GOMP_doacross_wait@GOMP_4.5 7 GOMP_doacross_wait@VERSION 7 + GOMP_free@GOMP_5.0.1 14 + GOMP_free@VERSION 14 GOMP_loop_doacross_dynamic_start@GOMP_4.5 7 GOMP_loop_doacross_dynamic_start@VERSION 7 GOMP_loop_doacross_guided_start@GOMP_4.5 7 @@ -287,6 +292,7 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# __kmp_thread_pool@VERSION 0.20130412 __kmp_wait_4@VERSION 9 __kmp_wait_64@VERSION 0.20140926 + __kmpc_aligned_alloc@VERSION 14 __kmpc_alloc@VERSION 8 __kmpc_atomic_10@VERSION 0.20130412 __kmpc_atomic_16@VERSION 0.20130412 @@ -296,6 +302,14 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# __kmpc_atomic_32@VERSION 0.20130412 __kmpc_atomic_4@VERSION 0.20130412 __kmpc_atomic_8@VERSION 0.20130412 + __kmpc_atomic_bool_1_cas@VERSION 14 + __kmpc_atomic_bool_1_cas_cpt@VERSION 14 + __kmpc_atomic_bool_2_cas@VERSION 14 + __kmpc_atomic_bool_2_cas_cpt@VERSION 14 + __kmpc_atomic_bool_4_cas@VERSION 14 + __kmpc_atomic_bool_4_cas_cpt@VERSION 14 + __kmpc_atomic_bool_8_cas@VERSION 14 + __kmpc_atomic_bool_8_cas_cpt@VERSION 14 __kmpc_atomic_cmplx10_add@VERSION 0.20130412 (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf !riscv64)__kmpc_atomic_cmplx10_add_cpt@VERSION 0.20130412 __kmpc_atomic_cmplx10_div@VERSION 0.20130412 @@ -673,6 +687,10 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# #MISSING: 7# (arch=!mips !mipsel !ppc64 !ppc64el !armel !armhf)__kmpc_atomic_float10_div_fp@VERSION 0.20130412 (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf !riscv64)__kmpc_atomic_float10_div_rev@VERSION 0.20130412 #MISSING: 7# (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf)__kmpc_atomic_float10_div_rev_fp@VERSION 4.0 + __kmpc_atomic_float10_max@VERSION 14 + __kmpc_atomic_float10_max_cpt@VERSION 14 + __kmpc_atomic_float10_min@VERSION 14 + __kmpc_atomic_float10_min_cpt@VERSION 14 __kmpc_atomic_float10_mul@VERSION 0.20130412 (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf !riscv64)__kmpc_atomic_float10_mul_cpt@VERSION 0.20130412 #MISSING: 7# (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf)__kmpc_atomic_float10_mul_cpt_fp@VERSION 4.0 @@ -774,6 +792,14 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf !riscv64)__kmpc_atomic_float8_swp@VERSION 0.20130412 (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf !riscv64)__kmpc_atomic_float8_wr@VERSION 0.20130412 (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !arm64 !armel !armhf !riscv64)__kmpc_atomic_start@VERSION 0.20130412 + __kmpc_atomic_val_1_cas@VERSION 14 + __kmpc_atomic_val_1_cas_cpt@VERSION 14 + __kmpc_atomic_val_2_cas@VERSION 14 + __kmpc_atomic_val_2_cas_cpt@VERSION 14 + __kmpc_atomic_val_4_cas@VERSION 14 + __kmpc_atomic_val_4_cas_cpt@VERSION 14 + __kmpc_atomic_val_8_cas@VERSION 14 + __kmpc_atomic_val_8_cas_cpt@VERSION 14 __kmpc_barrier@VERSION 0.20130412 __kmpc_barrier_master@VERSION 0.20130412 __kmpc_barrier_master_nowait@VERSION 0.20130412 @@ -989,7 +1015,9 @@ libomp.so.5 libomp5-@LLVM_VERSION@ #MINVER# kmpc_set_stacksize@VERSION 0.20130412 kmpc_set_stacksize_s@VERSION 0.20130412 kmpc_unset_affinity_mask_proc@VERSION 0.20130412 - (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !armel !armhf)libomp_start_tool@VERSION 1:14~++20210924100737+f3f25ffc04c0 +#MISSING: 14# (arch=!mips !mipsel !ppc64 !ppc64el !mips64 !mips64el !armel !armhf)libomp_start_tool@VERSION 1:14~++20210924100737+f3f25ffc04c0 + omp_aligned_alloc@VERSION 14 + omp_aligned_calloc@VERSION 14 omp_alloc@VERSION 8 omp_calloc@VERSION 12 omp_capture_affinity@OMP_5.0 13 From 6eb74424baa9035b236af1b8ca308da8e6ccd2c6 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 13 Nov 2021 11:31:50 +0100 Subject: [PATCH 116/118] rebase of the patches --- debian/patches/openmp-fix-runtimes-build.diff | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/debian/patches/openmp-fix-runtimes-build.diff b/debian/patches/openmp-fix-runtimes-build.diff index 8ca2d591..dbfc5b9f 100644 --- a/debian/patches/openmp-fix-runtimes-build.diff +++ b/debian/patches/openmp-fix-runtimes-build.diff @@ -1,11 +1,11 @@ include required runtimes as dependencies to openmp targets to make sure they are built first when included as part of a runtimes build since openmp can depend on them -Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/llvm/runtimes/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt -@@ -233,6 +233,7 @@ function(runtime_default_target) +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/llvm/runtimes/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/llvm/runtimes/CMakeLists.txt +@@ -236,6 +236,7 @@ function(runtime_default_target) -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED} -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default} -DLLVM_BUILD_TOOLS=${LLVM_BUILD_TOOLS} @@ -13,7 +13,7 @@ Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt -DCMAKE_C_COMPILER_WORKS=ON -DCMAKE_CXX_COMPILER_WORKS=ON -DCMAKE_ASM_COMPILER_WORKS=ON -@@ -448,7 +449,7 @@ if(runtimes) +@@ -454,7 +455,7 @@ if(runtimes) # build directory cannot find the C++ headers in certain configurations. # I need to build a mechanism for runtime projects to provide CMake code # that executes at LLVM configuration time to handle this case. @@ -22,11 +22,11 @@ Index: llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt # We need to add the runtimes as a dependency because compiler-rt can be # built as part of runtimes and we need the profile runtime for PGO add_dependencies(clang-bootstrap-deps runtimes) -Index: llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt -@@ -83,6 +83,28 @@ option(OPENMP_ENABLE_LIBOMPTARGET_PROFIL +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/CMakeLists.txt +@@ -67,6 +67,28 @@ option(OPENMP_ENABLE_LIBOMPTARGET_PROFIL ${ENABLE_LIBOMPTARGET}) option(OPENMP_ENABLE_LIBOMP_PROFILING "Enable time profiling for libomp." OFF) @@ -55,10 +55,10 @@ Index: llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt # Build host runtime library, after LIBOMPTARGET variables are set since they are needed # to enable time profiling support in the OpenMP runtime. add_subdirectory(runtime) -Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/libomptarget/plugins/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/libomptarget/plugins/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/libomptarget/plugins/CMakeLists.txt @@ -36,6 +36,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "${tma add_library("omptarget.rtl.${tmachine_libname}" SHARED ${CMAKE_CURRENT_SOURCE_DIR}/../generic-elf-64bit/src/rtl.cpp) @@ -68,11 +68,11 @@ Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt # Install plugin under the lib destination folder. install(TARGETS "omptarget.rtl.${tmachine_libname}" LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}") -Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/libomptarget/plugins/cuda/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/cuda/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt -@@ -44,6 +44,8 @@ else() +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/libomptarget/plugins/cuda/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/libomptarget/plugins/cuda/CMakeLists.txt +@@ -47,6 +47,8 @@ else() set (LIBOMPTARGET_DEP_LIBRARIES ${CMAKE_DL_LIBS}) endif() @@ -81,11 +81,11 @@ Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt # Install plugin under the lib destination folder. install(TARGETS omptarget.rtl.cuda LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}") -Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/libomptarget/src/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/src/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt -@@ -38,6 +38,8 @@ target_link_libraries(omptarget PRIVATE +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/libomptarget/src/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/libomptarget/src/CMakeLists.txt +@@ -39,6 +39,8 @@ target_link_libraries(omptarget PRIVATE ${CMAKE_DL_LIBS} "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports") @@ -94,10 +94,10 @@ Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt # Install libomptarget under the lib destination folder. install(TARGETS omptarget LIBRARY COMPONENT omptarget DESTINATION "${OPENMP_INSTALL_LIBDIR}") -Index: llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/runtime/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/runtime/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/runtime/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/runtime/CMakeLists.txt @@ -287,6 +287,10 @@ if(LIBOMP_STATS) set(LIBOMP_USE_STDCPPLIB TRUE) endif() @@ -109,11 +109,11 @@ Index: llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt # Shared library can be switched to a static library set(LIBOMP_ENABLE_SHARED TRUE CACHE BOOL "Shared library instead of static library?") -Index: llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/runtime/src/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/runtime/src/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt -@@ -134,6 +134,7 @@ endif() +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/runtime/src/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/runtime/src/CMakeLists.txt +@@ -136,6 +136,7 @@ endif() if(NOT ${LIBOMP_USE_STDCPPLIB}) set(LIBOMP_LINKER_LANGUAGE C) set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES) @@ -121,19 +121,19 @@ Index: llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt else() set(LIBOMP_LINKER_LANGUAGE CXX) endif() -@@ -162,6 +163,8 @@ set_target_properties(omp PROPERTIES - LINKER_LANGUAGE ${LIBOMP_LINKER_LANGUAGE} - ) +@@ -186,6 +187,8 @@ else() + ) + endif() +add_runtimes_build_depends_if_needed(omp) + # Get the library's location within the build tree for the unit tester if(NOT WIN32) get_target_property(LIBOMP_LIBRARY_DIR omp LIBRARY_OUTPUT_DIRECTORY) -Index: llvm-toolchain-12_12.0.1/openmp/tools/archer/CMakeLists.txt +Index: llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/tools/archer/CMakeLists.txt =================================================================== ---- llvm-toolchain-12_12.0.1.orig/openmp/tools/archer/CMakeLists.txt -+++ llvm-toolchain-12_12.0.1/openmp/tools/archer/CMakeLists.txt +--- llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51.orig/openmp/tools/archer/CMakeLists.txt ++++ llvm-toolchain-snapshot_14~++20211113102219+b5ff187b7b51/openmp/tools/archer/CMakeLists.txt @@ -14,6 +14,9 @@ if(LIBOMP_OMPT_SUPPORT) add_library(archer SHARED ompt-tsan.cpp) add_library(archer_static STATIC ompt-tsan.cpp) From 26db809ae5dc47c008871602e63679a1e0a2490d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 13 Nov 2021 14:55:52 +0100 Subject: [PATCH 117/118] prepare for upload --- debian/changelog | 4 ++-- debian/rules | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 37a31cd8..a6acad99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-snapshot (1:14~++20211111061527+d56b171ee965-1~exp1) UNRELEASED; urgency=medium +llvm-toolchain-snapshot (1:14~++20211113102219+b5ff187b7b51-1~exp1) experimental; urgency=medium * Remove the triple patch. it is causing the library search path to fail. Add a test in debian/qualify-clang.sh to verify we don't regress @@ -51,7 +51,7 @@ llvm-toolchain-snapshot (1:14~++20211111061527+d56b171ee965-1~exp1) UNRELEASED; [ Erik Maciejewski ] * Merge migration to 2stage runtimes build 13 => 14 - -- Sylvestre Ledru Thu, 11 Nov 2021 18:19:57 +0100 + -- Sylvestre Ledru Sat, 13 Nov 2021 10:26:41 +0100 llvm-toolchain-snapshot (1:14~++20210926041028+6063e6b499c7-1~exp1) experimental; urgency=medium diff --git a/debian/rules b/debian/rules index d69d8880..e1b799a9 100755 --- a/debian/rules +++ b/debian/rules @@ -811,7 +811,7 @@ endif sed -i 's|.*_IMPORT_CHECK_FILES_FOR_.*/bin/.*)|#&|' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake # Adjust to the existing symlink. See #994827 - sed -i "s|libclang-$(LLVM_VERSION).so.$(LLVM_VERSION).*\"|libclang-$(LLVM_VERSION).so.1\"|" $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-relwithdebinfo.cmake + sed -i "s|libclang-$(LLVM_VERSION).so.$(LLVM_VERSION).*\"|libclang-$(LLVM_VERSION).so.1\"|" $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake # Managed in python*-lldb-X.Y.links.in rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/lldb/_lldb.so From 249f8a80eb7296534916a89337a8259858dde21e Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 9 Nov 2021 11:38:45 +0100 Subject: [PATCH 118/118] Install llvm-tli-checker in llvm-X.Y --- debian/changelog | 1 + debian/llvm-X.Y.install.in | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index a6acad99..b5a4bc0c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -47,6 +47,7 @@ llvm-toolchain-snapshot (1:14~++20211113102219+b5ff187b7b51-1~exp1) experimental - __kmpc_atomic_val_8_cas_cpt - omp_aligned_alloc - omp_aligned_calloc + * Install llvm-tli-checker in llvm-X.Y [ Erik Maciejewski ] * Merge migration to 2stage runtimes build 13 => 14 diff --git a/debian/llvm-X.Y.install.in b/debian/llvm-X.Y.install.in index b0d252b7..62f09a8b 100644 --- a/debian/llvm-X.Y.install.in +++ b/debian/llvm-X.Y.install.in @@ -67,6 +67,7 @@ usr/lib/llvm-@LLVM_VERSION@/bin/llvm-ranlib usr/lib/llvm-@LLVM_VERSION@/bin/llvm-readelf usr/lib/llvm-@LLVM_VERSION@/bin/llvm-strip usr/lib/llvm-@LLVM_VERSION@/bin/llvm-windres +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-tli-checker usr/lib/llvm-@LLVM_VERSION@/bin/opt* usr/lib/llvm-@LLVM_VERSION@/bin/bugpoint* usr/lib/llvm-@LLVM_VERSION@/bin/llc* @@ -140,6 +141,7 @@ usr/bin/llvm-tblgen-@LLVM_VERSION@ usr/bin/llvm-undname-@LLVM_VERSION@ usr/bin/llvm-windres-@LLVM_VERSION@ usr/bin/llvm-xray-@LLVM_VERSION@ +usr/bin/llvm-tli-checker-@LLVM_VERSION@ usr/bin/opt* usr/bin/bugpoint* usr/bin/llc*