try to used runtimes and others refactors

This commit is contained in:
Sylvestre Ledru 2021-09-01 12:47:01 +02:00
parent ebb113ddd7
commit fd6502bedd
2 changed files with 49 additions and 80 deletions

10
debian/changelog vendored
View File

@ -139,6 +139,16 @@ llvm-toolchain-12 (1:12.0.1-7) UNRELEASED; urgency=medium
[ Gianfranco Costamagna ]
* Add a patch to fix omp build on riscv64
* cmake: use ON instead of YES for consistency
* Add LIBCXXABI_ENABLE_STATIC_UNWINDER=ON
LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF
LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON
to libc++ when libunwind is built
Matches what is done on brew:
https://bit.ly/3kDNpC9
[ Gianfranco Costamagna ]
* Add a patch to fix omp build on riscv64
-- Sylvestre Ledru <sylvestre@debian.org> Sun, 29 Aug 2021 15:15:18 +0200

119
debian/rules vendored
View File

@ -1,7 +1,8 @@
#!/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
PROJECTS = clang;clang-tools-extra;lld;debuginfo-tests
RUNTIMES = compiler-rt;libcxx;libcxxabi
TARGET_BUILD := build-llvm
TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins
@ -107,7 +108,7 @@ 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
# Check for ancient libstdc++ fails due to atomics usage
CMAKE_EXTRA_LIBCXX += -DLLVM_COMPILER_CHECKED=ON
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
@ -203,8 +204,7 @@ OPENMP_ENABLE=yes
ifneq (,$(filter $(DEB_HOST_ARCH), m68k mips mipsel powerpc powerpcspe sparc64 s390x x32))
OPENMP_ENABLE=no
else
PROJECTS+=;openmp
# CMAKE_EXTRA += -DLIBOMPTARGET_BUILD_NVPTX_BCLIB=ON -DLLVM_ENABLE_RUNTIMES=openmp
RUNTIMES+=;openmp
endif
# Enable libunwind (or not)
@ -212,11 +212,12 @@ LIBUNWIND_ENABLE=yes
ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel hurd-i386 powerpc sparc64 x32))
LIBUNWIND_ENABLE=no
else
PROJECTS+=;libunwind
RUNTIMES += ;libunwind
CMAKE_LIBCXX_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
-DDLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \
-DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \
-DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON
-DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \
-DLIBUNWIND_USE_COMPILER_RT=ON
endif
RUN_TEST=yes
@ -336,6 +337,7 @@ endif
# 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")
preconfigure:
@ -352,6 +354,7 @@ preconfigure:
@echo "DISTRO=$(DISTRO)"
@echo "GCC_VERSION=$(GCC_VERSION)"
@echo "PROJECTS=$(PROJECTS_LIST)"
@echo "RUNTIMES=$(RUNTIMES_LIST)"
@echo "LLVM_VERSION=$(LLVM_VERSION)"
@echo "LLVM_VERSION_FULL=$(LLVM_VERSION_FULL)"
@echo "LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)"
@ -379,6 +382,25 @@ preconfigure:
sed -i -e "s|#spv\ ||g" debian/libclc-$(LLVM_VERSION).install; \
fi
# The various options to build libc++ and libc++abi
LIBCXX_CMAKE_OPTIONS := \
-DLIBCXX_USE_COMPILER_RT=ON \
-DLIBCXXABI_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_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 \
-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) \
$(CMAKE_LIBCXX_EXTRA)
# Override this two targets. They are trying to manage the .in conversion for me
override_dh_ocamlinit:
override_dh_ocamlclean:
@ -414,14 +436,15 @@ override_dh_auto_configure: preconfigure
echo "Running tests: $(RUN_TEST)"
echo "Using cmake: $(CMAKE_BIN)"; \
cd $(TARGET_BUILD) && \
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) ../llvm/ \
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \
-DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \
-DLLVM_ENABLE_RUNTIMES="$(RUNTIMES_LIST)" \
-DCMAKE_SUPPRESS_REGENERATION=ON \
-DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \
-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= \
@ -431,11 +454,11 @@ override_dh_auto_configure: preconfigure
-DLLVM_ENABLE_FFI=ON \
-DLLVM_ENABLE_DUMP=ON \
$(CMAKE_EXTRA) \
$(LIBCXX_CMAKE_OPTIONS) \
-DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \
-DCLANG_LINK_CLANG_DYLIB=ON \
-DENABLE_LINKER_BUILD_ID=ON \
-DCOMPILER_RT_USE_LIBCXX=NO \
-DLIBUNWIND_USE_COMPILER_RT=ON \
$(Z3_FLAG) \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR;M68k" \
-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
@ -458,7 +481,7 @@ VERBOSE=VERBOSE=1
#VERBOSE=-v
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 $(BUILD_METHOD)
$(PRE_PROCESS) make $(NJOBS) -C $(TARGET_BUILD) $(VERBOSE) CFLAGS="$(CFLAGS_EXTRA)" CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 stage2 compiler-rt runtimes
# Check the stage 2 build worked
if test "$(BUILD_METHOD)" = "stage2"; then \
@ -471,6 +494,8 @@ 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:
@ -484,66 +509,6 @@ ifeq (${LIBFUZZER_ENABLE},yes)
endif
touch $@
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 \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \
-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
-DLIBCXX_USE_COMPILER_RT=ON \
-DLIBCXXABI_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_EXTRA) \
$(CMAKE_EXTRA_LIBCXX)
debian-libcxx-build:
# Builds libcxx
mkdir -p libcxx/build
mkdir -p libcxxabi/build
echo "Using cmake: $(CMAKE_BIN)"; \
cd libcxxabi/build && \
$(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \
$(LIBCXX_CMAKE_OPTIONS) \
-DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \
-DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \
-DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/$(TARGET_BUILD_STAGE2)/include/c++/v1/ \
-DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \
-DLLVM_ENABLE_RTTI=ON \
$(CMAKE_LIBCXX_EXTRA) && \
$(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)"
touch $@
debian-libcxxabi-build:
# Builds libcxxabi
mkdir -p libcxxabi/build
echo "Using cmake: $(CMAKE_BIN)"; \
cd libcxx/build && \
$(PRE_PROCESS_CONF) $(CMAKE_BIN) ../ \
$(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 \
$(CMAKE_LIBCXX_EXTRA) && \
$(PRE_PROCESS_CONF) make $(NJOBS) $(VERBOSE) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)"
touch $@
debian-libclc-build:
# Builds libclc
@ -564,7 +529,7 @@ debian-libclc-build:
make $(NJOBS) $(VERBOSE)
touch $@
override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libcxx-build debian-libcxxabi-build debian-libclc-build
override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libclc-build
override_dh_prep: build_doc
dh_prep
@ -623,7 +588,7 @@ override_dh_auto_install:
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
if test "$(BUILD_METHOD)" = "stage2"; then \
$(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install DESTDIR=$(DEB_INST)/; \
$(MAKE) -C $(TARGET_BUILD) $(VERBOSE) stage2-install install-runtimes DESTDIR=$(DEB_INST)/; \
else \
$(MAKE) -C $(TARGET_BUILD) $(VERBOSE) install DESTDIR=$(DEB_INST)/; \
fi
@ -701,9 +666,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__/
$(MAKE) -C libcxxabi/build install DESTDIR=$(DEB_INST)
$(MAKE) -C libcxx/build install DESTDIR=$(DEB_INST)
$(MAKE) -C libclc/build install DESTDIR=$(DEB_INST)
# Rename binaries
@ -898,11 +860,8 @@ endif
# Sanitizer
$(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-sanitizer || true
# Libcxx
$(MAKE) $(NJOBS) -C libcxx/build check-libcxx || true
# Libcxxabi
$(MAKE) $(MAKE) -C libcxxabi/build check-libcxxabi || true
# Libcxx & libcxxabi
$(MAKE) $(NJOBS) -C $(TARGET_BUILD_STAGE2) check-runtimes || true
# Libclc
$(MAKE) $(MAKE) -C libclc/build test || true