View on GitHub

fstudio.github.io

Clangbuilder Pages

Clangbuilder

Automated tools help developers on Windows platforms building LLVM and clang.

Installation

PowerShell Policy

Often you need to change the Power Shell execution policy

Get-ExecutionPolicy

Output:

Restricted

Please run PowerShell with administrator rights, and Enter:

Set-ExecutionPolicy RemoteSigned

General Setup

Clone clangbuilder on Github

git clone https://github.com/fstudio/clangbuilder.git clangbuilder

Click the script/InitializeEnv.bat

The installation script will compile ClangbuilderUI and create a shortcut, download required packages.

If your need install VisualCppTools.Community.Daily ,click script/VisualCppToolsFetch.bat

Build Clang on Windows

Clangbuilder Now Only support use Visual C++ build Clang LLVM LLDB.

Best Visual Studio Version:

Visual Studio 2017 15.5 or later

You can run ClangbuilderUI, Modify Arch, Configuration and other options. after click Building

ClangbuilderUI Snapshot

clangbuilder

Update 2017-08-19 Clangbuilder support VisualCppTools.Community.Daily:

visualcpptools

VisualCppTools.Community.Daily current not support msbuild (becasue cmake …)

Update 2017-09-17 ClangbuilderUI Support EWDK

ewdk

Branch

CMake Custom flags

You can custom cmake build flags Now !!!

Clangbuilder will check $ClangbuilderRoot\out\cmakeflags.$Branch.json and $ClangbuilderRoot\out\cmakeflags.json is exists, if exists parse cmake flags.

The corresponding branch takes effect:

cmakeflags.mainline.json
cmakeflags.stable.json
cmakeflags.release.json

Set cmakeflags.json will take effect in all branches (Mainline, Stable, Release)

Flags configuration format is json:

{
    "CMake":[
        "-DCMAKE_INSTALL_PREFIX=\"D:/LLVM\""
    ]
}

Engine

prebuilt.json template:

{
    "LLVM": {
        "Path": "D:/LLVM",
        "Arch": "x64"
    }
}

LLDB

When you select build LLDB, If not found Python 3 installed. Clangbuilder add flag -DLLDB_DISABLE_PYTHON=1.

LLDB maybe not work.

Libc++

Only NinjaBootstrap and NinjaIterate will compile libc++ ,Because Visual C++ not support include_next now.

clang-cl -std:c++14  -Iinclude\c++\v1 hello.cc c++.lib

copy c++.dll to your path(or exe self directory). Clang 6.0 or Clang trunk mybe no Warning.

When need support C++17 with -std:c++17,Please modify new:+165, Fix redefinition of ‘align_val_t’. See: patch/libcxx-msvc-cxx17.patch

ARM64

Build LLVM for ARM64 is broken, But You can download Enterprise WDK (EWDK) Insider Preview from https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewWDK ,When you config config/ewdk.json, ClangbuilderUI able to start ARM64 Environment Console

ewdk.json template:

{
	"Path":"D:\\EWDK",
	"Version":"10.0.16257.0"
}

Update: Visual Studio 15.4 can install Visual C++ compilers and libraries for ARM64, CMake 3.10 will support ARM64.

See: VS15: Adds ARM64 architecture support.

Commandline

.\bin\clangbuilder

Custom PATH

You can modify config/initialize.json , add some directories to PATH. Note that directories have higher priority in PATH. (Insert Front)

Suggest

$env:Path = "${env:windir};${env:windir}\System32;${env:windir}\System32\Wbem;${env:windir}\System32\WindowsPowerShell\v1.0"

$evn:windir is usually C:\Windows

Environment Console

When you only need to start a console environment, you can click on the Environment Console

Add Portable Utilities

You can modify config/packages.json, and then double-click script/UpdatePkgs.bat to the software you need as part of the Clangbuilder is added to the environment

Add Extranl Libs

You can add extranl lib, such as z3 , more info to view ExternalLibs.md

About Ninja Task

Ninja Task Parallel:

Function Parallel() {
    $MemSize = (Get-WmiObject -Class Win32_ComputerSystem).TotalPhysicalMemory
    $ProcessorCount = $env:NUMBER_OF_PROCESSORS
    $MemParallelRaw = $MemSize / 1610612736 #1.5GB
    #[int]$MemParallel = [Math]::Floor($MemParallelRaw)
    [int]$MemParallel = [Math]::Ceiling($MemParallelRaw) ## less 1
    return [Math]::Min($ProcessorCount, $MemParallel)
}

License: MIT
Author: Force.Charlie
Copyright © 2018 Force Charlie. All Rights Reserved.