xref: /llvm-project/clang/cmake/caches/VectorEngine.cmake (revision 852aaf54071ad072335dcac57f544d4da34c875a)
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