* Update buildroot-patches for 2020.11-rc1 buildroot * Update buildroot to 2020.11-rc1 Signed-off-by: Stefan Agner <stefan@agner.ch> * Don't rely on sfdisk --list-free output The --list-free (-F) argument does not allow machine readable mode. And it seems that the output format changes over time (different spacing, using size postfixes instead of raw blocks). Use sfdisk json output and calculate free partition space ourselfs. This works for 2.35 and 2.36 and is more robust since we rely on output which is meant for scripts to parse. * Migrate defconfigs for Buildroot 2020.11-rc1 In particular, rename BR2_TARGET_UBOOT_BOOT_SCRIPT(_SOURCE) to BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT(_SOURCE). * Rebase/remove systemd patches for systemd 246 * Drop apparmor/libapparmor from buildroot-external * hassos-persists: use /run as directory for lockfiles The U-Boot tools use /var/lock by default which is not created any more by systemd by default (it is under tmpfiles legacy.conf, which we no longer install). * Disable systemd-update-done.service The service is not suited for pure read-only systems. In particular the service needs to be able to write a file in /etc and /var. Remove the service. Note: This is a static service and cannot be removed using systemd-preset. * Disable apparmor.service for now The service loads all default profiles. Some might actually cause problems. E.g. the profile for ping seems not to match our setup for /etc/resolv.conf: [85503.634653] audit: type=1400 audit(1605286002.684:236): apparmor="DENIED" operation="open" profile="ping" name="/run/resolv.conf" pid=27585 comm="ping" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
298 lines
11 KiB
Makefile
298 lines
11 KiB
Makefile
################################################################################
|
|
#
|
|
# llvm
|
|
#
|
|
################################################################################
|
|
|
|
# LLVM, Clang and lld should be version bumped together
|
|
LLVM_VERSION = 9.0.1
|
|
LLVM_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LLVM_VERSION)
|
|
LLVM_SOURCE = llvm-$(LLVM_VERSION).src.tar.xz
|
|
LLVM_LICENSE = Apache-2.0 with exceptions
|
|
LLVM_LICENSE_FILES = LICENSE.TXT
|
|
LLVM_SUPPORTS_IN_SOURCE_BUILD = NO
|
|
LLVM_INSTALL_STAGING = YES
|
|
|
|
# LLVM >= 9.0 can use python3 to build.
|
|
HOST_LLVM_DEPENDENCIES = host-python3
|
|
LLVM_DEPENDENCIES = host-llvm
|
|
|
|
# LLVM >= 9.0 will soon require C++14 support, building llvm 8.x using a
|
|
# toolchain using gcc < 5.1 gives an error but actually still works. Setting
|
|
# this option makes it still build with gcc >= 4.8.
|
|
# https://reviews.llvm.org/D57264
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON
|
|
LLVM_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON
|
|
|
|
# Don't build clang libcxx libcxxabi lldb compiler-rt lld polly as llvm subprojects
|
|
# This flag assumes that projects are checked out side-by-side and not nested
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=""
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=""
|
|
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF)
|
|
LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF)
|
|
|
|
# This option prevents AddLLVM.cmake from adding $ORIGIN/../lib to
|
|
# binaries. Otherwise, llvm-config (host variant installed in STAGING)
|
|
# will try to use target's libc.
|
|
HOST_LLVM_CONF_OPTS += -DCMAKE_INSTALL_RPATH="$(HOST_DIR)/lib"
|
|
|
|
# Get target architecture
|
|
LLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH))
|
|
|
|
# Build backend for target architecture. This include backends like AMDGPU.
|
|
LLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH)
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))"
|
|
LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))"
|
|
|
|
# LLVM target to use for native code generation. This is required for JIT generation.
|
|
# It must be set to LLVM_TARGET_ARCH for host and target, otherwise we get
|
|
# "No available targets are compatible for this triple" with llvmpipe when host
|
|
# and target architectures are different.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH)
|
|
LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH)
|
|
|
|
# Build AMDGPU backend
|
|
# We need to build AMDGPU backend for both host and target because
|
|
# llvm-config --targets built (host variant installed in STAGING) will
|
|
# output only $(LLVM_TARGET_ARCH) if not, and mesa3d won't build as
|
|
# it thinks AMDGPU backend is not installed on the target.
|
|
ifeq ($(BR2_PACKAGE_LLVM_AMDGPU),y)
|
|
LLVM_TARGETS_TO_BUILD += AMDGPU
|
|
endif
|
|
|
|
# Use native llvm-tblgen from host-llvm (needed for cross-compilation)
|
|
LLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/bin/llvm-tblgen
|
|
|
|
# Use native llvm-config from host-llvm (needed for cross-compilation)
|
|
LLVM_CONF_OPTS += -DLLVM_CONFIG_PATH=$(HOST_DIR)/bin/llvm-config
|
|
|
|
# BUILD_SHARED_LIBS has a misleading name. It is in fact an option for
|
|
# LLVM developers to build all LLVM libraries as separate shared libraries.
|
|
# For normal use of LLVM, it is recommended to build a single
|
|
# shared library, which is achieved by BUILD_SHARED_LIBS=OFF and
|
|
# LLVM_BUILD_LLVM_DYLIB=ON.
|
|
HOST_LLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF
|
|
LLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF
|
|
|
|
# Generate libLLVM.so. This library contains a default set of LLVM components
|
|
# that can be overwritten with "LLVM_DYLIB_COMPONENTS". The default contains
|
|
# most of LLVM and is defined in "tools/llvm-shlib/CMakelists.txt".
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON
|
|
LLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON
|
|
|
|
# LLVM_BUILD_LLVM_DYLIB to ON. We need to enable this option for the
|
|
# host as llvm-config for the host will be used in STAGING_DIR by packages
|
|
# linking against libLLVM and if this option is not selected, then llvm-config
|
|
# does not work properly. For example, it assumes that LLVM is built statically
|
|
# and cannot find libLLVM.so.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON
|
|
LLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON
|
|
|
|
LLVM_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1
|
|
|
|
# Disabled for the host since no host-libedit.
|
|
# Fall back to "Simple fgets-based implementation" of llvm line editor.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF
|
|
|
|
# We want to install llvm libraries and modules.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF
|
|
|
|
# We build from a release archive without vcs files.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF
|
|
|
|
# No backtrace package in Buildroot.
|
|
# https://documentation.backtrace.io
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF
|
|
|
|
# Enable signal handlers overrides support.
|
|
HOST_LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON
|
|
LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON
|
|
|
|
# Disable ffi for now.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF
|
|
|
|
# Disable terminfo database (needs ncurses libtinfo.so)
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF
|
|
|
|
# Enable thread support
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON
|
|
|
|
# Enable optional host-zlib support for LLVM Machine Code (llvm-mc) to add
|
|
# compression/uncompression capabilities.
|
|
# Not needed on the target.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=ON
|
|
HOST_LLVM_DEPENDENCIES += host-zlib
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=OFF
|
|
|
|
# libxml2 can be disabled as it is used for LLVM Windows builds where COFF
|
|
# files include manifest info
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF
|
|
|
|
# Disable optional Z3Prover since there is no such package in Buildroot.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF
|
|
|
|
# We don't use llvm for static only build, so enable PIC
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON
|
|
|
|
# Default is Debug build, which requires considerably more disk space and
|
|
# build time. Release build is selected for host and target because the linker
|
|
# can run out of memory in Debug mode.
|
|
HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
|
|
LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
|
|
|
|
# Disable C++1y (ISO C++ 2014 standard)
|
|
# Disable C++1z (ISO C++ 2017 standard)
|
|
# Compile llvm with the C++11 (ISO C++ 2011 standard) which is the fallback.
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_CXX1Y=OFF \
|
|
-DLLVM_ENABLE_CXX1Z=OFF
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_CXX1Y=OFF \
|
|
-DLLVM_ENABLE_CXX1Z=OFF
|
|
|
|
# Disabled, requires sys/ndir.h header
|
|
# Disable debug in module
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_MODULES=OFF \
|
|
-DLLVM_ENABLE_MODULE_DEBUGGING=OFF
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_MODULES=OFF \
|
|
-DLLVM_ENABLE_MODULE_DEBUGGING=OFF
|
|
|
|
# Don't change the standard library to libc++.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF
|
|
|
|
# Don't use lld as a linker.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF
|
|
|
|
# Generate code for the target. LLVM selects a target by looking at the
|
|
# toolchain tuple
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME)
|
|
LLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME)
|
|
|
|
# LLVM_HOST_TRIPLE has a misleading name, it is in fact the triple of the
|
|
# system where llvm is going to run on. We need to specify triple for native
|
|
# code generation on the target.
|
|
# This solves "No available targets are compatible for this triple" with llvmpipe
|
|
LLVM_CONF_OPTS += -DLLVM_HOST_TRIPLE=$(GNU_TARGET_NAME)
|
|
|
|
# Building the Go and OCaml bindings is yet unsupported.
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_BINDINGS=OFF
|
|
|
|
# Builds a release host tablegen that gets used during the LLVM build.
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_OPTIMIZED_TABLEGEN=ON
|
|
|
|
# Keep llvm utility binaries for the host. llvm-tblgen is built anyway as
|
|
# CMakeLists.txt has add_subdirectory(utils/TableGen) unconditionally.
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_BUILD_UTILS=ON \
|
|
-DLLVM_INCLUDE_UTILS=ON \
|
|
-DLLVM_INSTALL_UTILS=ON
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_BUILD_UTILS=OFF \
|
|
-DLLVM_INCLUDE_UTILS=OFF \
|
|
-DLLVM_INSTALL_UTILS=OFF
|
|
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_INCLUDE_TOOLS=ON \
|
|
-DLLVM_BUILD_TOOLS=ON
|
|
|
|
# We need to activate LLVM_INCLUDE_TOOLS, otherwise it does not generate
|
|
# libLLVM.so
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_INCLUDE_TOOLS=ON \
|
|
-DLLVM_BUILD_TOOLS=OFF
|
|
|
|
ifeq ($(BR2_PACKAGE_LLVM_RTTI),y)
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON
|
|
else
|
|
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF
|
|
LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF
|
|
endif
|
|
|
|
# Compiler-rt not in the source tree.
|
|
# llvm runtime libraries are not in the source tree.
|
|
# Polly is not in the source tree.
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \
|
|
-DLLVM_BUILD_RUNTIME=OFF \
|
|
-DLLVM_INCLUDE_RUNTIMES=OFF \
|
|
-DLLVM_POLLY_BUILD=OFF
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \
|
|
-DLLVM_BUILD_RUNTIME=OFF \
|
|
-DLLVM_INCLUDE_RUNTIMES=OFF \
|
|
-DLLVM_POLLY_BUILD=OFF
|
|
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_WARNINGS=ON \
|
|
-DLLVM_ENABLE_PEDANTIC=ON \
|
|
-DLLVM_ENABLE_WERROR=OFF
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_ENABLE_WARNINGS=ON \
|
|
-DLLVM_ENABLE_PEDANTIC=ON \
|
|
-DLLVM_ENABLE_WERROR=OFF
|
|
|
|
HOST_LLVM_CONF_OPTS += \
|
|
-DLLVM_BUILD_EXAMPLES=OFF \
|
|
-DLLVM_BUILD_DOCS=OFF \
|
|
-DLLVM_BUILD_TESTS=OFF \
|
|
-DLLVM_ENABLE_DOXYGEN=OFF \
|
|
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
|
-DLLVM_ENABLE_SPHINX=OFF \
|
|
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
|
-DLLVM_INCLUDE_DOCS=OFF \
|
|
-DLLVM_INCLUDE_GO_TESTS=OFF \
|
|
-DLLVM_INCLUDE_TESTS=OFF
|
|
LLVM_CONF_OPTS += \
|
|
-DLLVM_BUILD_EXAMPLES=OFF \
|
|
-DLLVM_BUILD_DOCS=OFF \
|
|
-DLLVM_BUILD_TESTS=OFF \
|
|
-DLLVM_ENABLE_DOXYGEN=OFF \
|
|
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
|
-DLLVM_ENABLE_SPHINX=OFF \
|
|
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
|
-DLLVM_INCLUDE_DOCS=OFF \
|
|
-DLLVM_INCLUDE_GO_TESTS=OFF \
|
|
-DLLVM_INCLUDE_TESTS=OFF
|
|
|
|
# Copy llvm-config (host variant) to STAGING_DIR
|
|
# llvm-config (host variant) returns include and lib directories
|
|
# for the host if it's installed in host/bin:
|
|
# output/host/bin/llvm-config --includedir
|
|
# output/host/include
|
|
# When installed in STAGING_DIR, llvm-config returns include and lib
|
|
# directories from STAGING_DIR.
|
|
# output/staging/usr/bin/llvm-config --includedir
|
|
# output/staging/usr/include
|
|
define HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR
|
|
$(INSTALL) -D -m 0755 $(HOST_DIR)/bin/llvm-config \
|
|
$(STAGING_DIR)/usr/bin/llvm-config
|
|
endef
|
|
HOST_LLVM_POST_INSTALL_HOOKS = HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR
|
|
|
|
# By default llvm-tblgen is built and installed on the target but it is
|
|
# not necessary. Also erase LLVMHello.so from /usr/lib
|
|
define LLVM_DELETE_LLVM_TBLGEN_TARGET
|
|
rm -f $(TARGET_DIR)/usr/bin/llvm-tblgen $(TARGET_DIR)/usr/lib/LLVMHello.so
|
|
endef
|
|
LLVM_POST_INSTALL_TARGET_HOOKS = LLVM_DELETE_LLVM_TBLGEN_TARGET
|
|
|
|
$(eval $(cmake-package))
|
|
$(eval $(host-cmake-package))
|