From e3a53b15e8e2753352ed73723ea4539281b57bcf Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Sun, 26 Sep 2021 21:01:45 -0700 Subject: [PATCH 01/83] 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 02/83] 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 03/83] 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 04/83] 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 05/83] 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 06/83] 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 07/83] 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 08/83] 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 09/83] 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 10/83] 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 11/83] 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 12/83] 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 13/83] 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 14/83] 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 15/83] 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 16/83] 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 17/83] 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 18/83] 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 19/83] 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 20/83] 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 21/83] 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 22/83] 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 23/83] 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 24/83] 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 25/83] 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 26/83] 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 27/83] 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 28/83] 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 29/83] 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 30/83] 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 31/83] 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 32/83] 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 33/83] 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 34/83] 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 35/83] 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 0ae8e6c3b20ca76d257616450b59d2ef3308a9ac Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sun, 17 Oct 2021 01:20:31 -0700 Subject: [PATCH 36/83] 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 37/83] 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 38/83] 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 39/83] 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 40/83] 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 4cd75253306d4d740c620bdb140757cfbaed502d Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Fri, 15 Oct 2021 14:01:44 -0700 Subject: [PATCH 41/83] 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 42/83] 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 43/83] 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 44/83] 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 45/83] 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 46/83] 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 47/83] 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 48/83] 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 49/83] 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 50/83] 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 51/83] 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 52/83] 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 53/83] 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 54/83] 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 55/83] 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 56/83] 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 57/83] 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 58/83] 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 21741170dffa8e4d2c55cbe4d30884ce4be1b798 Mon Sep 17 00:00:00 2001 From: Erik Maciejewski Date: Wed, 20 Oct 2021 16:47:20 -0700 Subject: [PATCH 59/83] 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 60/83] 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 61/83] 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 62/83] 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 63/83] 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 64/83] 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 65/83] 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 66/83] 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 67/83] 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 68/83] 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 69/83] 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 659305bc0841aa0415ccb9a90c76b6b4c5349fee Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 10:35:38 +0200 Subject: [PATCH 70/83] 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 fa65a721e987b7a44b67942687cf1f2ccf44e14c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 23 Oct 2021 13:09:45 +0200 Subject: [PATCH 71/83] 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 72/83] 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 73/83] 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 74/83] 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 75/83] 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 76/83] 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 77/83] 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 78/83] 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 79/83] 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 80/83] 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 81/83] 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 82/83] 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 83/83] 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