blob: 3ac058e207a65b0d9d51a6a49af32560a3b0ef37 [file] [log] [blame] [view]
Caitlyn Canoe4b9fec2021-07-01 20:41:511# Building and Testing LLVM libc on Windows
2
3## Setting Up Environment
4
5To build LLVM libc on Windows, first build Clang using the following steps.
6
71. Open Command Prompt in Windows
82. Set TEMP and TMP to a directory. Creating this path is necessary for a
9 successful clang build.
10 1. Create tmp under your preferred directory or under `C:\src`:
11
12 ```
13 cd C:\src
14 mkdir tmp
15 ```
16
17 2. In the start menu, search for "environment variables for your account".
18 Set TEMP and TMP to `C:\src\tmp` or the corresponding path elsewhere.
193. Download [Visual Studio Community](https://visualstudio.microsoft.com/downloads/).
204. Install [CMake](https://cmake.org/download/) and
21 [Ninja](https://github.com/ninja-build/ninja/releases). (Optional, included
22 in Visual Studio).
235. Load the Visual Studio environment variables using this command. This is
24 crucial as it allows you to use build tools like CMake and Ninja:
25
26 ```
27 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
28 ```
29
30 Note: **Rerun this command every time you open a new Command Prompt
31 window.**
32
336. If you have not used Git before, install
34 [Git](https://git-scm.com/download/win) for Windows. Check out the LLVM
35 source tree from Github using:
36
37 ```
38 git clone https://github.com/llvm/llvm-project.git
39 ```
40
417. Ensure you have access to Clang, either by downloading from
42 [LLVM Download](https://releases.llvm.org/download.html) or
43 [building it yourself](https://clang.llvm.org/get_started.html).
44
45## Building LLVM libc
46
47In this section, Clang will be used to compile LLVM
48libc, and finally, build and test the libc.
49
508. Create a empty build directory in `C:\src` or your preferred directory and
51 cd to it using:
52
53 ```
54 mkdir libc-build
55 cd libc-build
56 ```
57
589. Run the following CMake command to generate build files. LLVM libc must be built
59 by Clang, so ensure Clang is specified as the C and C++ compiler.
60
61 ```
62 cmake -G Ninja ../llvm-project/llvm -DCMAKE_C_COMPILER=C:/src/clang-build/bin/clang-cl.exe -DCMAKE_CXX_COMPILER=C:/src/clang-build/bin/clang-cl.exe -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_FORCE_BUILD_RUNTIME=libc -DLLVM_ENABLE_PROJECTS=libc -DLLVM_NATIVE_ARCH=x86_64 -DLLVM_HOST_TRIPLE=x86_64-window-x86-gnu
63 ```
64
Hedin Garca8baa87d2021-07-27 17:14:1865 Some LLVM libc math unittests test correctness/accuracy against results from
66 the [GNU MPFR library](https://www.mpfr.org/). If you want to run math tests
67 which use MPFR, and if MPFR on your machine is not installed in the default
68 include and linker lookup directories, then you can specify the MPFR install
69 directory by passing an additional CMake option as follows:
70
71 -DLLVM_LIBC_MPFR_INSTALL_PATH=<path/mpfr/install/dir>
72
73 If the above option is specified, then `${LLVM_LIBC_MPFR_INSTALL_PATH}/include`
74 will be added to the include directories, and
75 `${LLVM_LIBC_MPFR_INSTALL_PATH}/lib` will be added to the linker lookup
76 directories.
77
78 NOTE: The GNU MPFR library depends on the
79 [GNU GMP library](https://gmplib.org/). If you specify the above option, then it
80 will be assumed that GMP is also installed in the same directory or availabe in
81 the default paths.
82
Caitlyn Canoe4b9fec2021-07-01 20:41:518310. Build LLVM libc using:
84
85 ```
Tue Lya48c4a42023-02-03 20:16:0186 ninja libc
Caitlyn Canoe4b9fec2021-07-01 20:41:5187
88 ```
89
9011. Run tests using:
91
92 ```
93 ninja checklibc
94 ```