zufuliu / llvm-utils

LLVM/Clang toolsets for Visual Studio 2022, 2019, 2017, 2015, 2013, 2012 and 2010.
Other
209 stars 35 forks source link
llvm-extensions llvm-toolchain llvm-utils llvm-vs2017 llvm-vs2019 llvm-vs2022

LLVM Utils

LLVM for Visual Studio

License

Latest release

LLVM for Visual Studio 2017, 2019 and 2022

Installation

Please download and install LLVM from https://github.com/llvm/llvm-project/releases or https://releases.llvm.org/.

VS2017\install.bat can be used to install MSBuild script for Visual Studio 2017, 2019 and 2022. (may require Administrator privilege. In Windows 8 or later, you can quickly open an elevated PowerShell prompt by File -> Open Windows PowerShell -> Open PowerShell as Administrator).

Visual Studio 2022

The Platform Toolset is "LLVM for Visual Studio 2022 (LLVM_v143)", "LLVM for Visual Studio 2019 (LLVM_v142)", "LLVM for Visual Studio 2017 (LLVM_v141)" and "LLVM for Visual Studio 2017 - Windows XP (LLVM_v141_xp)".

Assume VS_PATH is your Visual Studio 2020 installation path (e.g.: C:\Program Files\Microsoft Visual Studio\2022\Community), please manually copy folders under VS2017 to their target paths.

Folder Target Path
VS2017\LLVM %VS_PATH%\MSBuild\Microsoft\VC\v170\
VS2017\LLVM_v143 %VS_PATH%\MSBuild\Microsoft\VC\v170\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v143 %VS_PATH%\MSBuild\Microsoft\VC\v170\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v143 %VS_PATH%\MSBuild\Microsoft\VC\v170\Platforms\ARM64\PlatformToolsets\
VS2017\LLVM_v143 %VS_PATH%\MSBuild\Microsoft\VC\v170\Platforms\ARM\PlatformToolsets\
VS2017\LLVM %VS_PATH%\MSBuild\Microsoft\VC\v160\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\ARM64\PlatformToolsets\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\ARM\PlatformToolsets\
VS2017\LLVM %VS_PATH%\MSBuild\Microsoft\VC\v150\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v141_xp %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v141_xp %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\ARM64\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\ARM\PlatformToolsets\

Visual Studio 2019

The Platform Toolset is "LLVM for Visual Studio 2019 (LLVM_v142)", "LLVM for Visual Studio 2017 (LLVM_v141)" and "LLVM for Visual Studio 2017 - Windows XP (LLVM_v141_xp)".

Assume VS_PATH is your Visual Studio 2019 installation path (e.g.: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community), please manually copy folders under VS2017 to their target paths.

Folder Target Path
VS2017\LLVM %VS_PATH%\MSBuild\Microsoft\VC\v160\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\ARM64\PlatformToolsets\
VS2017\LLVM_v142 %VS_PATH%\MSBuild\Microsoft\VC\v160\Platforms\ARM\PlatformToolsets\
VS2017\LLVM %VS_PATH%\MSBuild\Microsoft\VC\v150\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v141_xp %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v141_xp %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\ARM64\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\MSBuild\Microsoft\VC\v150\Platforms\ARM\PlatformToolsets\

Visual Studio 2017

The Platform Toolset is "LLVM for Visual Studio 2017 (LLVM_v141)" and "LLVM for Visual Studio 2017 - Windows XP (LLVM_v141_xp)".

Assume VS_PATH is your Visual Studio 2017 installation path (e.g.: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community), please manually copy folders under VS2017 to their target paths.

Folder Target Path
VS2017\LLVM %VS_PATH%\Common7\IDE\VC\VCTargets\
VS2017\LLVM_v141 %VS_PATH%\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v141_xp %VS_PATH%\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v141_xp %VS_PATH%\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\Common7\IDE\VC\VCTargets\Platforms\ARM64\PlatformToolsets\
VS2017\LLVM_v141 %VS_PATH%\Common7\IDE\VC\VCTargets\Platforms\ARM\PlatformToolsets\

LLVM for Visual Studio 2010, 2012, 2013 and 2015

Assume MB_PATH is the MSBuild path for Visual C++ (e.g.: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0 or C:\Program Files\MSBuild\Microsoft.Cpp\v4.0), please manually copy VS2017\LLVM and related folders under VS2015 to their target paths.

VS2015\install.bat (based on install script for LLVM 6.0.1) can be used to install MSBuild script for Visual Studio 2010, 2012, 2013 and 2015.

Visual Studio 2015

The Platform Toolset is "LLVM for Visual Studio 2015 (LLVM_v140)" and "LLVM for Visual Studio 2015 - Windows XP (LLVM_v140_xp)".

