1# This file sets up a CMakeCache for the simple VE build. 2# 3# VE is a CPU with vector engine. But it is a connected to a host CPU as 4# an accelerator. So, we compile programs for VE on a host using clang/llvm 5# as a cross compiler. Therefore, the purpose of this cache file is to 6# compile clang/llvm supporting both targets. 7# 8# Configure: 9# cmake -G Ninja -DCMAKE_BUILD_TYPE=Release 10# -C <llvm_src_root>/clang/cmake/caches/VectorEngine.cmake 11# <llvm_src_root>/llvm-project/llvm 12# Build: 13# ninja 14# 15 16# Disable ZLIB, and ZSTD for VE since there is no pre-compiled libraries. 17set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "") 18set(LLVM_ENABLE_ZSTD OFF CACHE BOOL "") 19 20# Enable per-target runtimes directory 21set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR On CACHE BOOL "") 22 23# The lld is not supported for VE yet. 24set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra" CACHE STRING "") 25set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind;openmp" CACHE STRING "") 26 27# Compile for X86 and VE 28set(LLVM_TARGETS_TO_BUILD "X86;VE" CACHE STRING "") 29 30# Not use default here to use RUNTIMES_x86_64-unknown-linux-gnu_* variables. 31set(LLVM_BUILTIN_TARGETS "x86_64-unknown-linux-gnu;ve-unknown-linux-gnu" CACHE STRING "") 32set(LLVM_RUNTIME_TARGETS "x86_64-unknown-linux-gnu;ve-unknown-linux-gnu" CACHE STRING "") 33 34# For the case of X86, we don't want to test compiler-rt for x86, 35# so disable them as much as possible. 36set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") 37set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_CRT OFF CACHE BOOL "") 38set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") 39set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "") 40set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_LIBFUZZER OFF CACHE BOOL "") 41set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_CTX_PROFILE OFF CACHE BOOL "") 42set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_PROFILE OFF CACHE BOOL "") 43set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_MEMPROF OFF CACHE BOOL "") 44set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_ORC OFF CACHE BOOL "") 45set(RUNTIMES_x86_64-unknown-linux-gnu_COMPILER_RT_BUILD_GWP_ASAN OFF CACHE BOOL "") 46 47# VE supports builtins, crt, and profile only. 48set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") 49set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_CRT ON CACHE BOOL "") 50set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") 51set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "") 52set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_LIBFUZZER OFF CACHE BOOL "") 53set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_PROFILE ON CACHE BOOL "") 54set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_CTX_PROFILE OFF CACHE BOOL "") 55set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_MEMPROF OFF CACHE BOOL "") 56set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_ORC OFF CACHE BOOL "") 57set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_BUILD_GWP_ASAN OFF CACHE BOOL "") 58 59# VE uses builtins from Compiler-RT. 60set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_USE_BUILTINS_LIBRARY TRUE CACHE BOOL "") 61 62# VE uses libunwind and Compiler-RT from libcxxabi. 63set(RUNTIMES_ve-unknown-linux-gnu_LIBCXXABI_USE_LLVM_UNWINDER TRUE CACHE BOOL "") 64set(RUNTIMES_ve-unknown-linux-gnu_LIBCXXABI_USE_COMPILER_RT TRUE CACHE BOOL "") 65 66# VE uses Compiler-RT from libcxx. 67set(RUNTIMES_ve-unknown-linux-gnu_LIBCXX_USE_COMPILER_RT TRUE CACHE BOOL "") 68 69# Pretended standalone build for OpenMP since OpenMP doesn't support 70# LLVM_ENABLE_PER_TARGET_RUNTIME_DIR yet. 71# - Use OPENMP_STANDALONE_BUILD 72# - Define OPENMP_LIBDIR_SUFFIX to pretend per-target openmp directory 73# - Define OPENMP_LLVM_TOOLS_DIR for test 74set(RUNTIMES_x86_64-unknown-linux-gnu_OPENMP_STANDALONE_BUILD ON CACHE BOOL "") 75set(RUNTIMES_ve-unknown-linux-gnu_OPENMP_STANDALONE_BUILD ON CACHE BOOL "") 76 77# Specify LIBDIR_SUFFIX for OpenMP to install them at following directories. 78# install/lib/clang/${VERSION}/lib/x86_64-unknown-linux-gnu 79# install/lib/clang/${VERSION}/lib/ve-unknown-linux-gnu 80set(RUNTIMES_x86_64-unknown-linux-gnu_OPENMP_LIBDIR_SUFFIX "/x86_64-unknown-linux-gnu" CACHE STRING "") 81set(RUNTIMES_ve-unknown-linux-gnu_OPENMP_LIBDIR_SUFFIX "/ve-unknown-linux-gnu" CACHE STRING "") 82 83# Specify OPENMP_LLVM_TOOLS_DIR for test 84set(RUNTIMES_x86_64-unknown-linux-gnu_OPENMP_LLVM_TOOLS_DIR "${CMAKE_BINARY_DIR}/bin" CACHE STRING "") 85set(RUNTIMES_ve-unknown-linux-gnu_OPENMP_LLVM_TOOLS_DIR "${CMAKE_BINARY_DIR}/bin" CACHE STRING "") 86 87# VE doesn't support libomptarget. Disable it for x86_64 also. 88set(RUNTIMES_x86_64-unknown-linux-gnu_OPENMP_ENABLE_LIBOMPTARGET FALSE CACHE BOOL "") 89set(RUNTIMES_ve-unknown-linux-gnu_OPENMP_ENABLE_LIBOMPTARGET FALSE CACHE BOOL "") 90 91# VE requires -lrt flag for shm_open. 92set(RUNTIMES_ve-unknown-linux-gnu_LIBOMP_HAVE_SHM_OPEN_WITH_LRT TRUE CACHE BOOL "") 93 94# Compiler flags for testing 95set(RUNTIMES_ve-unknown-linux-gnu_COMPILER_RT_TEST_COMPILER_CFLAGS "--target=ve-unknown-linux-gnu" CACHE BOOL "") 96set(RUNTIMES_ve-unknown-linux-gnu_LIBCXXABI_TEST_COMPILER_CFLAGS "--target=ve-unknown-linux-gnu" CACHE BOOL "") 97set(RUNTIMES_ve-unknown-linux-gnu_LIBCXX_TEST_COMPILER_CFLAGS "--target=ve-unknown-linux-gnu" CACHE BOOL "") 98set(RUNTIMES_ve-unknown-linux-gnu_LIBUNWIND_TEST_COMPILER_CFLAGS "--target=ve-unknown-linux-gnu" CACHE BOOL "") 99set(RUNTIMES_ve-unknown-linux-gnu_OPENMP_TEST_OPENMP_FLAGS "--target=ve-unknown-linux-gnu -fopenmp -pthread -lrt -ldl -Wl,-rpath,${CMAKE_BINARY_DIR}/lib/ve-unknown-linux-gnu" CACHE BOOL "") 100 101# setup toolchain 102set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") 103set(LLVM_TOOLCHAIN_TOOLS 104 dsymutil 105 llc 106 llvm-ar 107 llvm-cxxfilt 108 llvm-cov 109 llvm-dwarfdump 110 llvm-link 111 llvm-nm 112 llvm-objdump 113 llvm-profdata 114 llvm-ranlib 115 llvm-readelf 116 llvm-readobj 117 llvm-size 118 llvm-symbolizer 119 opt 120 CACHE STRING "") 121 122set(LLVM_DISTRIBUTION_COMPONENTS 123 clang 124 clang-format 125 clang-resource-headers 126 builtins 127 runtimes 128 ${LLVM_TOOLCHAIN_TOOLS} 129 CACHE STRING "") 130