diff --git a/README.md b/README.md index 6e02ee378eb3585788de8ed3e7d404bd1e5a7dad..b440ae7c5cae47e0c3682e886857d1f439e7c527 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,44 @@ -# The LLVM Compiler Infrastructure +# 介绍 +本目录及其子目录包含 LLVM 的源代码。LLVM 是一个用于构建高度优化的编译器、优化器和运行时环境的工具包。 -This directory and its sub-directories contain source code for LLVM, -a toolkit for the construction of highly optimized compilers, -optimizers, and run-time environments. +# 使用说明 +LLVM 项目包含多个组件。项目核心本身称为"LLVM",包含处理中间表示(IR)并将其转换为目标文件所需的所有工具、库和头文件。工具包括汇编器、反汇编器、位码分析器和位码优化器。同时还包含基础回归测试。 -The README briefly describes how to get started with building LLVM. -For more information on how to contribute to the LLVM project, please -take a look at the -[Contributing to LLVM](https://llvm.org/docs/Contributing.html) guide. +C 类语言使用 Clang 前端。该组件将 C、C++、Objective-C 和 Objective-C++ 代码编译为 LLVM 位码——然后使用 LLVM 生成目标文件。 -## Getting Started with the LLVM System +其他组件包括: +libc++ C++ 标准库、LLD 链接器等。 -Taken from https://llvm.org/docs/GettingStarted.html. +## 构建LLVM源代码 +以下是构建LLVM源代码的示例 +- cd llvm-project +- mkdir build +- cd build +- cmake -G [选项] ../llvm + 常用构建系统: + - Ninja:生成 Ninja 构建文件(多数 LLVM 开发者使用) + - Unix Makefiles:生成 make 兼容的并行 Makefile + - Visual Studio:生成 Visual Studio 项目和解决方案 + - Xcode:生成 Xcode 项目 -### Overview + 常用选项: + - -DLLVM_ENABLE_PROJECTS='...' --- 分号分隔的您希望额外构建的 LLVM 子项目列表。可包括:clang, clang-tools-extra, libcxx, libcxxabi, libunwind, lldb, compiler-rt, lld, polly 或 debuginfo-tests -Welcome to the LLVM project! + - -DCMAKE_INSTALL_PREFIX=目录 --- 指定 LLVM 工具和库的完整安装路径(默认 /usr/local) -The LLVM project has multiple components. The core of the project is -itself called "LLVM". This contains all of the tools, libraries, and header -files needed to process intermediate representations and converts it into -object files. Tools include an assembler, disassembler, bitcode analyzer, and -bitcode optimizer. It also contains basic regression tests. + - -DCMAKE_BUILD_TYPE=类型 --- 有效类型:Debug, Release, RelWithDebInfo, MinSizeRel(默认 Debug) -C-like languages use the [Clang](http://clang.llvm.org/) front end. This -component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode --- and from there into object files, using LLVM. + - -DLLVM_ENABLE_ASSERTIONS=On --- 启用断言检查(Debug 构建默认开启) -Other components include: -the [libc++ C++ standard library](https://libcxx.llvm.org), -the [LLD linker](https://lld.llvm.org), and more. +- cmake --build build . [-- [options] ]或直接使用您上面指定的构建系统。 -### Getting the Source Code and Building LLVM + - 默认目标(如 ninja 或 make)将构建所有 LLVM 组件 + - check-all target(如 ninja check-all)将运行回归测试 + - CMake 会为每个工具和库生成目标,大多数 LLVM 子项目有自己的 check- target. + - 串行构建会很慢。可通过并行构建提高速度:Ninja 默认并行;make 使用 -j NNN 选项(NNN 为并行作业数) -The LLVM Getting Started documentation may be out of date. The [Clang -Getting Started](http://clang.llvm.org/get_started.html) page might have more -accurate information. + - 更多信息请参见[Cmake](https://llvm.org/docs/CMake.html) -This is an example work-flow and configuration to get and build the LLVM source: - -1. Checkout LLVM (including related sub-projects like Clang): - - * ``git clone https://github.com/llvm/llvm-project.git`` - - * Or, on windows, ``git clone --config core.autocrlf=false - https://github.com/llvm/llvm-project.git`` - -2. Configure and build LLVM and Clang: - - * ``cd llvm-project`` - - * ``mkdir build`` - - * ``cd build`` - - * ``cmake -G [options] ../llvm`` - - Some common build system generators are: - - * ``Ninja`` --- for generating [Ninja](https://ninja-build.org) - build files. Most llvm developers use Ninja. - * ``Unix Makefiles`` --- for generating make-compatible parallel makefiles. - * ``Visual Studio`` --- for generating Visual Studio projects and - solutions. - * ``Xcode`` --- for generating Xcode projects. - - Some Common options: - - * ``-DLLVM_ENABLE_PROJECTS='...'`` --- semicolon-separated list of the LLVM - sub-projects you'd like to additionally build. Can include any of: clang, - clang-tools-extra, libcxx, libcxxabi, libunwind, lldb, compiler-rt, lld, - polly, or debuginfo-tests. - - For example, to build LLVM, Clang, libcxx, and libcxxabi, use - ``-DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi"``. - - * ``-DCMAKE_INSTALL_PREFIX=directory`` --- Specify for *directory* the full - path name of where you want the LLVM tools and libraries to be installed - (default ``/usr/local``). - - * ``-DCMAKE_BUILD_TYPE=type`` --- Valid options for *type* are Debug, - Release, RelWithDebInfo, and MinSizeRel. Default is Debug. - - * ``-DLLVM_ENABLE_ASSERTIONS=On`` --- Compile with assertion checks enabled - (default is Yes for Debug builds, No for all other build types). - - * ``cmake --build . [-- [options] ]`` or your build system specified above - directly. - - * The default target (i.e. ``ninja`` or ``make``) will build all of LLVM. - - * The ``check-all`` target (i.e. ``ninja check-all``) will run the - regression tests to ensure everything is in working order. - - * CMake will generate targets for each tool and library, and most - LLVM sub-projects generate their own ``check-`` target. - - * Running a serial build will be **slow**. To improve speed, try running a - parallel build. That's done by default in Ninja; for ``make``, use the option - ``-j NNN``, where ``NNN`` is the number of parallel jobs, e.g. the number of - CPUs you have. - - * For more information see [CMake](https://llvm.org/docs/CMake.html) - -Consult the -[Getting Started with LLVM](https://llvm.org/docs/GettingStarted.html#getting-started-with-llvm) -page for detailed information on configuring and compiling LLVM. You can visit -[Directory Layout](https://llvm.org/docs/GettingStarted.html#directory-layout) -to learn about the layout of the source code tree. +# 参与贡献 +如果您想为本仓库贡献代码,请向本仓库任意maintainer发送邮件 +如果您找到产品中的任何Bug,欢迎您提出ISSUE \ No newline at end of file