diff --git a/debian/README b/debian/README index cb10c65f..9065b72a 100644 --- a/debian/README +++ b/debian/README @@ -9,7 +9,7 @@ The current snapshot release is maintained in the "snapshot" branch. The easiest way to get all branches is probably to have one clone per version: -for f in 7 8 9 snapshot; do +for f in 8 9 snapshot; do git clone git@salsa.debian.org:pkg-llvm-team/llvm-toolchain.git -b $f $f done @@ -23,7 +23,7 @@ Steps for manually building a snapshot release $ sh snapshot/debian/orig-tar.sh which will retrieve the latest version for each LLVM subproject (llvm, - clang, lldb, etc.) from the main development (upstream SVN). and repack it + clang, lldb, etc.) from the main development (upstream github). and repack it as a set of tarballs. 2) Unpack the original tarballs and apply quilt debian patches. @@ -33,8 +33,10 @@ Steps for manually building a snapshot release $ sh unpack.sh which will unpack the source tree inside a new directory such as - branches/llvm-toolchain-snapshot_3.10~svn26101042. Depending on the current - snapshot version number and svn release, the directory name will be + branches/llvm-toolchain-snapshot_3.9~+20191018225217+3b113a2be6d. + (date+hour+short git hash). + Depending on the current snapshot version number and git release, + the directory name will be different. Quilt patches will then be applied. @@ -52,22 +54,23 @@ Retrieving a specific branch or release candidate with orig-tar.sh When using orig-tar.sh, if you need to retrieve a specific branch, you can pass the branch name as the first argument. For example, to get the 10 release branch at - http://llvm.org/svn/llvm-project/{llvm,...}/branches/release_100 + https://github.com/llvm/llvm-project/branches you should use, - $ sh snapshot/debian/orig-tar.sh release_100 + $ sh 9/debian/orig-tar.sh release/9.x To retrieve a specific release candidate, you can pass the branch name as the first argument, and the tag rc number as the second argument. For example, to -get the 10.0.1 release candidate rc3 at - http://llvm.org/svn/llvm-project/{llvm,...}/tags/RELEASE_1001/rc3 +get the 9.0.1 release candidate rc3 at + https://github.com/llvm/llvm-project/tags you should use, - $ sh snapshot/debian/orig-tar.sh RELEASE_1001 rc3 10.0.1 + $ sh 9/debian/orig-tar.sh 9.0.1 rc3 For a stable release, the syntax is: - $ sh snapshot/debian/orig-tar.sh RELEASE_1000 final 10.0 + $ sh 9/debian/orig-tar.sh 9.0.0 + Additional maintainer scripts ============================= diff --git a/debian/changelog b/debian/changelog index 9c502aa1..b6304045 100644 --- a/debian/changelog +++ b/debian/changelog @@ -110,10 +110,18 @@ llvm-toolchain-snapshot (1:10~svn366440-1~exp1) experimental; urgency=medium -- Sylvestre Ledru Thu, 18 Jul 2019 18:58:32 +0200 -llvm-toolchain-9 (1:9-4) unstable; urgency=medium +llvm-toolchain-9 (1:9.0.0-1) unstable; urgency=medium + * Repack to move to git + * Move the checkout of the sources from svn to git + * Use -DLLVM_ENABLE_PROJECTS instead of symlinks + * Use -DBOOTSTRAP_LLVM_ENABLE_LTO instead of + -DLLVM_ENABLE_LTO (not sure what it wasn't done) * Add dependency between libclang-cpp => libllvm with the exact version (Closes: #942526) + + -- Sylvestre Ledru Sat, 19 Oct 2019 10:30:41 +0200 + llvm-toolchain-9 (1:9-3) unstable; urgency=medium * python-clang-9: missing dependency on libclang-9-dev diff --git a/debian/clang-X.Y-doc.docs.in b/debian/clang-X.Y-doc.docs.in index b3cc6a07..8c9084cf 100644 --- a/debian/clang-X.Y-doc.docs.in +++ b/debian/clang-X.Y-doc.docs.in @@ -1,2 +1,2 @@ -tools/clang/docs/_build/html/ +clang/docs/_build/html/ diff --git a/debian/clang-tools-X.Y.install.in b/debian/clang-tools-X.Y.install.in index 77772809..11065428 100644 --- a/debian/clang-tools-X.Y.install.in +++ b/debian/clang-tools-X.Y.install.in @@ -31,9 +31,9 @@ usr/lib/llvm-@LLVM_VERSION@/bin/pp-trace usr/lib/llvm-@LLVM_VERSION@/bin/clang-move usr/lib/llvm-@LLVM_VERSION@/bin/clang-offload-wrapper -tools/clang/tools/scan-build-@LLVM_VERSION@ usr/share/clang/ -tools/clang/tools/scan-build-py-@LLVM_VERSION@ usr/share/clang/ -tools/clang/tools/scan-view-@LLVM_VERSION@ usr/share/clang/ +clang/tools/scan-build-@LLVM_VERSION@ usr/share/clang/ +clang/tools/scan-build-py-@LLVM_VERSION@ usr/share/clang/ +clang/tools/scan-view-@LLVM_VERSION@ usr/share/clang/ usr/lib/llvm-@LLVM_VERSION@/share/clang/run-find-all-symbols.py usr/lib/llvm-@LLVM_VERSION@/share/clang/clang-include-fixer.py diff --git a/debian/llvm-X.Y-dev.install.in b/debian/llvm-X.Y-dev.install.in index d9758e0e..e5e3fc65 100644 --- a/debian/llvm-X.Y-dev.install.in +++ b/debian/llvm-X.Y-dev.install.in @@ -12,21 +12,21 @@ usr/lib/llvm-@LLVM_VERSION@/include/llvm-c/ usr/include/llvm-c-@LLVM_VERSION@/ # Explicit debian/tmp since there are multiple declarations debian/tmp/usr/lib/llvm-@LLVM_VERSION@/lib/cmake/llvm/*.cmake -utils/vim/indent/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/indent/ +llvm/utils/vim/indent/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/indent/ -utils/vim/syntax/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/syntax/ -utils/vim/syntax/tablegen-@LLVM_VERSION@.vim usr/share/vim/addons/syntax/ +llvm/utils/vim/syntax/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/syntax/ +llvm/utils/vim/syntax/tablegen-@LLVM_VERSION@.vim usr/share/vim/addons/syntax/ -utils/vim/ftdetect/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/ftdetect/ -utils/vim/ftdetect/tablegen-@LLVM_VERSION@.vim usr/share/vim/addons/ftdetect/ +llvm/utils/vim/ftdetect/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/ftdetect/ +llvm/utils/vim/ftdetect/tablegen-@LLVM_VERSION@.vim usr/share/vim/addons/ftdetect/ -utils/vim/ftplugin/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/ftplugin/ -utils/vim/ftplugin/tablegen-@LLVM_VERSION@.vim usr/share/vim/addons/ftplugin/ +llvm/utils/vim/ftplugin/llvm-@LLVM_VERSION@.vim usr/share/vim/addons/ftplugin/ +llvm/utils/vim/ftplugin/tablegen-@LLVM_VERSION@.vim usr/share/vim/addons/ftplugin/ -utils/vim/llvm-@LLVM_VERSION@-vimrc usr/share/vim/addons +llvm/utils/vim/llvm-@LLVM_VERSION@-vimrc usr/share/vim/addons -utils/emacs/emacs.el usr/share/emacs/site-lisp/llvm-@LLVM_VERSION@/ -utils/emacs/llvm-mode.el usr/share/emacs/site-lisp/llvm-@LLVM_VERSION@/ -utils/emacs/tablegen-mode.el usr/share/emacs/site-lisp/llvm-@LLVM_VERSION@/ +llvm/utils/emacs/emacs.el usr/share/emacs/site-lisp/llvm-@LLVM_VERSION@/ +llvm/utils/emacs/llvm-mode.el usr/share/emacs/site-lisp/llvm-@LLVM_VERSION@/ +llvm/utils/emacs/tablegen-mode.el usr/share/emacs/site-lisp/llvm-@LLVM_VERSION@/ diff --git a/debian/llvm-X.Y-doc.install.in b/debian/llvm-X.Y-doc.install.in index 6ac115a5..a84b0423 100644 --- a/debian/llvm-X.Y-doc.install.in +++ b/debian/llvm-X.Y-doc.install.in @@ -1,4 +1,4 @@ -docs/_build/html usr/share/doc/llvm-@LLVM_VERSION@-doc/ +llvm/docs/_build/html usr/share/doc/llvm-@LLVM_VERSION@-doc/ #usr/lib/llvm-@LLVM_VERSION@/docs/llvm/html.tar.gz #usr/lib/llvm-@LLVM_VERSION@/docs/llvm/ocamldoc.tar.gz #usr/lib/llvm-@LLVM_VERSION@/docs/llvm/html/Dummy.html diff --git a/debian/llvm-X.Y-tools.install.in b/debian/llvm-X.Y-tools.install.in index 282dd225..fed288a2 100644 --- a/debian/llvm-X.Y-tools.install.in +++ b/debian/llvm-X.Y-tools.install.in @@ -9,7 +9,7 @@ usr/lib/llvm-@LLVM_VERSION@/share/opt-viewer/opt-diff.py usr/lib/llvm-@LLVM_VERSION@/share/opt-viewer/optpmap.py usr/lib/llvm-@LLVM_VERSION@/share/opt-viewer/opt-stats.py -utils/lit/* /usr/lib/llvm-@LLVM_VERSION@/build/utils/lit/ +llvm/utils/lit/* /usr/lib/llvm-@LLVM_VERSION@/build/utils/lit/ usr/bin/count-@LLVM_VERSION@ usr/bin/FileCheck-@LLVM_VERSION@ diff --git a/debian/orig-tar.sh b/debian/orig-tar.sh index 24336cba..46e6343c 100755 --- a/debian/orig-tar.sh +++ b/debian/orig-tar.sh @@ -13,206 +13,127 @@ set -e -# TODO rest of the options +# commands: +# sh 9/debian/orig-tar.sh release/9.x +# sh 9/debian/orig-tar.sh 9.0.0 rc3 +# sh 9/debian/orig-tar.sh 9.0.1 rc3 +# Stable release +# sh 9/debian/orig-tar.sh 9.0.0 9.0.0 + # To create an rc1 release: -# sh 4.0/debian/orig-tar.sh RELEASE_40 rc1 +# sh 4.0/debian/orig-tar.sh release/9.x -SVN_BASE_URL=https://llvm.org/svn/llvm-project/ -MAJOR_VERSION=10 -CURRENT_VERSION=10 # Should be changed to 3.5.1 later +GIT_BASE_URL=https://github.com/llvm/llvm-project + +PATH_DEBIAN="$(pwd)/$(dirname $0)/../" +cd "$PATH_DEBIAN" +MAJOR_VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") +if test -z "$MAJOR_VERSION"; then + echo "Could not detect the major version" + exit 1 +fi +CURRENT_VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1,p") +if test -z "$CURRENT_VERSION"; then + echo "Could not detect the full version" + exit 1 +fi +cd - if test -n "$1"; then -# https://llvm.org/svn/llvm-project/{cfe,llvm,compiler-rt,...}/branches/google/stable/ -# For example: sh 4.0/debian/orig-tar.sh release_400 +# https://github.com/llvm/llvm-project/tree/release/9.x +# For example: sh 4.0/debian/orig-tar.sh release/9.x BRANCH=$1 + if ! echo "$1"|grep release/; then + # The first argument is NOT a branch, means that it is a stable release + FINAL_RELEASE=true + EXACT_VERSION=$1 + fi +else + # No argument, we need trunk + cd "$PATH_DEBIAN" + SOURCE=$(dpkg-parsechangelog |grep ^Source|awk '{print $2}') + cd - + if test "$SOURCE" != "llvm-toolchain-snapshot"; then + echo "Checkout of the master is only available for llvm-toolchain-snapshot" + exit 1 + fi + BRANCH="master" fi if test -n "$1" -a -n "$2"; then -# https://llvm.org/svn/llvm-project/{cfe,llvm,compiler-rt,...}/tags/RELEASE_34/rc1/ -# For example: sh 4.0/debian/orig-tar.sh RELEASE_401 rc3 4.0.1 - BRANCH=$1 +# https://github.com/llvm/llvm-project/releases/tag/llvmorg-9.0.0 +# For example: sh 4.0/debian/orig-tar.sh 4.0.1 rc3 +# or sh 9/debian/orig-tar.sh 9.0.0 TAG=$2 RCRELEASE="true" - if test -z "$3"; then - echo "Please provide the exact version. Used for the tarball name Ex: 4.0.1" - fi - EXACT_VERSION=$3 + EXACT_VERSION=$1 fi -get_svn_url() { - MODULE=$1 - BRANCH=$2 - TAG=$3 - if test -n "$TAG"; then - SVN_URL="$SVN_BASE_URL/$MODULE/tags/$BRANCH/$TAG" - else - if test -n "$BRANCH"; then - SVN_URL="$SVN_BASE_URL/$MODULE/branches/$BRANCH" - else - SVN_URL="$SVN_BASE_URL/$MODULE/trunk/" - fi - fi - echo $SVN_URL -} - -get_higher_revision() { - PROJECTS="llvm cfe compiler-rt polly lld lldb clang-tools-extra" - REVISION_MAX=0 - for f in $PROJECTS; do - REVISION=$(LANG=C svn info $(get_svn_url $f $BRANCH $TAG)|grep "^Last Changed Rev:"|awk '{print $4}') - if test $REVISION -gt $REVISION_MAX; then - REVISION_MAX=$REVISION - fi - done - echo $REVISION_MAX -} - -SVN_ARCHIVES=svn-archives - -checkout_sources() { - PROJECT=$1 - URL=$2 - TARGET=$3 - BRANCH=$4 - if test -n "$BRANCH"; then - REVISION=$5 - fi - echo "$PROJECT / $URL / $BRANCH / $TARGET / $REVISION" - - cd $SVN_ARCHIVES/ - DEST=$PROJECT-$BRANCH - if test -n "$TAG"; then - DEST=$DEST-$TAG - fi - if test -d $DEST; then - cd $DEST - if test -n "$BRANCH"; then - svn cleanup - svn up - else - svn cleanup - svn up -r $REVISION - fi - cd .. - else - if test -n "$BRANCH"; then - svn co $URL $DEST - else - svn co -r $REVISION $URL $DEST - fi - fi - rm -rf ../$TARGET - rsync -r --exclude=.svn $DEST/ ../$TARGET +# Update or retrieve the repo +mkdir -p git-archive +cd git-archive +if test -d llvm-project; then + # Update it + cd llvm-project + git remote update > /dev/null + git reset --hard origin/master > /dev/null + git clean -qfd + git checkout master > /dev/null cd .. -} - -if test -n "$BRANCH"; then - REVISION=$(get_higher_revision) - # Do not use the revision when exporting branch. We consider that all the - # branch are sync - SVN_CMD="svn export" else - REVISION=$(LANG=C svn info $(get_svn_url llvm)|grep "^Revision:"|awk '{print $2}') - SVN_CMD="svn export -r $REVISION" + # Download it + git clone $GIT_BASE_URL fi -if test -n "$RCRELEASE"; then - if test "$TAG" = "final"; then - VERSION=$EXACT_VERSION +cd llvm-project +if test -z "$TAG" -a -z "$FINAL_RELEASE"; then + # Building a branch + git checkout $BRANCH + if test $BRANCH != "master"; then + VERSION=$(echo $BRANCH|cut -d/ -f2|cut -d. -f1) + if ! echo "$MAJOR_VERSION"|grep -q "$VERSION"; then + echo "mismatch in version: Dir=$MAJOR_VERSION Provided=$VERSION" + exit 1 + fi else - VERSION=$EXACT_VERSION"~+"$TAG + # No argument, take master. So, it can only be snapshot + VERSION=$MAJOR_VERSION + MAJOR_VERSION=snapshot fi - FULL_VERSION="llvm-toolchain-"$MAJOR_VERSION"_"$VERSION + # the + is here to make sure that this version is considered more recent than the svn + # dpkg --compare-versions 10~svn374977-1~exp1 lt 10~+2019-svn374977-1~exp1 + # to verify that + VERSION="${VERSION}~+$(git log -1 --pretty=format:'%ci-%h'|sed -e "s|+\(.*\)-|+|g" -e "s| ||g" -e "s|-||g" -e "s|:||g" )" else - VERSION=$CURRENT_VERSION"~svn"$REVISION - if echo $BRANCH|grep -q release_; then - FULL_VERSION="llvm-toolchain-"$MAJOR_VERSION"_"$VERSION - else - FULL_VERSION="llvm-toolchain-snapshot_"$VERSION + + if ! echo "$EXACT_VERSION"|grep -q "$MAJOR_VERSION"; then + echo "Mismatch in version: Dir=$MAJOR_VERSION Provided=$EXACT_VERSION" + exit 1 fi + git_tag="llvmorg-$EXACT_VERSION" + VERSION=$EXACT_VERSION + if test -n "$TAG" -a -z "$FINAL_RELEASE"; then + git_tag="$git_tag-$TAG" + VERSION="$VERSION~+$TAG" + fi + + git checkout "$git_tag" > /dev/null + fi -mkdir -p $SVN_ARCHIVES +# cleanup +rm -rf */www/ -# LLVM -LLVM_TARGET=$FULL_VERSION -checkout_sources llvm $(get_svn_url llvm $BRANCH $TAG) $LLVM_TARGET "$BRANCH" $REVISION -tar jcf $FULL_VERSION.orig.tar.bz2 $LLVM_TARGET -rm -rf $LLVM_TARGET +cd ../ +BASE="llvm-toolchain-${MAJOR_VERSION}_${VERSION}" +FILENAME="${BASE}.orig.tar.xz" +echo "Compressing to $FILENAME" +tar Jcf ../"$FILENAME" --exclude .git --transform="s/llvm-project/$BASE/" llvm-project - -# Clang -CLANG_TARGET=clang_$VERSION -checkout_sources clang $(get_svn_url cfe $BRANCH $TAG) $CLANG_TARGET "$BRANCH" $REVISION -tar jcf $FULL_VERSION.orig-clang.tar.bz2 $CLANG_TARGET -rm -rf $CLANG_TARGET - - -# Clang extra -CLANG_TARGET=clang-tools-extra_$VERSION -checkout_sources clang-tools-extra $(get_svn_url clang-tools-extra $BRANCH $TAG) $CLANG_TARGET "$BRANCH" $REVISION -tar jcf $FULL_VERSION.orig-clang-tools-extra.tar.bz2 $CLANG_TARGET -rm -rf $CLANG_TARGET - -# Compiler-rt -COMPILER_RT_TARGET=compiler-rt_$VERSION -checkout_sources compiler-rt $(get_svn_url compiler-rt $BRANCH $TAG) $COMPILER_RT_TARGET "$BRANCH" $REVISION -#$SVN_CMD $(get_svn_url compiler-rt $BRANCH $TAG) $COMPILER_RT_TARGET -tar jcf $FULL_VERSION.orig-compiler-rt.tar.bz2 $COMPILER_RT_TARGET -rm -rf $COMPILER_RT_TARGET - -# Polly -POLLY_TARGET=polly_$VERSION -checkout_sources polly $(get_svn_url polly $BRANCH $TAG) $POLLY_TARGET "$BRANCH" $REVISION -#$SVN_CMD $(get_svn_url polly $BRANCH $TAG) $POLLY_TARGET -rm -rf $POLLY_TARGET/www $POLLY_TARGET/autoconf/config.sub $POLLY_TARGET/autoconf/config.guess -tar jcf $FULL_VERSION.orig-polly.tar.bz2 $POLLY_TARGET -rm -rf $POLLY_TARGET - -# LLD -LLD_TARGET=lld_$VERSION -checkout_sources lld $(get_svn_url lld $BRANCH $TAG) $LLD_TARGET "$BRANCH" $REVISION -#$SVN_CMD $(get_svn_url lld $BRANCH $TAG) $LLD_TARGET -rm -rf $LLD_TARGET/www/ -tar jcf $FULL_VERSION.orig-lld.tar.bz2 $LLD_TARGET -rm -rf $LLD_TARGET - -# LLDB -LLDB_TARGET=lldb_$VERSION -checkout_sources lldb $(get_svn_url lldb $BRANCH $TAG) $LLDB_TARGET "$BRANCH" $REVISION -#$SVN_CMD $(get_svn_url lldb $BRANCH $TAG) $LLDB_TARGET -rm -rf $LLDB_TARGET/www/ -tar jcf $FULL_VERSION.orig-lldb.tar.bz2 $LLDB_TARGET -rm -rf $LLDB_TARGET - -# OPENMP -OPENMP_TARGET=openmp_$VERSION -checkout_sources openmp $(get_svn_url openmp $BRANCH $TAG) $OPENMP_TARGET "$BRANCH" $REVISION -rm -rf $OPENMP_TARGET/www/ -tar jcf $FULL_VERSION.orig-openmp.tar.bz2 $OPENMP_TARGET -rm -rf $OPENMP_TARGET - -# LIBCXX -LIBCXX_TARGET=libcxx_$VERSION -checkout_sources libcxx $(get_svn_url libcxx $BRANCH $TAG) $LIBCXX_TARGET "$BRANCH" $REVISION -rm -rf $LIBCXX_TARGET/www/ -tar jcf $FULL_VERSION.orig-libcxx.tar.bz2 $LIBCXX_TARGET -rm -rf $LIBCXX_TARGET - -# LIBCXXABI -LIBCXXABI_TARGET=libcxxabi_$VERSION -checkout_sources libcxxabi $(get_svn_url libcxxabi $BRANCH $TAG) $LIBCXXABI_TARGET "$BRANCH" $REVISION -rm -rf $LIBCXXABI_TARGET/www/ -tar jcf $FULL_VERSION.orig-libcxxabi.tar.bz2 $LIBCXXABI_TARGET -rm -rf $LIBCXXABI_TARGET - - -PATH_DEBIAN="$(pwd)/$(dirname $0)/../" -echo "going into $PATH_DEBIAN" export DEBFULLNAME="Sylvestre Ledru" export DEBEMAIL="sylvestre@debian.org" -cd $PATH_DEBIAN +cd "$PATH_DEBIAN" if test -z "$DISTRIBUTION"; then DISTRIBUTION="experimental" @@ -222,6 +143,6 @@ if test -n "$RCRELEASE" -o -n "$BRANCH"; then EXTRA_DCH_FLAGS="--force-bad-version --allow-lower-version" fi -dch $EXTRA_DCH_FLAGS --distribution $DISTRIBUTION --newversion 1:$VERSION-1~exp1 "New snapshot release" +dch "$EXTRA_DCH_FLAGS" --distribution $DISTRIBUTION --newversion 1:"$VERSION"-1~exp1 "New snapshot release" exit 0 diff --git a/debian/patches/clang-riscv64-rv64gc.diff b/debian/patches/clang-riscv64-rv64gc.diff new file mode 100644 index 00000000..17275888 --- /dev/null +++ b/debian/patches/clang-riscv64-rv64gc.diff @@ -0,0 +1,38 @@ +Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +=================================================================== +--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Arch/RISCV.cpp ++++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +@@ -350,6 +350,13 @@ void riscv::getRISCVTargetFeatures(const + + // Handle all other types of extensions. + getExtensionFeatures(D, Args, Features, MArch, OtherExts); ++ } else { ++ // Default to imafdc aka gc ++ Features.push_back("+m"); ++ Features.push_back("+a"); ++ Features.push_back("+f"); ++ Features.push_back("+d"); ++ Features.push_back("+c"); + } + + // -mrelax is default, unless -mno-relax is specified. +@@ -375,5 +382,5 @@ StringRef riscv::getRISCVABI(const ArgLi + if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) + return A->getValue(); + +- return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64"; ++ return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64d"; + } +Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp +=================================================================== +--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Clang.cpp ++++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp +@@ -1862,7 +1862,7 @@ void Clang::AddRISCVTargetArgs(const Arg + else if (Triple.getArch() == llvm::Triple::riscv32) + ABIName = "ilp32"; + else if (Triple.getArch() == llvm::Triple::riscv64) +- ABIName = "lp64"; ++ ABIName = "lp64d"; + else + llvm_unreachable("Unexpected triple!"); + diff --git a/debian/python-clang-X.Y.install.in b/debian/python-clang-X.Y.install.in index b5494214..62bbb36f 100644 --- a/debian/python-clang-X.Y.install.in +++ b/debian/python-clang-X.Y.install.in @@ -1 +1 @@ -tools/clang/bindings/python/clang/ /usr/lib/python2.7/dist-packages/ +clang/bindings/python/clang/ /usr/lib/python2.7/dist-packages/ diff --git a/debian/rules b/debian/rules index 6596a83d..5b2ba1fd 100755 --- a/debian/rules +++ b/debian/rules @@ -1,5 +1,7 @@ #!/usr/bin/make -f +PROJECTS="clang;clang-tools-extra;libcxx;libcxxabi;lldb;compiler-rt;lld;polly;debuginfo-tests;openmp" + TARGET_BUILD := build-llvm TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins DEB_INST := $(CURDIR)/debian/tmp/ @@ -245,7 +247,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) # armhf is not yet quite ready for Thin, it FTBFS # see https://buildd.debian.org/status/fetch.php?pkg=llvm-toolchain-8&arch=armhf&ver=1%3A8.0.1%7E%2Brc2-1%7Eexp1&stamp=1560334266&raw=0 ifeq (,$(filter $(DEB_HOST_ARCH), armhf)) - CMAKE_EXTRA += -DLLVM_ENABLE_LTO="Thin" + CMAKE_EXTRA += -DBOOTSTRAP_LLVM_ENABLE_LTO="Thin" endif endif endif @@ -317,55 +319,6 @@ override_dh_auto_configure: preconfigure sed -e "s|@DEB_PATCHSETVERSION@|$(DEBIAN_REVISION)|" \ debian/debian_path.h > clang/include/clang/Debian/debian_path.h -# Remove some old symlinks - cd tools/ && \ - if test -h clang; then \ - rm clang; \ - fi; \ - ln -s ../clang .; \ - readlink clang - - if test "$(POLLY_ENABLE)" = yes; then \ - cd tools/ && \ - if test -h polly; then \ - rm polly; \ - fi; \ - ln -s ../polly .; \ - fi - - if test "$(LLD_ENABLE)" = yes; then \ - cd tools/ && \ - if test -h lld; then \ - rm lld; \ - fi; \ - ln -s ../lld .; \ - readlink lld; \ - fi - - if test "$(LLDB_ENABLE)" = yes; then \ - cd tools/ && \ - if test -h lldb; then \ - rm lldb; \ - fi; \ - ln -s ../lldb .; \ - fi - - cd projects/ && \ - if test -h compiler-rt; then \ - rm compiler-rt; \ - fi; \ - ln -s ../compiler-rt .; \ - readlink compiler-rt - - if test "$(OPENMP_ENABLE)" = yes; then \ - cd projects/ && \ - if test -h openmp; then \ - rm openmp; \ - fi; \ - ln -s ../openmp .; \ - readlink openmp; \ - fi - # Configure coverity (we need the compilers) + work around perf issues -(if test $(COVERITY_ENABLE) -eq 1; then \ export PATH=$$PATH:/opt/cov-analysis/bin/; \ @@ -387,10 +340,6 @@ override_dh_auto_configure: preconfigure --xml-option append_arg:"replace/llvm::AlignOf::Alignment/(llvm::AlignOf::Alignment)"; \ fi) - # Due to bug upstream, no symlink here - rm -fr tools/clang/tools/extra - cp -R -H clang-tools-extra tools/clang/tools/extra - echo "Running tests: $(RUN_TEST)" # if cmake is installed in /tmp/cmake/ uses it @@ -401,7 +350,8 @@ override_dh_auto_configure: preconfigure fi; \ echo "Using cmake: $$CMAKE_BIN"; \ cd $(TARGET_BUILD) && \ - $(PRE_PROCESS_CONF) $$CMAKE_BIN ../ \ + $(PRE_PROCESS_CONF) $$CMAKE_BIN ../llvm/ \ + -DLLVM_ENABLE_PROJECTS=$(PROJECTS) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ @@ -475,7 +425,7 @@ LIBCXX_CMAKE_OPTIONS := \ -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)/utils/lit/lit.py \ + -DLLVM_EXTERNAL_LIT=$(BASE_PATH)/llvm/utils/lit/lit.py \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ $(CMAKE_EXTRA) \ $(CMAKE_EXTRA_LIBCXX) @@ -529,7 +479,7 @@ override_dh_prep: build_doc dh_prep build_doc: - cd $(CURDIR)/docs && make -f Makefile.sphinx && make -f Makefile.sphinx man + 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; \ @@ -673,12 +623,12 @@ endif # copy the vim files (except that tablegen does not exist for indent VIM_DIRS="ftdetect ftplugin syntax indent"; \ for dir in $$VIM_DIRS; do \ - cp -f $(CURDIR)/utils/vim/$$dir/llvm.vim $(CURDIR)/utils/vim/$$dir/llvm-$(LLVM_VERSION).vim; \ - if test -f $(CURDIR)/utils/vim/$$dir/tablegen.vim; then \ - cp -f $(CURDIR)/utils/vim/$$dir/tablegen.vim $(CURDIR)/utils/vim/$$dir/tablegen-$(LLVM_VERSION).vim; \ + cp -f $(CURDIR)/llvm/utils/vim/$$dir/llvm.vim $(CURDIR)/llvm/utils/vim/$$dir/llvm-$(LLVM_VERSION).vim; \ + if test -f $(CURDIR)/llvm/utils/vim/$$dir/tablegen.vim; then \ + cp -f $(CURDIR)/llvm/utils/vim/$$dir/tablegen.vim $(CURDIR)/llvm/utils/vim/$$dir/tablegen-$(LLVM_VERSION).vim; \ fi; \ done - cp -f $(CURDIR)/utils/vim/vimrc $(CURDIR)/utils/vim/llvm-$(LLVM_VERSION)-vimrc + cp -f $(CURDIR)/llvm/utils/vim/vimrc $(CURDIR)/llvm/utils/vim/llvm-$(LLVM_VERSION)-vimrc cp -f $(CURDIR)/clang/tools/clang-format/clang-format-diff.py $(CURDIR)/clang/tools/clang-format/clang-format-diff-$(LLVM_VERSION)