mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
142 lines
5.1 KiB
Makefile
142 lines
5.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
|
|
|
PKG_NAME="llvm"
|
|
PKG_VERSION="19.1.7"
|
|
PKG_SHA256="82401fea7b79d0078043f7598b835284d6650a75b93e64b6f761ea7b63097501"
|
|
PKG_LICENSE="Apache-2.0"
|
|
PKG_SITE="http://llvm.org/"
|
|
PKG_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${PKG_VERSION}/llvm-project-${PKG_VERSION/-/}.src.tar.xz"
|
|
PKG_DEPENDS_HOST="toolchain:host"
|
|
PKG_DEPENDS_TARGET="toolchain llvm:host zlib"
|
|
PKG_LONGDESC="Low-Level Virtual Machine (LLVM) is a compiler infrastructure."
|
|
PKG_TOOLCHAIN="cmake"
|
|
|
|
PKG_CMAKE_OPTS_COMMON="-DLLVM_INCLUDE_TOOLS=ON \
|
|
-DLLVM_BUILD_TOOLS=OFF \
|
|
-DLLVM_BUILD_UTILS=OFF \
|
|
-DLLVM_BUILD_EXAMPLES=OFF \
|
|
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
|
-DLLVM_BUILD_TESTS=OFF \
|
|
-DLLVM_INCLUDE_TESTS=OFF \
|
|
-DLLVM_BUILD_BENCHMARKS=OFF \
|
|
-DLLVM_INCLUDE_BENCHMARKS=OFF \
|
|
-DLLVM_BUILD_DOCS=OFF \
|
|
-DLLVM_INCLUDE_DOCS=OFF \
|
|
-DLLVM_ENABLE_DOXYGEN=OFF \
|
|
-DLLVM_ENABLE_SPHINX=OFF \
|
|
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
|
-DLLVM_ENABLE_ASSERTIONS=OFF \
|
|
-DLLVM_ENABLE_WERROR=OFF \
|
|
-DLLVM_ENABLE_ZLIB=OFF \
|
|
-DLLVM_ENABLE_ZSTD=OFF \
|
|
-DLLVM_ENABLE_LIBXML2=OFF \
|
|
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
|
-DLLVM_LINK_LLVM_DYLIB=ON \
|
|
-DLLVM_OPTIMIZED_TABLEGEN=ON \
|
|
-DLLVM_APPEND_VC_REV=OFF \
|
|
-DLLVM_ENABLE_RTTI=ON \
|
|
-DLLVM_ENABLE_UNWIND_TABLES=OFF \
|
|
-DLLVM_ENABLE_Z3_SOLVER=OFF \
|
|
-DCMAKE_SKIP_RPATH=ON"
|
|
|
|
if listcontains "${GRAPHIC_DRIVERS}" "(iris|panfrost)"; then
|
|
PKG_DEPENDS_UNPACK="spirv-headers spirv-llvm-translator"
|
|
PKG_CMAKE_OPTS_COMMON+=" -DLLVM_SPIRV_INCLUDE_TESTS=OFF"
|
|
fi
|
|
|
|
post_unpack() {
|
|
if listcontains "${GRAPHIC_DRIVERS}" "(iris|panfrost)"; then
|
|
mkdir -p "${PKG_BUILD}"/llvm/projects/{SPIRV-Headers,SPIRV-LLVM-Translator}
|
|
tar --strip-components=1 \
|
|
-xf "${SOURCES}/spirv-headers/spirv-headers-$(get_pkg_version spirv-headers).tar.gz" \
|
|
-C "${PKG_BUILD}/llvm/projects/SPIRV-Headers"
|
|
tar --strip-components=1 \
|
|
-xf "${SOURCES}/spirv-llvm-translator/spirv-llvm-translator-$(get_pkg_version spirv-llvm-translator).tar.gz" \
|
|
-C "${PKG_BUILD}/llvm/projects/SPIRV-LLVM-Translator"
|
|
fi
|
|
}
|
|
|
|
pre_configure() {
|
|
PKG_CMAKE_SCRIPT=${PKG_BUILD}/llvm/CMakeLists.txt
|
|
}
|
|
|
|
pre_configure_host() {
|
|
case "${MACHINE_HARDWARE_NAME}" in
|
|
"aarch64")
|
|
LLVM_BUILD_TARGETS="AArch64"
|
|
;;
|
|
"arm")
|
|
LLVM_BUILD_TARGETS="ARM"
|
|
;;
|
|
"x86_64")
|
|
LLVM_BUILD_TARGETS="X86"
|
|
;;
|
|
esac
|
|
|
|
case "${TARGET_ARCH}" in
|
|
"aarch64")
|
|
LLVM_BUILD_TARGETS+="\;AArch64"
|
|
;;
|
|
"arm")
|
|
LLVM_BUILD_TARGETS+="\;ARM"
|
|
;;
|
|
"x86_64")
|
|
LLVM_BUILD_TARGETS+="\;X86\;AMDGPU"
|
|
;;
|
|
esac
|
|
|
|
mkdir -p ${PKG_BUILD}/.${HOST_NAME}
|
|
cd ${PKG_BUILD}/.${HOST_NAME}
|
|
PKG_CMAKE_OPTS_HOST="${PKG_CMAKE_OPTS_COMMON} \
|
|
-DCMAKE_BINARY_DIR=${PKG_BUILD}/.${HOST_NAME} \
|
|
-DLLVM_NATIVE_BUILD=${PKG_BUILD}/.${HOST_NAME}/native \
|
|
-DLLVM_ENABLE_PROJECTS='clang' \
|
|
-DCLANG_LINK_CLANG_DYLIB=ON \
|
|
-DLLVM_TARGETS_TO_BUILD=${LLVM_BUILD_TARGETS}"
|
|
}
|
|
|
|
post_make_host() {
|
|
ninja ${NINJA_OPTS} llvm-config llvm-objcopy llvm-tblgen
|
|
|
|
if listcontains "${GRAPHIC_DRIVERS}" "(iris|panfrost)"; then
|
|
ninja ${NINJA_OPTS} llvm-as llvm-link llvm-spirv opt
|
|
fi
|
|
}
|
|
|
|
post_makeinstall_host() {
|
|
mkdir -p ${TOOLCHAIN}/bin
|
|
cp -a bin/llvm-config ${TOOLCHAIN}/bin
|
|
cp -a bin/llvm-objcopy ${TOOLCHAIN}/bin
|
|
cp -a bin/llvm-tblgen ${TOOLCHAIN}/bin
|
|
|
|
if listcontains "${GRAPHIC_DRIVERS}" "(iris|panfrost)"; then
|
|
cp -a bin/{llvm-as,llvm-link,llvm-spirv,opt} "${TOOLCHAIN}/bin"
|
|
fi
|
|
}
|
|
|
|
pre_configure_target() {
|
|
mkdir -p ${PKG_BUILD}/.${TARGET_NAME}
|
|
cd ${PKG_BUILD}/.${TARGET_NAME}
|
|
PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_COMMON} \
|
|
-DCMAKE_BINARY_DIR=${PKG_BUILD}/.${TARGET_NAME} \
|
|
-DLLVM_NATIVE_BUILD=${PKG_BUILD}/.${TARGET_NAME}/native \
|
|
-DCMAKE_CROSSCOMPILING=ON \
|
|
-DLLVM_ENABLE_PROJECTS='' \
|
|
-DLLVM_TARGETS_TO_BUILD=AMDGPU \
|
|
-DLLVM_TARGET_ARCH="${TARGET_ARCH}" \
|
|
-DLLVM_TABLEGEN=${TOOLCHAIN}/bin/llvm-tblgen"
|
|
}
|
|
|
|
post_makeinstall_target() {
|
|
mkdir -p ${SYSROOT_PREFIX}/usr/bin
|
|
cp -a ${TOOLCHAIN}/bin/llvm-config ${SYSROOT_PREFIX}/usr/bin
|
|
|
|
rm -rf ${INSTALL}/usr/bin
|
|
rm -rf ${INSTALL}/usr/lib/LLVMHello.so
|
|
rm -rf ${INSTALL}/usr/lib/libLTO.so
|
|
rm -rf ${INSTALL}/usr/share
|
|
}
|