# git rev-parse -q --verify 7d42223a874f7426b58792166fce20f78581b5c4^{commit} # git fetch -q -n -f git://gitlab.ozlabs.ibm.com/mirror/linux-kbuild.git for-next # git rev-parse -q --verify 7d42223a874f7426b58792166fce20f78581b5c4^{commit} 7d42223a874f7426b58792166fce20f78581b5c4 # git checkout -q -f -B kisskb 7d42223a874f7426b58792166fce20f78581b5c4 # git clean -qxdf # < git log -1 # commit 7d42223a874f7426b58792166fce20f78581b5c4 # Author: Masahiro Yamada # Date: Wed Apr 8 03:43:36 2020 +0900 # # kbuild: support LLVM=1 to switch the default tools to Clang/LLVM # # As Documentation/kbuild/llvm.rst implies, building the kernel with a # full set of LLVM tools gets very verbose and unwieldy. # # Provide a single switch LLVM=1 to use Clang and LLVM tools instead # of GCC and Binutils. You can pass it from the command line or as an # environment variable. # # Please note LLVM=1 does not turn on the integrated assembler. You need # to pass LLVM_IA=1 to use it. When the upstream kernel is ready for the # integrated assembler, I think we can make it default. # # We discussed what we need, and we agreed to go with a simple boolean # flag that switches both target and host tools: # # https://lkml.org/lkml/2020/3/28/494 # https://lkml.org/lkml/2020/4/3/43 # # Some items discussed, but not adopted: # # - LLVM_DIR # # When multiple versions of LLVM are installed, I just thought supporting # LLVM_DIR=/path/to/my/llvm/bin/ might be useful. # # CC = $(LLVM_DIR)clang # LD = $(LLVM_DIR)ld.lld # ... # # However, we can handle this by modifying PATH. So, we decided to not do # this. # # - LLVM_SUFFIX # # Some distributions (e.g. Debian) package specific versions of LLVM with # naming conventions that use the version as a suffix. # # CC = clang$(LLVM_SUFFIX) # LD = ld.lld(LLVM_SUFFIX) # ... # # will allow a user to pass LLVM_SUFFIX=-11 to use clang-11 etc., # but the suffixed versions in /usr/bin/ are symlinks to binaries in # /usr/lib/llvm-#/bin/, so this can also be handled by PATH. # # Signed-off-by: Masahiro Yamada # Reviewed-by: Nathan Chancellor # Tested-by: Nathan Chancellor # build # Tested-by: Nick Desaulniers # Reviewed-by: Nick Desaulniers # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/s390-linux/bin/s390-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/s390-linux/bin/s390-linux-ld --version # < git log --format=%s --max-count=1 7d42223a874f7426b58792166fce20f78581b5c4 # < make -s -j 10 ARCH=s390 O=/kisskb/build/kbuild_s390-defconfig_s390x-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/s390-linux/bin/s390-linux- defconfig # < make -s -j 10 ARCH=s390 O=/kisskb/build/kbuild_s390-defconfig_s390x-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/s390-linux/bin/s390-linux- help # make -s -j 10 ARCH=s390 O=/kisskb/build/kbuild_s390-defconfig_s390x-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/s390-linux/bin/s390-linux- olddefconfig # make -s -j 10 ARCH=s390 O=/kisskb/build/kbuild_s390-defconfig_s390x-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/s390-linux/bin/s390-linux- /kisskb/src/kernel/futex.c: In function 'do_futex': /kisskb/src/kernel/futex.c:1676:17: warning: 'oldval' may be used uninitialized in this function [-Wmaybe-uninitialized] return oldval == cmparg; ^ /kisskb/src/kernel/futex.c:1652:6: note: 'oldval' was declared here int oldval, ret; ^ /kisskb/src/fs/btrfs/backref.c: In function 'is_shared_data_backref': /kisskb/src/fs/btrfs/backref.c:394:9: warning: missing braces around initializer [-Wmissing-braces] struct prelim_ref target = {0}; ^ /kisskb/src/fs/btrfs/backref.c:394:9: warning: (near initialization for 'target.rbnode') [-Wmissing-braces] Completed OK # rm -rf /kisskb/build/kbuild_s390-defconfig_s390x-gcc4.9 # Build took: 0:07:26.166096