1*4882a593Smuzhiyun################################################################################ 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# llvm 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun################################################################################ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# LLVM, Clang and lld should be version bumped together 8*4882a593SmuzhiyunLLVM_VERSION = 9.0.1 9*4882a593SmuzhiyunLLVM_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LLVM_VERSION) 10*4882a593SmuzhiyunLLVM_SOURCE = llvm-$(LLVM_VERSION).src.tar.xz 11*4882a593SmuzhiyunLLVM_LICENSE = Apache-2.0 with exceptions 12*4882a593SmuzhiyunLLVM_LICENSE_FILES = LICENSE.TXT 13*4882a593SmuzhiyunLLVM_CPE_ID_VENDOR = llvm 14*4882a593SmuzhiyunLLVM_SUPPORTS_IN_SOURCE_BUILD = NO 15*4882a593SmuzhiyunLLVM_INSTALL_STAGING = YES 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun# LLVM >= 9.0 can use python3 to build. 18*4882a593SmuzhiyunHOST_LLVM_DEPENDENCIES = host-python3 19*4882a593SmuzhiyunLLVM_DEPENDENCIES = host-llvm 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun# LLVM >= 9.0 will soon require C++14 support, building llvm 8.x using a 22*4882a593Smuzhiyun# toolchain using gcc < 5.1 gives an error but actually still works. Setting 23*4882a593Smuzhiyun# this option makes it still build with gcc >= 4.8. 24*4882a593Smuzhiyun# https://reviews.llvm.org/D57264 25*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON 26*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun# Don't build clang libcxx libcxxabi lldb compiler-rt lld polly as llvm subprojects 29*4882a593Smuzhiyun# This flag assumes that projects are checked out side-by-side and not nested 30*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS="" 31*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS="" 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF) 34*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun# This option prevents AddLLVM.cmake from adding $ORIGIN/../lib to 37*4882a593Smuzhiyun# binaries. Otherwise, llvm-config (host variant installed in STAGING) 38*4882a593Smuzhiyun# will try to use target's libc. 39*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DCMAKE_INSTALL_RPATH="$(HOST_DIR)/lib" 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun# Get target architecture 42*4882a593SmuzhiyunLLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH)) 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun# Build backend for target architecture. This include backends like AMDGPU. 45*4882a593SmuzhiyunLLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH) 46*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))" 47*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))" 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun# LLVM target to use for native code generation. This is required for JIT generation. 50*4882a593Smuzhiyun# It must be set to LLVM_TARGET_ARCH for host and target, otherwise we get 51*4882a593Smuzhiyun# "No available targets are compatible for this triple" with llvmpipe when host 52*4882a593Smuzhiyun# and target architectures are different. 53*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH) 54*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH) 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun# Build AMDGPU backend 57*4882a593Smuzhiyun# We need to build AMDGPU backend for both host and target because 58*4882a593Smuzhiyun# llvm-config --targets built (host variant installed in STAGING) will 59*4882a593Smuzhiyun# output only $(LLVM_TARGET_ARCH) if not, and mesa3d won't build as 60*4882a593Smuzhiyun# it thinks AMDGPU backend is not installed on the target. 61*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LLVM_AMDGPU),y) 62*4882a593SmuzhiyunLLVM_TARGETS_TO_BUILD += AMDGPU 63*4882a593Smuzhiyunendif 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun# Build BPF backend 66*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LLVM_BPF),y) 67*4882a593SmuzhiyunLLVM_TARGETS_TO_BUILD += BPF 68*4882a593Smuzhiyunendif 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun# Use native llvm-tblgen from host-llvm (needed for cross-compilation) 71*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/bin/llvm-tblgen 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun# Use native llvm-config from host-llvm (needed for cross-compilation) 74*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_CONFIG_PATH=$(HOST_DIR)/bin/llvm-config 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun# BUILD_SHARED_LIBS has a misleading name. It is in fact an option for 77*4882a593Smuzhiyun# LLVM developers to build all LLVM libraries as separate shared libraries. 78*4882a593Smuzhiyun# For normal use of LLVM, it is recommended to build a single 79*4882a593Smuzhiyun# shared library, which is achieved by BUILD_SHARED_LIBS=OFF and 80*4882a593Smuzhiyun# LLVM_BUILD_LLVM_DYLIB=ON. 81*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF 82*4882a593SmuzhiyunLLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun# Generate libLLVM.so. This library contains a default set of LLVM components 85*4882a593Smuzhiyun# that can be overwritten with "LLVM_DYLIB_COMPONENTS". The default contains 86*4882a593Smuzhiyun# most of LLVM and is defined in "tools/llvm-shlib/CMakelists.txt". 87*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON 88*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun# LLVM_BUILD_LLVM_DYLIB to ON. We need to enable this option for the 91*4882a593Smuzhiyun# host as llvm-config for the host will be used in STAGING_DIR by packages 92*4882a593Smuzhiyun# linking against libLLVM and if this option is not selected, then llvm-config 93*4882a593Smuzhiyun# does not work properly. For example, it assumes that LLVM is built statically 94*4882a593Smuzhiyun# and cannot find libLLVM.so. 95*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON 96*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON 97*4882a593Smuzhiyun 98*4882a593SmuzhiyunLLVM_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun# Disabled for the host since no host-libedit. 101*4882a593Smuzhiyun# Fall back to "Simple fgets-based implementation" of llvm line editor. 102*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF 103*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun# We want to install llvm libraries and modules. 106*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF 107*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun# We build from a release archive without vcs files. 110*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF 111*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun# No backtrace package in Buildroot. 114*4882a593Smuzhiyun# https://documentation.backtrace.io 115*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF 116*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun# Enable signal handlers overrides support. 119*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON 120*4882a593SmuzhiyunLLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun# Disable ffi for now. 123*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF 124*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun# Disable terminfo database (needs ncurses libtinfo.so) 127*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF 128*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun# Enable thread support 131*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON 132*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun# Enable optional host-zlib support for LLVM Machine Code (llvm-mc) to add 135*4882a593Smuzhiyun# compression/uncompression capabilities. 136*4882a593Smuzhiyun# Not needed on the target. 137*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=ON 138*4882a593SmuzhiyunHOST_LLVM_DEPENDENCIES += host-zlib 139*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=OFF 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun# libxml2 can be disabled as it is used for LLVM Windows builds where COFF 142*4882a593Smuzhiyun# files include manifest info 143*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF 144*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun# Disable optional Z3Prover since there is no such package in Buildroot. 147*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF 148*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun# We don't use llvm for static only build, so enable PIC 151*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON 152*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun# Default is Debug build, which requires considerably more disk space and 155*4882a593Smuzhiyun# build time. Release build is selected for host and target because the linker 156*4882a593Smuzhiyun# can run out of memory in Debug mode. 157*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release 158*4882a593SmuzhiyunLLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun# Disable C++1y (ISO C++ 2014 standard) 161*4882a593Smuzhiyun# Disable C++1z (ISO C++ 2017 standard) 162*4882a593Smuzhiyun# Compile llvm with the C++11 (ISO C++ 2011 standard) which is the fallback. 163*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 164*4882a593Smuzhiyun -DLLVM_ENABLE_CXX1Y=OFF \ 165*4882a593Smuzhiyun -DLLVM_ENABLE_CXX1Z=OFF 166*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 167*4882a593Smuzhiyun -DLLVM_ENABLE_CXX1Y=OFF \ 168*4882a593Smuzhiyun -DLLVM_ENABLE_CXX1Z=OFF 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun# Disabled, requires sys/ndir.h header 171*4882a593Smuzhiyun# Disable debug in module 172*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 173*4882a593Smuzhiyun -DLLVM_ENABLE_MODULES=OFF \ 174*4882a593Smuzhiyun -DLLVM_ENABLE_MODULE_DEBUGGING=OFF 175*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 176*4882a593Smuzhiyun -DLLVM_ENABLE_MODULES=OFF \ 177*4882a593Smuzhiyun -DLLVM_ENABLE_MODULE_DEBUGGING=OFF 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun# Don't change the standard library to libc++. 180*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF 181*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun# Don't use lld as a linker. 184*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF 185*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun# Generate code for the target. LLVM selects a target by looking at the 188*4882a593Smuzhiyun# toolchain tuple 189*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) 190*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun# LLVM_HOST_TRIPLE has a misleading name, it is in fact the triple of the 193*4882a593Smuzhiyun# system where llvm is going to run on. We need to specify triple for native 194*4882a593Smuzhiyun# code generation on the target. 195*4882a593Smuzhiyun# This solves "No available targets are compatible for this triple" with llvmpipe 196*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_HOST_TRIPLE=$(GNU_TARGET_NAME) 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun# Building the Go and OCaml bindings is yet unsupported. 199*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 200*4882a593Smuzhiyun -DLLVM_ENABLE_BINDINGS=OFF 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun# Builds a release host tablegen that gets used during the LLVM build. 203*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_OPTIMIZED_TABLEGEN=ON 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun# Keep llvm utility binaries for the host. llvm-tblgen is built anyway as 206*4882a593Smuzhiyun# CMakeLists.txt has add_subdirectory(utils/TableGen) unconditionally. 207*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 208*4882a593Smuzhiyun -DLLVM_BUILD_UTILS=ON \ 209*4882a593Smuzhiyun -DLLVM_INCLUDE_UTILS=ON \ 210*4882a593Smuzhiyun -DLLVM_INSTALL_UTILS=ON 211*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 212*4882a593Smuzhiyun -DLLVM_BUILD_UTILS=OFF \ 213*4882a593Smuzhiyun -DLLVM_INCLUDE_UTILS=OFF \ 214*4882a593Smuzhiyun -DLLVM_INSTALL_UTILS=OFF 215*4882a593Smuzhiyun 216*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 217*4882a593Smuzhiyun -DLLVM_INCLUDE_TOOLS=ON \ 218*4882a593Smuzhiyun -DLLVM_BUILD_TOOLS=ON 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun# We need to activate LLVM_INCLUDE_TOOLS, otherwise it does not generate 221*4882a593Smuzhiyun# libLLVM.so 222*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 223*4882a593Smuzhiyun -DLLVM_INCLUDE_TOOLS=ON \ 224*4882a593Smuzhiyun -DLLVM_BUILD_TOOLS=OFF 225*4882a593Smuzhiyun 226*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LLVM_RTTI),y) 227*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON 228*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON 229*4882a593Smuzhiyunelse 230*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF 231*4882a593SmuzhiyunLLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF 232*4882a593Smuzhiyunendif 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun# Compiler-rt not in the source tree. 235*4882a593Smuzhiyun# llvm runtime libraries are not in the source tree. 236*4882a593Smuzhiyun# Polly is not in the source tree. 237*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 238*4882a593Smuzhiyun -DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \ 239*4882a593Smuzhiyun -DLLVM_BUILD_RUNTIME=OFF \ 240*4882a593Smuzhiyun -DLLVM_INCLUDE_RUNTIMES=OFF \ 241*4882a593Smuzhiyun -DLLVM_POLLY_BUILD=OFF 242*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 243*4882a593Smuzhiyun -DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \ 244*4882a593Smuzhiyun -DLLVM_BUILD_RUNTIME=OFF \ 245*4882a593Smuzhiyun -DLLVM_INCLUDE_RUNTIMES=OFF \ 246*4882a593Smuzhiyun -DLLVM_POLLY_BUILD=OFF 247*4882a593Smuzhiyun 248*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 249*4882a593Smuzhiyun -DLLVM_ENABLE_WARNINGS=ON \ 250*4882a593Smuzhiyun -DLLVM_ENABLE_PEDANTIC=ON \ 251*4882a593Smuzhiyun -DLLVM_ENABLE_WERROR=OFF 252*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 253*4882a593Smuzhiyun -DLLVM_ENABLE_WARNINGS=ON \ 254*4882a593Smuzhiyun -DLLVM_ENABLE_PEDANTIC=ON \ 255*4882a593Smuzhiyun -DLLVM_ENABLE_WERROR=OFF 256*4882a593Smuzhiyun 257*4882a593SmuzhiyunHOST_LLVM_CONF_OPTS += \ 258*4882a593Smuzhiyun -DLLVM_BUILD_EXAMPLES=OFF \ 259*4882a593Smuzhiyun -DLLVM_BUILD_DOCS=OFF \ 260*4882a593Smuzhiyun -DLLVM_BUILD_TESTS=OFF \ 261*4882a593Smuzhiyun -DLLVM_ENABLE_DOXYGEN=OFF \ 262*4882a593Smuzhiyun -DLLVM_ENABLE_OCAMLDOC=OFF \ 263*4882a593Smuzhiyun -DLLVM_ENABLE_SPHINX=OFF \ 264*4882a593Smuzhiyun -DLLVM_INCLUDE_EXAMPLES=OFF \ 265*4882a593Smuzhiyun -DLLVM_INCLUDE_DOCS=OFF \ 266*4882a593Smuzhiyun -DLLVM_INCLUDE_GO_TESTS=OFF \ 267*4882a593Smuzhiyun -DLLVM_INCLUDE_TESTS=OFF 268*4882a593SmuzhiyunLLVM_CONF_OPTS += \ 269*4882a593Smuzhiyun -DLLVM_BUILD_EXAMPLES=OFF \ 270*4882a593Smuzhiyun -DLLVM_BUILD_DOCS=OFF \ 271*4882a593Smuzhiyun -DLLVM_BUILD_TESTS=OFF \ 272*4882a593Smuzhiyun -DLLVM_ENABLE_DOXYGEN=OFF \ 273*4882a593Smuzhiyun -DLLVM_ENABLE_OCAMLDOC=OFF \ 274*4882a593Smuzhiyun -DLLVM_ENABLE_SPHINX=OFF \ 275*4882a593Smuzhiyun -DLLVM_INCLUDE_EXAMPLES=OFF \ 276*4882a593Smuzhiyun -DLLVM_INCLUDE_DOCS=OFF \ 277*4882a593Smuzhiyun -DLLVM_INCLUDE_GO_TESTS=OFF \ 278*4882a593Smuzhiyun -DLLVM_INCLUDE_TESTS=OFF 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun# Copy llvm-config (host variant) to STAGING_DIR 281*4882a593Smuzhiyun# llvm-config (host variant) returns include and lib directories 282*4882a593Smuzhiyun# for the host if it's installed in host/bin: 283*4882a593Smuzhiyun# output/host/bin/llvm-config --includedir 284*4882a593Smuzhiyun# output/host/include 285*4882a593Smuzhiyun# When installed in STAGING_DIR, llvm-config returns include and lib 286*4882a593Smuzhiyun# directories from STAGING_DIR. 287*4882a593Smuzhiyun# output/staging/usr/bin/llvm-config --includedir 288*4882a593Smuzhiyun# output/staging/usr/include 289*4882a593Smuzhiyundefine HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR 290*4882a593Smuzhiyun $(INSTALL) -D -m 0755 $(HOST_DIR)/bin/llvm-config \ 291*4882a593Smuzhiyun $(STAGING_DIR)/usr/bin/llvm-config 292*4882a593Smuzhiyunendef 293*4882a593SmuzhiyunHOST_LLVM_POST_INSTALL_HOOKS = HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun# By default llvm-tblgen is built and installed on the target but it is 296*4882a593Smuzhiyun# not necessary. Also erase LLVMHello.so from /usr/lib 297*4882a593Smuzhiyundefine LLVM_DELETE_LLVM_TBLGEN_TARGET 298*4882a593Smuzhiyun rm -f $(TARGET_DIR)/usr/bin/llvm-tblgen $(TARGET_DIR)/usr/lib/LLVMHello.so 299*4882a593Smuzhiyunendef 300*4882a593SmuzhiyunLLVM_POST_INSTALL_TARGET_HOOKS = LLVM_DELETE_LLVM_TBLGEN_TARGET 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun$(eval $(cmake-package)) 303*4882a593Smuzhiyun$(eval $(host-cmake-package)) 304