diff --git a/debian/changelog b/debian/changelog index 2f30e96d..de4cf3cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,9 @@ llvm-toolchain-snapshot (1:16~++20220727093617+17fb879764dc-1~exp1) experimental * clang doesn't have a specific SONAME anymore. See https://reviews.llvm.org/D129160 for the rational * Install clang-tblgen in clang-tools-X.Y + * For apt.llvm.org on stretch, from snapshot, also use libc++ for the + build. It adds a dependency on libc++. It might be extended in + the future for for now, it is Debian/stretch only -- Sylvestre Ledru Wed, 27 Jul 2022 21:36:27 +0200 diff --git a/debian/rules b/debian/rules index 5846154e..dfda7a88 100755 --- a/debian/rules +++ b/debian/rules @@ -62,6 +62,11 @@ LDFLAGS_EXTRA = -Wl,--build-id STAGE_1_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS) STAGE_1_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS) STAGE_1_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA) +# If we build with libc++, we might want to set different arguments for +# stage 1 & runtimes +RUNTIMES_CFLAGS = $(STAGE_1_CFLAGS) +RUNTIMES_CXXFLAGS := $(STAGE_1_CXXFLAGS) +RUNTIMES_LDFLAGS := $(STAGE_1_LDFLAGS) # collect all flags for stage 2 toolchain and stand-alone builds STAGE_2_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS) @@ -106,7 +111,16 @@ ifneq (,$(filter $(DISTRO),stretch)) # GCC_VERSION := 7 # Don't enable lld python for old distros STAGE_ALL_CMAKE_EXTRA += -DLLDB_ENABLE_PYTHON=OFF +# Only enabled for stage 1, for stage2, it will use the local libc++ version + STAGE_1_CMAKE_EXTRA += -DCLANG_DEFAULT_CXX_STDLIB=libc++ + STAGE_1_CMAKE_EXTRA += -DLLVM_ENABLE_LIBCXX=ON + STAGE_1_CXXFLAGS += -I/usr/lib/llvm-14/include/c++/v1/ -stdlib=libc++ + STAGE_1_LDFLAGS += -stdlib=libc++ USE_CLANG_PACKAGE_TO_BUILD_ITSELF = yes +else +# For all other deb/ubuntu, use libstdc++ +# TODO: At some point, we might want to use libc++ + CMAKE_EXTRA += -DCLANG_DEFAULT_CXX_STDLIB=libstdc++ endif Z3_FLAG = -DLLVM_ENABLE_Z3_SOLVER=OFF @@ -462,6 +476,9 @@ preconfigure: @echo "LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)" @echo "PATH=$(PATH)" @echo "LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)" + @echo "RUNTIMES_CXXFLAGS=$(RUNTIMES_CXXFLAGS)" + @echo "STAGE_1_CXXFLAGS=$(STAGE_1_CXXFLAGS)" + @echo "STAGE_2_CFLAGS=$(STAGE_2_CFLAGS)" for f in debian/*.in; do \ f2=$$(echo $$f | sed 's/\.in$$//;s/X\.Y/$(LLVM_VERSION)/'); \ @@ -580,7 +597,6 @@ override_dh_auto_configure: preconfigure -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 \ @@ -632,7 +648,7 @@ override_dh_auto_configure: preconfigure -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_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_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=$(RUNTIMES_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_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 \