Folder Target Path
VS2017\LLVM %MB_PATH%\V140\
VS2015\LLVM_v140 %MB_PATH%\V140\Platforms\x64\PlatformToolsets\
VS2015\LLVM_v140_xp %MB_PATH%\V140\Platforms\x64\PlatformToolsets\
VS2015\LLVM_v140 %MB_PATH%\V140\Platforms\Win32\PlatformToolsets\
VS2015\LLVM_v140_xp %MB_PATH%\V140\Platforms\Win32\PlatformToolsets\

Visual Studio 2013

The Platform Toolset is "LLVM for Visual Studio 2013 (LLVM_v120)" and "LLVM for Visual Studio 2013 - Windows XP (LLVM_v120_xp)".

Folder Target Path
VS2017\LLVM %MB_PATH%\v120\
VS2015\LLVM_v120 %MB_PATH%\v120\Platforms\x64\PlatformToolsets\
VS2015\LLVM_v120_xp %MB_PATH%\v120\Platforms\x64\PlatformToolsets\
VS2015\LLVM_v120 %MB_PATH%\v120\Platforms\Win32\PlatformToolsets\
VS2015\LLVM_v120_xp %MB_PATH%\v120\Platforms\Win32\PlatformToolsets\

Visual Studio 2012

The Platform Toolset is "LLVM for Visual Studio 2012 (LLVM_v110)" and "LLVM for Visual Studio 2012 - Windows XP (LLVM_v110_xp)".

Folder Target Path
VS2017\LLVM %MB_PATH%\v110\
VS2015\x64\LLVM_v110 %MB_PATH%\v110\Platforms\x64\PlatformToolsets\
VS2015\x64\LLVM_v110_xp %MB_PATH%\v110\Platforms\x64\PlatformToolsets\
VS2015\Win32\LLVM_v110 %MB_PATH%\v110\Platforms\Win32\PlatformToolsets\
VS2015\Win32\LLVM_v110_xp %MB_PATH%\v110\Platforms\Win32\PlatformToolsets\

Visual Studio 2010

The Platform Toolset is "LLVM for Visual Studio 2010 (LLVM_v100)" and "LLVM for Visual Studio 2008 (LLVM_v90)".

Folder Target Path
VS2017\LLVM %MB_PATH%\
VS2015\x64\LLVM_v100 %MB_PATH%\Platforms\x64\PlatformToolsets\
VS2015\x64\LLVM_v90 %MB_PATH%\Platforms\x64\PlatformToolsets\
VS2015\Win32\LLVM_v100 %MB_PATH%\Platforms\Win32\PlatformToolsets\
VS2015\Win32\LLVM_v90 %MB_PATH%\Platforms\Win32\PlatformToolsets\

Install to AppVeyor or GitHub Actions Build Image

Install LLVM on the build image

curl -fsSL -o "LLVM-18.1.0-win64.exe" "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.0/LLVM-18.1.0-win64.exe"
LLVM-18.1.0-win64.exe /S

Install from release archives

Archive Name Visual Studio Version
LLVM_VS2017.zip 2017, 2019 and 2022
LLVM_VS2010_2015.zip 2010, 2012, 2013 and 2015
LLVM_VS2015.zip 2015
LLVM_VS2013.zip 2013
LLVM_VS2012.zip 2012
LLVM_VS2010.zip 2010

Examples:

curl -fsSL -o "LLVM_VS2017.zip" "https://github.com/zufuliu/llvm-utils/releases/download/v23.05/LLVM_VS2017.zip"
7z x -y "LLVM_VS2017.zip" >NUL
CALL "LLVM_VS2017\install.bat" 1

curl -fsSL -o "LLVM_VS2010_2015.zip" "https://github.com/zufuliu/llvm-utils/releases/download/v23.05/LLVM_VS2010_2015.zip"
7z x -y "LLVM_VS2010_2015.zip" >NUL
CALL "LLVM_VS2010_2015\install.bat" 1

Install from latest main source code

curl -fsSL -o "llvm-utils-main.zip" "https://github.com/zufuliu/llvm-utils/archive/main.zip"
7z x -y "llvm-utils-main.zip" >NUL
CALL "llvm-utils-main\VS2017\install.bat" 1
CALL "llvm-utils-main\VS2015\install.bat" 1

or

git clone -q --depth=1 --branch=main https://github.com/zufuliu/llvm-utils.git c:\projects\llvm-utils
CALL "c:\projects\llvm-utils\VS2017\install.bat" 1
CALL "c:\projects\llvm-utils\VS2015\install.bat" 1

clang-cl for Python 3 distutils

See clang\clang-cl-py3.diff for the changes on how to use clang-cl as distutils compiler. After applying these changes, you can build your extension with

python setup.py build --compiler=clang-cl

LLVM Windows Symbolic Link Maker

The huge size of LLVM Windows installation can be reduced dramatically by using Windows symbolic link (see mklink command.

Usage

Just copy llvm\llvm-link.bat to LLVM installation path (e.g.: C:\Program Files\LLVM\) and run it (may require Administrator privilege).

Related Links