.. _build_and_test: ============================= Building and Testing the libc ============================= Build modes =========== The libc can be built and tested in two different modes: #. **The overlay mode** - In this mode, one uses the static archive from LLVM's libc along with the system libc. See :ref:`overlay_mode` for more details on building and using the libc in this mode. You can only run the libc unittests in this mode. To run them, one simply does: .. code-block:: sh $> ninja check-libc Note that, unittests for only those functions which are part of the overlay static archive will be run with the above command. #. **The full build mode** - In this mode, the libc is used as the only libc for the user's application. See :ref:`fullbuild_mode` for more details on building and using the libc in this mode. Once configured for a full libc build, you can run three kinds of tests: #. Unit tests - You can run unittests by the command: .. code-block:: sh $> ninja check-libc #. Integration tests - You can run integration tests by the command: .. code-block:: sh $> ninja libc-integration-tests #. API verification test - See :ref:`api_test` for more information about the API test. It can be run by the command: .. code-block:: sh $> ninja libc-api-test Building with VSCode ==================== As a quickstart to using VSCode for development, install the cmake extension and put the following in your settings.json file: .. code-block:: javascript { "cmake.sourceDirectory": "${workspaceFolder}/llvm", "cmake.configureSettings": { "LLVM_ENABLE_PROJECTS" : "libc", "LLVM_LIBC_FULL_BUILD" : true, "LLVM_ENABLE_SPHINX" : true, "LIBC_INCLUDE_DOCS" : true } } Building with Bazel =================== #. To build with Bazel, use the following command: .. code-block:: sh $> bazel build --config=generic_clang @llvm-project//libc/... #. To run the unit tests with bazel, use the following command: .. code-block:: sh $> bazel test --config=generic_clang @llvm-project//libc/... #. The bazel target layout of `libc` is located at: `utils/bazel/llvm-project-overlay/libc/BUILD.bazel `_.