[libc-commits] [libc] e4b9fec - [libc] Add minimal Windows config
Siva Chandra Reddy via libc-commits
libc-commits at lists.llvm.org
Thu Jul 1 13:46:59 PDT 2021
Author: Caitlyn Cano
Date: 2021-07-01T20:45:57Z
New Revision: e4b9fecd392fdd135815f2069179a12e4c73347d
URL: https://github.com/llvm/llvm-project/commit/e4b9fecd392fdd135815f2069179a12e4c73347d
DIFF: https://github.com/llvm/llvm-project/commit/e4b9fecd392fdd135815f2069179a12e4c73347d.diff
LOG: [libc] Add minimal Windows config
A README file with procedure for building/testing LLVM libc on Windows
has also been added.
Reviewed By: sivachandra, aeubanks
Differential Revision: https://reviews.llvm.org/D105231
Added:
libc/config/windows/README.md
libc/config/windows/entrypoints.txt
Modified:
Removed:
################################################################################
diff --git a/libc/config/windows/README.md b/libc/config/windows/README.md
new file mode 100644
index 000000000000..8e01a409f924
--- /dev/null
+++ b/libc/config/windows/README.md
@@ -0,0 +1,76 @@
+# Building and Testing LLVM libc on Windows
+
+## Setting Up Environment
+
+To build LLVM libc on Windows, first build Clang using the following steps.
+
+1. Open Command Prompt in Windows
+2. Set TEMP and TMP to a directory. Creating this path is necessary for a
+ successful clang build.
+ 1. Create tmp under your preferred directory or under `C:\src`:
+
+ ```
+ cd C:\src
+ mkdir tmp
+ ```
+
+ 2. In the start menu, search for "environment variables for your account".
+ Set TEMP and TMP to `C:\src\tmp` or the corresponding path elsewhere.
+3. Download [Visual Studio Community](https://visualstudio.microsoft.com/downloads/).
+4. Install [CMake](https://cmake.org/download/) and
+ [Ninja](https://github.com/ninja-build/ninja/releases). (Optional, included
+ in Visual Studio).
+5. Load the Visual Studio environment variables using this command. This is
+ crucial as it allows you to use build tools like CMake and Ninja:
+
+ ```
+ "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
+ ```
+
+ Note: **Rerun this command every time you open a new Command Prompt
+ window.**
+
+6. If you have not used Git before, install
+ [Git](https://git-scm.com/download/win) for Windows. Check out the LLVM
+ source tree from Github using:
+
+ ```
+ git clone https://github.com/llvm/llvm-project.git
+ ```
+
+7. Ensure you have access to Clang, either by downloading from
+ [LLVM Download](https://releases.llvm.org/download.html) or
+ [building it yourself](https://clang.llvm.org/get_started.html).
+
+## Building LLVM libc
+
+In this section, Clang will be used to compile LLVM
+libc, and finally, build and test the libc.
+
+8. Create a empty build directory in `C:\src` or your preferred directory and
+ cd to it using:
+
+ ```
+ mkdir libc-build
+ cd libc-build
+ ```
+
+9. Run the following CMake command to generate build files. LLVM libc must be built
+ by Clang, so ensure Clang is specified as the C and C++ compiler.
+
+ ```
+ 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
+ ```
+
+10. Build LLVM libc using:
+
+ ```
+ ninja llvmlibc
+
+ ```
+
+11. Run tests using:
+
+ ```
+ ninja checklibc
+ ```
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
new file mode 100644
index 000000000000..390f2fdf1214
--- /dev/null
+++ b/libc/config/windows/entrypoints.txt
@@ -0,0 +1,44 @@
+set(TARGET_LIBC_ENTRYPOINTS
+ # ctype.h entrypoints
+ libc.src.ctype.isalnum
+ libc.src.ctype.isalpha
+ libc.src.ctype.isascii
+ libc.src.ctype.isblank
+ libc.src.ctype.iscntrl
+ libc.src.ctype.isdigit
+ libc.src.ctype.isgraph
+ libc.src.ctype.islower
+ libc.src.ctype.isprint
+ libc.src.ctype.ispunct
+ libc.src.ctype.isspace
+ libc.src.ctype.isupper
+ libc.src.ctype.isxdigit
+ libc.src.ctype.toascii
+ libc.src.ctype.tolower
+ libc.src.ctype.toupper
+ # string.h entrypoints
+ libc.src.string.bzero
+ libc.src.string.memchr
+ libc.src.string.memcmp
+ libc.src.string.memcpy
+ libc.src.string.memmove
+ libc.src.string.memset
+ libc.src.string.memrchr
+ libc.src.string.strcat
+ libc.src.string.strchr
+ libc.src.string.strcpy
+ libc.src.string.strcmp
+ libc.src.string.strcspn
+ libc.src.string.strlen
+ libc.src.string.strncpy
+ libc.src.string.strnlen
+ libc.src.string.strpbrk
+ libc.src.string.strrchr
+ libc.src.string.strspn
+ libc.src.string.strstr
+ libc.src.string.strtok
+ libc.src.string.strtok_r
+)
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+ ${TARGET_LIBC_ENTRYPOINTS}
+)
More information about the libc-commits
mailing list