forked from Minki/linux
bpf, docs: Update build procedure for manually compiling LLVM and Clang
The current LLVM and Clang build procedure in samples/bpf/README.rst is out of date. See below that the links are not accessible any more. $ git clone http://llvm.org/git/llvm.git Cloning into 'llvm'... fatal: unable to access 'http://llvm.org/git/llvm.git/': Maximum (20) redirects followed $ git clone --depth 1 http://llvm.org/git/clang.git Cloning into 'clang'... fatal: unable to access 'http://llvm.org/git/clang.git/': Maximum (20) redirects followed The LLVM community has adopted new ways to build the compiler. There are different ways to build LLVM and Clang, the Clang Getting Started page [1] has one way. As Yonghong said, it is better to copy the build procedure in Documentation/bpf/bpf_devel_QA.rst to keep consistent. I verified the procedure and it is proved to be feasible, so we should update README.rst to reflect the reality. At the same time, update the related comment in Makefile. Additionally, as Fangrui said, the dir llvm-project/llvm/build/install is not used, BUILD_SHARED_LIBS=OFF is the default option [2], so also change Documentation/bpf/bpf_devel_QA.rst together. At last, we recommend that developers who want the fastest incremental builds use the Ninja build system [1], you can find it in your system's package manager, usually the package is ninja or ninja-build [3], so add ninja to build dependencies suggested by Nathan. [1] https://clang.llvm.org/get_started.html [2] https://www.llvm.org/docs/CMake.html [3] https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Acked-by: Yonghong Song <yhs@fb.com> Cc: Fangrui Song <maskray@google.com> Link: https://lore.kernel.org/bpf/1611279584-26047-1-git-send-email-yangtiezhu@loongson.cn
This commit is contained in:
parent
443edcefb8
commit
628add78b0
@ -501,16 +501,19 @@ All LLVM releases can be found at: http://releases.llvm.org/
|
|||||||
|
|
||||||
Q: Got it, so how do I build LLVM manually anyway?
|
Q: Got it, so how do I build LLVM manually anyway?
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
A: You need cmake and gcc-c++ as build requisites for LLVM. Once you have
|
A: We recommend that developers who want the fastest incremental builds
|
||||||
that set up, proceed with building the latest LLVM and clang version
|
use the Ninja build system, you can find it in your system's package
|
||||||
|
manager, usually the package is ninja or ninja-build.
|
||||||
|
|
||||||
|
You need ninja, cmake and gcc-c++ as build requisites for LLVM. Once you
|
||||||
|
have that set up, proceed with building the latest LLVM and clang version
|
||||||
from the git repositories::
|
from the git repositories::
|
||||||
|
|
||||||
$ git clone https://github.com/llvm/llvm-project.git
|
$ git clone https://github.com/llvm/llvm-project.git
|
||||||
$ mkdir -p llvm-project/llvm/build/install
|
$ mkdir -p llvm-project/llvm/build
|
||||||
$ cd llvm-project/llvm/build
|
$ cd llvm-project/llvm/build
|
||||||
$ cmake .. -G "Ninja" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
|
$ cmake .. -G "Ninja" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
|
||||||
-DLLVM_ENABLE_PROJECTS="clang" \
|
-DLLVM_ENABLE_PROJECTS="clang" \
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DLLVM_BUILD_RUNTIME=OFF
|
-DLLVM_BUILD_RUNTIME=OFF
|
||||||
$ ninja
|
$ ninja
|
||||||
|
@ -208,7 +208,7 @@ TPROGLDLIBS_xdpsock += -pthread -lcap
|
|||||||
TPROGLDLIBS_xsk_fwd += -pthread
|
TPROGLDLIBS_xsk_fwd += -pthread
|
||||||
|
|
||||||
# Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline:
|
# Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline:
|
||||||
# make M=samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
|
# make M=samples/bpf LLC=~/git/llvm-project/llvm/build/bin/llc CLANG=~/git/llvm-project/llvm/build/bin/clang
|
||||||
LLC ?= llc
|
LLC ?= llc
|
||||||
CLANG ?= clang
|
CLANG ?= clang
|
||||||
OPT ?= opt
|
OPT ?= opt
|
||||||
|
@ -62,20 +62,26 @@ To generate a smaller llc binary one can use::
|
|||||||
|
|
||||||
-DLLVM_TARGETS_TO_BUILD="BPF"
|
-DLLVM_TARGETS_TO_BUILD="BPF"
|
||||||
|
|
||||||
Quick sniplet for manually compiling LLVM and clang
|
We recommend that developers who want the fastest incremental builds
|
||||||
(build dependencies are cmake and gcc-c++)::
|
use the Ninja build system, you can find it in your system's package
|
||||||
|
manager, usually the package is ninja or ninja-build.
|
||||||
|
|
||||||
$ git clone http://llvm.org/git/llvm.git
|
Quick sniplet for manually compiling LLVM and clang
|
||||||
$ cd llvm/tools
|
(build dependencies are ninja, cmake and gcc-c++)::
|
||||||
$ git clone --depth 1 http://llvm.org/git/clang.git
|
|
||||||
$ cd ..; mkdir build; cd build
|
$ git clone https://github.com/llvm/llvm-project.git
|
||||||
$ cmake .. -DLLVM_TARGETS_TO_BUILD="BPF;X86"
|
$ mkdir -p llvm-project/llvm/build
|
||||||
$ make -j $(getconf _NPROCESSORS_ONLN)
|
$ cd llvm-project/llvm/build
|
||||||
|
$ cmake .. -G "Ninja" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
|
||||||
|
-DLLVM_ENABLE_PROJECTS="clang" \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DLLVM_BUILD_RUNTIME=OFF
|
||||||
|
$ ninja
|
||||||
|
|
||||||
It is also possible to point make to the newly compiled 'llc' or
|
It is also possible to point make to the newly compiled 'llc' or
|
||||||
'clang' command via redefining LLC or CLANG on the make command line::
|
'clang' command via redefining LLC or CLANG on the make command line::
|
||||||
|
|
||||||
make M=samples/bpf LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
|
make M=samples/bpf LLC=~/git/llvm-project/llvm/build/bin/llc CLANG=~/git/llvm-project/llvm/build/bin/clang
|
||||||
|
|
||||||
Cross compiling samples
|
Cross compiling samples
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user