1c8578539SThomas Weißschuh# SPDX-License-Identifier: GPL-2.0-only 2c8578539SThomas Weißschuh# Maintainer: Thomas Weißschuh <linux@weissschuh.net> 3c8578539SThomas Weißschuh# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org> 4c8578539SThomas Weißschuh 5c8578539SThomas Weißschuhpkgbase=${PACMAN_PKGBASE:-linux-upstream} 6e6b65ee1SJose Fernandezpkgname=("${pkgbase}") 7e6b65ee1SJose Fernandez 84929f5b9SJose Fernandez_extrapackages=${PACMAN_EXTRAPACKAGES-headers api-headers debug} 9e6b65ee1SJose Fernandezfor pkg in $_extrapackages; do 10e6b65ee1SJose Fernandez pkgname+=("${pkgbase}-${pkg}") 11e6b65ee1SJose Fernandezdone 12e6b65ee1SJose Fernandez 13c8578539SThomas Weißschuhpkgver="${KERNELRELEASE//-/_}" 14c8578539SThomas Weißschuh# The PKGBUILD is evaluated multiple times. 15c8578539SThomas Weißschuh# Running scripts/build-version from here would introduce inconsistencies. 16c8578539SThomas Weißschuhpkgrel="${KBUILD_REVISION}" 17c8578539SThomas Weißschuhpkgdesc='Upstream Linux' 18c8578539SThomas Weißschuhurl='https://www.kernel.org/' 19c8578539SThomas Weißschuh# Enable flexible cross-compilation 20c8578539SThomas Weißschuharch=(${CARCH}) 21c8578539SThomas Weißschuhlicense=(GPL-2.0-only) 22c8578539SThomas Weißschuhmakedepends=( 23c8578539SThomas Weißschuh bc 24c8578539SThomas Weißschuh bison 25c8578539SThomas Weißschuh flex 26c8578539SThomas Weißschuh gettext 27c8578539SThomas Weißschuh kmod 28c8578539SThomas Weißschuh libelf 29c8578539SThomas Weißschuh openssl 30c8578539SThomas Weißschuh pahole 31c8578539SThomas Weißschuh perl 32c8578539SThomas Weißschuh python 33c8578539SThomas Weißschuh rsync 34c8578539SThomas Weißschuh tar 35c8578539SThomas Weißschuh) 36c8578539SThomas Weißschuhoptions=(!debug !strip !buildflags !makeflags) 37c8578539SThomas Weißschuh 38c8578539SThomas Weißschuh_prologue() { 39b6223c2dSMasahiro Yamada # MAKEFLAGS from makepkg.conf override the ones inherited from kbuild. 40c8578539SThomas Weißschuh # Bypass this override with a custom variable. 41c8578539SThomas Weißschuh export MAKEFLAGS="${KBUILD_MAKEFLAGS}" 42c8578539SThomas Weißschuh 435b000f3cSMasahiro Yamada # Kbuild works in the output directory, where this PKGBUILD is located. 445b000f3cSMasahiro Yamada cd "$(dirname "${BASH_SOURCE[0]}")" 455b000f3cSMasahiro Yamada} 46b6223c2dSMasahiro Yamada 47b6223c2dSMasahiro Yamadabuild() { 48b6223c2dSMasahiro Yamada _prologue 49b6223c2dSMasahiro Yamada 50c8578539SThomas Weißschuh ${MAKE} KERNELRELEASE="${KERNELRELEASE}" KBUILD_BUILD_VERSION="${pkgrel}" 51c8578539SThomas Weißschuh} 52c8578539SThomas Weißschuh 53c8578539SThomas Weißschuh_package() { 54c8578539SThomas Weißschuh pkgdesc="The ${pkgdesc} kernel and modules" 55c8578539SThomas Weißschuh 56c8578539SThomas Weißschuh local modulesdir="${pkgdir}/usr/${MODLIB}" 57c8578539SThomas Weißschuh 58c8578539SThomas Weißschuh _prologue 59b6223c2dSMasahiro Yamada 60b6223c2dSMasahiro Yamada echo "Installing boot image..." 61c8578539SThomas Weißschuh # systemd expects to find the kernel here to allow hibernation 62c8578539SThomas Weißschuh # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344 63c8578539SThomas Weißschuh install -Dm644 "$(${MAKE} -s image_name)" "${modulesdir}/vmlinuz" 64c8578539SThomas Weißschuh 65c8578539SThomas Weißschuh # Used by mkinitcpio to name the kernel 66c8578539SThomas Weißschuh echo "${pkgbase}" > "${modulesdir}/pkgbase" 67c8578539SThomas Weißschuh 68c8578539SThomas Weißschuh echo "Installing modules..." 69c8578539SThomas Weißschuh ${MAKE} INSTALL_MOD_PATH="${pkgdir}/usr" INSTALL_MOD_STRIP=1 \ 70c8578539SThomas Weißschuh DEPMOD=true modules_install 71c8578539SThomas Weißschuh 72c8578539SThomas Weißschuh if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then 73c8578539SThomas Weißschuh echo "Installing dtbs..." 74c8578539SThomas Weißschuh ${MAKE} INSTALL_DTBS_PATH="${modulesdir}/dtb" dtbs_install 75c8578539SThomas Weißschuh fi 76c8578539SThomas Weißschuh 77c8578539SThomas Weißschuh # remove build link, will be part of -headers package 78c8578539SThomas Weißschuh rm -f "${modulesdir}/build" 79c8578539SThomas Weißschuh} 80c8578539SThomas Weißschuh 81c8578539SThomas Weißschuh_package-headers() { 82c8578539SThomas Weißschuh pkgdesc="Headers and scripts for building modules for the ${pkgdesc} kernel" 83c8578539SThomas Weißschuh 84c8578539SThomas Weißschuh local builddir="${pkgdir}/usr/${MODLIB}/build" 85c8578539SThomas Weißschuh 86c8578539SThomas Weißschuh _prologue 87b6223c2dSMasahiro Yamada 88b6223c2dSMasahiro Yamada if grep -q CONFIG_MODULES=y include/config/auto.conf; then 89e6b65ee1SJose Fernandez echo "Installing build files..." 90c8578539SThomas Weißschuh "${srctree}/scripts/package/install-extmod-build" "${builddir}" 91c8578539SThomas Weißschuh fi 92e6b65ee1SJose Fernandez 93c8578539SThomas Weißschuh echo "Installing System.map and config..." 94c8578539SThomas Weißschuh mkdir -p "${builddir}" 95e6b65ee1SJose Fernandez cp System.map "${builddir}/System.map" 96c8578539SThomas Weißschuh cp .config "${builddir}/.config" 97c8578539SThomas Weißschuh 98c8578539SThomas Weißschuh echo "Adding symlink..." 99c8578539SThomas Weißschuh mkdir -p "${pkgdir}/usr/src" 100c8578539SThomas Weißschuh ln -sr "${builddir}" "${pkgdir}/usr/src/${pkgbase}" 101c8578539SThomas Weißschuh} 102c8578539SThomas Weißschuh 103c8578539SThomas Weißschuh_package-api-headers() { 104c8578539SThomas Weißschuh pkgdesc="Kernel headers sanitized for use in userspace" 105c8578539SThomas Weißschuh provides=(linux-api-headers="${pkgver}") 106*38544305SThomas Weißschuh conflicts=(linux-api-headers) 107c8578539SThomas Weißschuh 108c8578539SThomas Weißschuh _prologue 109b6223c2dSMasahiro Yamada 110c8578539SThomas Weißschuh ${MAKE} headers_install INSTALL_HDR_PATH="${pkgdir}/usr" 111c8578539SThomas Weißschuh} 112c8578539SThomas Weißschuh 113c8578539SThomas Weißschuh_package-debug(){ 1144929f5b9SJose Fernandez pkgdesc="Non-stripped vmlinux file for the ${pkgdesc} kernel" 1154929f5b9SJose Fernandez 1164929f5b9SJose Fernandez local debugdir="${pkgdir}/usr/src/debug/${pkgbase}" 1174929f5b9SJose Fernandez local builddir="${pkgdir}/usr/${MODLIB}/build" 1184929f5b9SJose Fernandez 1194929f5b9SJose Fernandez _prologue 1204929f5b9SJose Fernandez 1214929f5b9SJose Fernandez install -Dt "${debugdir}" -m644 vmlinux 1224929f5b9SJose Fernandez mkdir -p "${builddir}" 1234929f5b9SJose Fernandez ln -sr "${debugdir}/vmlinux" "${builddir}/vmlinux" 1244929f5b9SJose Fernandez} 1254929f5b9SJose Fernandez 1264929f5b9SJose Fernandezfor _p in "${pkgname[@]}"; do 127c8578539SThomas Weißschuh eval "package_$_p() { 128c8578539SThomas Weißschuh $(declare -f "_package${_p#$pkgbase}") 129c8578539SThomas Weißschuh _package${_p#$pkgbase} 130c8578539SThomas Weißschuh }" 131c8578539SThomas Weißschuhdone 132c8578539SThomas Weißschuh