# Building and Testing the libc¶

## Build modes¶

The libc can be built and tested in two different modes:

1. The overlay mode - In this mode, one uses the static archive from LLVM’s libc along with the system libc. See 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:

$> 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. 2. The full build mode - In this mode, the libc is used as the only libc for the user’s application. See 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: 1. Unit tests - You can run unittests by the command: $> ninja check-libc

2. Integration tests - You can run integration tests by the command:

$> ninja libc-integration-tests  3. API verification test - See API Test for more information about the API test. It can be run by the command: $> 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:

{
"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¶ 1. To build with Bazel, use the following command: $> bazel build --config=generic_clang @llvm-project//libc/...

1. To run the unit tests with bazel, use the following command:
\$> bazel test --config=generic_clang @llvm-project//libc/...

1. The bazel target layout of libc is located at: utils/bazel/llvm-project-overlay/libc/BUILD.bazel.