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)