From 066d9c791a0335a93f4e469df8fdf95330e9f207 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 18 Sep 2021 11:33:35 +0200 Subject: [PATCH] Replace make by ninja for the build process It is now more tested than make by upstream And it is supposed to be faster Removed openmp/bootstrap-with-openmp-version-export-missing.diff as it seems that the ninja move fixed it --- debian/changelog | 10 +++ debian/control | 3 +- ...ap-with-openmp-version-export-missing.diff | 14 ---- debian/patches/series | 1 - debian/rules | 70 +++++++++++-------- 5 files changed, 54 insertions(+), 44 deletions(-) delete mode 100644 debian/patches/openmp/bootstrap-with-openmp-version-export-missing.diff diff --git a/debian/changelog b/debian/changelog index fab4e7f1..daf481c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +llvm-toolchain-12 (1:12.0.1-9) unstable; urgency=medium + + * Replace make by ninja for the build process + It is now more tested than make by upstream + And it is supposed to be faster + Removed openmp/bootstrap-with-openmp-version-export-missing.diff + as it seems that the ninja move fixed it + + -- Sylvestre Ledru Sat, 18 Sep 2021 11:03:29 +0200 + llvm-toolchain-12 (1:12.0.1-8) unstable; urgency=medium * Add back CMAKE_EXTRA to build LLVM gold (Closes: #993664) diff --git a/debian/control b/debian/control index 329adddf..6bab523e 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,8 @@ Priority: optional Rules-Requires-Root: no Maintainer: LLVM Packaging Team Uploaders: Sylvestre Ledru , Gianfranco Costamagna -Build-Depends: debhelper (>= 9.0), cmake, chrpath, texinfo, sharutils, +Build-Depends: debhelper (>= 9.0), cmake, ninja-build, + chrpath, texinfo, sharutils, libffi-dev, lsb-release, patchutils, diffstat, xz-utils, python3-dev, libedit-dev, libncurses5-dev, swig, python3-six, python3-sphinx (>= 1.3.6), diff --git a/debian/patches/openmp/bootstrap-with-openmp-version-export-missing.diff b/debian/patches/openmp/bootstrap-with-openmp-version-export-missing.diff deleted file mode 100644 index 46f80a49..00000000 --- a/debian/patches/openmp/bootstrap-with-openmp-version-export-missing.diff +++ /dev/null @@ -1,14 +0,0 @@ -Index: llvm-toolchain-12_12.0.0~++20210204121419+e8cdcaeae406/openmp/runtime/src/CMakeLists.txt -=================================================================== ---- llvm-toolchain-12_12.0.0~++20210204121419+e8cdcaeae406.orig/openmp/runtime/src/CMakeLists.txt -+++ llvm-toolchain-12_12.0.0~++20210204121419+e8cdcaeae406/openmp/runtime/src/CMakeLists.txt -@@ -146,7 +146,8 @@ libomp_get_libflags(LIBOMP_CONFIGURED_LI - if(OPENMP_STANDALONE_BUILD OR (NOT OPENMP_ENABLE_LIBOMP_PROFILING)) - add_library(omp ${LIBOMP_LIBRARY_KIND} ${LIBOMP_SOURCE_FILES}) - # Linking command will include libraries in LIBOMP_CONFIGURED_LIBFLAGS -- target_link_libraries(omp ${LIBOMP_CONFIGURED_LIBFLAGS} ${CMAKE_DL_LIBS}) -+ target_link_libraries(omp ${LIBOMP_CONFIGURED_LIBFLAGS} ${CMAKE_DL_LIBS} -+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports_so.txt") - else() - add_llvm_library(omp ${LIBOMP_LIBRARY_KIND} ${LIBOMP_SOURCE_FILES} PARTIAL_SOURCES_INTENDED - LINK_LIBS ${LIBOMP_CONFIGURED_LIBFLAGS} ${CMAKE_DL_LIBS} diff --git a/debian/patches/series b/debian/patches/series index daaa7a1c..b872895b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -70,7 +70,6 @@ disable-error-xray.diff # OpenMP openmp/openmp-check-execstack.diff openmp/openmp-mips-affinity.patch -openmp/bootstrap-with-openmp-version-export-missing.diff # libcxx libcxx/libcxxabi-test-don-t-fail-extended-long-double.patch diff --git a/debian/rules b/debian/rules index 5188efc6..02400782 100755 --- a/debian/rules +++ b/debian/rules @@ -317,6 +317,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) @@ -412,7 +414,11 @@ 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) \ -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ -DCMAKE_SUPPRESS_REGENERATION=ON \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ @@ -443,20 +449,24 @@ override_dh_auto_configure: preconfigure -DLLVM_POLLY_LINK_INTO_TOOLS=ON \ -DBOOTSTRAP_CMAKE_CXX_FLAGS='$(BOOTSTRAP_CXXFLAGS_EXTRA)' \ -DBOOTSTRAP_CMAKE_C_FLAGS='$(BOOTSTRAP_CFLAGS_EXTRA)' \ - -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" + -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"; \ 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 -# ninja -#VERBOSE=-v +endif debian-full-build: - $(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 stage2 + $(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 \ @@ -504,8 +514,10 @@ 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 \ @@ -513,8 +525,8 @@ debian-libcxxabi-build: -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ -DLIBCXXABI_USE_COMPILER_RT=ON \ -DLLVM_ENABLE_RTTI=ON \ - $(CMAKE_LIBCXX_EXTRA) && cd build && \ - $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" + $(CMAKE_LIBCXX_EXTRA) && \ + $(PRE_PROCESS_CONF) ninja -C build/ $(VERBOSE) touch $@ # Fails with $ @@ -533,7 +545,9 @@ debian-libcxx-build: 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 \ @@ -544,8 +558,8 @@ debian-libcxx-build: -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ - $(CMAKE_LIBCXX_EXTRA) && cd build && \ - $(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" + $(CMAKE_LIBCXX_EXTRA) && \ + $(PRE_PROCESS_CONF) ninja -C build/ $(VERBOSE) touch $@ @@ -561,12 +575,13 @@ debian-libclc-build: echo "Using cmake: $$CMAKE_BIN"; \ cd libclc/build && \ $$CMAKE_BIN ../ \ + -G $(GENERATOR) \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DATADIR=lib \ -DCMAKE_INSTALL_INCLUDEDIR=include \ -DLLVM_CONFIG=$(CURDIR)/$(TARGET_BUILD_STAGE2)/bin/llvm-config \ -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ - make $(NJOBS) $(VERBOSE) + ninja $(VERBOSE) touch $@ override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxxabi-build debian-libcxx-build debian-libclc-build @@ -578,13 +593,13 @@ build_doc: cd $(CURDIR)/llvm/docs && make -f Makefile.sphinx && make -f Makefile.sphinx man cd $(CURDIR)/clang/docs && make -f Makefile.sphinx && make -f Makefile.sphinx man -(if test "$(OCAML_ENABLE)" = yes; then \ - make $(NJOBS) -C "$(TARGET_BUILD_STAGE2)/docs" ocaml_doc; \ + ninja -C "$(TARGET_BUILD_STAGE2)" ocaml_doc; \ fi) - make $(NJOBS) -C $(TARGET_BUILD_STAGE2) docs-llvm-html docs-clang-html docs-clang-tools-html docs-clang-tools-man docs-clang-man docs-llvm-man + ninja -C $(TARGET_BUILD_STAGE2) docs-llvm-html docs-clang-html docs-clang-tools-html docs-clang-tools-man docs-clang-man docs-llvm-man ifeq (${POLLY_ENABLE},yes) - make $(NJOBS) -C $(TARGET_BUILD_STAGE2) docs-polly-html docs-polly-man + ninja -C $(TARGET_BUILD_STAGE2) docs-polly-html docs-polly-man endif # Rename manpages @@ -627,7 +642,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 @@ -702,10 +717,9 @@ endif rm -rf $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/__pycache__/ \ $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/*/__pycache__/ - $(MAKE) -C libcxxabi/build install DESTDIR=$(DEB_INST) - $(MAKE) -C libcxx/build install DESTDIR=$(DEB_INST) - - $(MAKE) -C libclc/build install DESTDIR=$(DEB_INST) + DESTDIR=$(DEB_INST) ninja -C libcxxabi/build install + DESTDIR=$(DEB_INST) ninja -C libcxx/build install + DESTDIR=$(DEB_INST) ninja -C libclc/build install # Rename binaries mkdir -p $(DEB_INST)/usr/bin/ @@ -880,33 +894,33 @@ override_dh_auto_test: # LLVM tests ifneq (,$(findstring $(DEB_HOST_ARCH),$(ARCH_LLVM_TEST_OK))) # logs the output to check-llvm_build_log.txt for validation through autopkgtest - $(MAKE) $(NJOBS) -C $(TARGET_BUILD) stage2-check-llvm | tee check-llvm_build_log.txt + ninja -C $(TARGET_BUILD) stage2-check-llvm | tee check-llvm_build_log.txt else - $(MAKE) $(NJOBS) -C $(TARGET_BUILD) stage2-check-llvm || true + ninja -C $(TARGET_BUILD) stage2-check-llvm || true endif # Clang tests - $(MAKE) $(NJOBS) -C $(TARGET_BUILD) stage2-check-clang || true + ninja -C $(TARGET_BUILD) stage2-check-clang || true # Clang extra tests (ex: clang-tidy) - $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-clang-tools || true + ninja -C $(TARGET_BUILD_STAGE2) check-clang-tools || true # LLD tests ifeq (${LLD_ENABLE},yes) - $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-lld || true + ninja -C $(TARGET_BUILD_STAGE2) check-lld || true endif # Sanitizer - $(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-sanitizer || true + ninja -C $(TARGET_BUILD_STAGE2) check-sanitizer || true # Libcxx - $(MAKE) $(NJOBS) -C libcxx/build check-libcxx || true + ninja -C libcxx/build check-libcxx || true # Libcxxabi - $(MAKE) $(MAKE) -C libcxxabi/build check-libcxxabi || true + ninja -C libcxxabi/build check-libcxxabi || true # Libclc - $(MAKE) $(MAKE) -C libclc/build test || true + ninja -C libclc/build test || true # LLDB tests ifeq (,$(filter $(DEB_HOST_ARCH), $(LLDB_DISABLE_ARCHS) armhf armel)) @@ -917,7 +931,7 @@ ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) ln -s lldb/_lldb.so; \ fi if test "$(CODECOVERAGE)" = "no"; then \ - LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$(CURDIR)/$(TARGET_BUILD)/lib/ $(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-lldb || true; \ + LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$(CURDIR)/$(TARGET_BUILD)/lib/ ninja -C $(TARGET_BUILD) check-lldb || true; \ fi # remove the workaround rm $(CURDIR)/$(TARGET_BUILD)/lib/python*/*-packages/_lldb.so @@ -926,7 +940,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