x86 machine

Bash
export LLVM_HOME=/home/zhangkang/workspace/llvm-project

export LLVM_HOME=/home/ken/workspace/llvm
cd $LLVM_HOME
mkdir build
cd build

cmake  ../llvm -DCMAKE_INSTALL_PREFIX=$LLVM_HOME/install -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;mlir"  -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++  -DLLVM_BUILD_EXTERNAL_COMPILER_RT=On -DLLVM_BUILD_EXAMPLES=On 


# 时间比较近的话,可以example,mlir,compiler-rt不要编译
cmake  ../llvm -DCMAKE_INSTALL_PREFIX=.install -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"  -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ 


make -j16
make install

export PATH=$LLVM_HOME/build/bin:$PATH
export PATH=$LLVM_HOME/in/bin:$PATH
Bash
simplify
ASSERT关闭,不编clang,只编X86
cmake  ../llvm -DCMAKE_INSTALL_PREFIX=$LLVM_HOME/install -DLLVM_ENABLE_ASSERTIONS=Off -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_ENABLE_PROJECTS=""  -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++  -DLLVM_BUILD_EXTERNAL_COMPILER_RT=On -DLLVM_BUILD_EXAMPLES=On -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_TOOL_LLC_BUILD=Off
Bash
#!/bin/bash
export SRC_ROOT=${PWD}

cmake -S llvm -B build -G Ninja \                                                                                                                                                                                  
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
-DCMAKE_C_FLAGS=" -O0" \
-DCMAKE_CXX_FLAGS=" -O0" \
-DLLVM_INCLUDE_TESTS=On \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DCMAKE_INSTALL_PREFIX=${SRC_ROOT}/install \
-DLLVM_ENABLE_ASSERTIONS=On \
-DCMAKE_BUILD_TYPE=Release
ninja -C build install -j12

llvm17 编译SPIRV

Bash
#!/bin/bash
set -x
startTime=`date +%Y%m%d-%H:%M:%S`
startTime_s=$(date +%s)

export SRC_ROOT=${PWD}

mkdir -p ${SRC_ROOT}/build
cd ${SRC_ROOT}/build

cmake  ../llvm -DCMAKE_INSTALL_PREFIX=../install -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"  -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="SPIRV" -DLLVM_INCLUDE_SPIRV_TOOLS_TESTS=ON | tee cmake.log


make -j2 --trace VERBOSE=2 | tee make.log
make install | tee install.log

endTime=`date +%Y%m%d-%H:%M:%S`
endTime_s=$(date +%s)
sumTime=$(( endTime_s - startTime_s ))

echo "$startTime ---> $endTime" "Total:$sumTime seconds"

有ninja,使用ninja,没有则使用cmake

Bash
set -x
#!/bin/bash
startTime=`date +%Y%m%d-%H:%M:%S`
startTime_s=$(date +%s)

export SRC_ROOT=${PWD}

export DEFINE_OPTIONS="\
  -DLLVM_ENABLE_PROJECTS=clang \
  -DLLVM_TARGETS_TO_BUILD= \
  -DLLVM_INCLUDE_TESTS=OFF \
  -DCLANG_INCLUDE_TESTS=ON \
  -DCMAKE_INSTALL_PREFIX=${SRC_ROOT}/install \
  -DCMAKE_BUILD_TYPE=Release"


if dpkg -L ninja-build  &> /dev/null ; then
# build.ninja和compile_commands.json中会有详细的编译命令
  echo "using ninja-build"
  cmake -S llvm -B build -G Ninja ${DEFINE_OPTIONS} \
  -DCMAKE_C_FLAGS="-O0" \
  -DCMAKE_CXX_FLAGS="-O0" \
  -DCMAKE_C_FLAGS_RELEASE="-O0" \
  -DCMAKE_CXX_FLAGS_RELEASE="-O0"

  ninja -C build install -j10
else #ninja-build not available
# compile_commands.json中会有详细的编译命令
  echo "ninja not available, build with makefile"
  mkdir -p ${SRC_ROOT}/build
  cd ${SRC_ROOT}/build

  cmake ${SRC_ROOT}/llvm ${DEFINE_OPTIONS} \
  -DCMAKE_C_FLAGS="-O0" \
  -DCMAKE_CXX_FLAGS="-O0" \
  -DCMAKE_C_FLAGS_RELEASE="-O0" \
  -DCMAKE_CXX_FLAGS_RELEASE="-O0"

  cmake --build ${SRC_ROOT}/build -- -j4
  cmake --install ${SRC_ROOT}/build
fi

endTime=`date +%Y%m%d-%H:%M:%S`
endTime_s=$(date +%s)
sumTime=$(( endTime_s - startTime_s ))

echo "$startTime ---> $endTime" "Total:$sumTime seconds"