1*8d67ca89SAndroid Build Coastguard Worker#!/bin/bash 2*8d67ca89SAndroid Build Coastguard Worker# 3*8d67ca89SAndroid Build Coastguard Worker# Copyright (C) 2013 The Android Open Source Project 4*8d67ca89SAndroid Build Coastguard Worker# 5*8d67ca89SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*8d67ca89SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*8d67ca89SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*8d67ca89SAndroid Build Coastguard Worker# 9*8d67ca89SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*8d67ca89SAndroid Build Coastguard Worker# 11*8d67ca89SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*8d67ca89SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*8d67ca89SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*8d67ca89SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*8d67ca89SAndroid Build Coastguard Worker# limitations under the License. 16*8d67ca89SAndroid Build Coastguard Worker 17*8d67ca89SAndroid Build Coastguard Worker### Usage: generate_uapi_headers.sh [<options>] 18*8d67ca89SAndroid Build Coastguard Worker### 19*8d67ca89SAndroid Build Coastguard Worker### This script is used to get a copy of the uapi kernel headers 20*8d67ca89SAndroid Build Coastguard Worker### from an android kernel tree and copies them into an android source 21*8d67ca89SAndroid Build Coastguard Worker### tree without any processing. The script also creates all of the 22*8d67ca89SAndroid Build Coastguard Worker### generated headers and copies them into the android source tree. 23*8d67ca89SAndroid Build Coastguard Worker### 24*8d67ca89SAndroid Build Coastguard Worker### Options: 25*8d67ca89SAndroid Build Coastguard Worker### --skip-generation 26*8d67ca89SAndroid Build Coastguard Worker### Skip the step that generates all of the include files. 27*8d67ca89SAndroid Build Coastguard Worker### --download-kernel 28*8d67ca89SAndroid Build Coastguard Worker### Automatically create a temporary git repository and check out the 29*8d67ca89SAndroid Build Coastguard Worker### linux kernel source code at TOT. 30*8d67ca89SAndroid Build Coastguard Worker### --use-kernel-dir <DIR> 31*8d67ca89SAndroid Build Coastguard Worker### Do not check out the kernel source, use the kernel directory 32*8d67ca89SAndroid Build Coastguard Worker### pointed to by <DIR>. 33*8d67ca89SAndroid Build Coastguard Worker### --verify-modified-headers-only <DIR> 34*8d67ca89SAndroid Build Coastguard Worker### Do not build anything, simply verify that the set of modified 35*8d67ca89SAndroid Build Coastguard Worker### kernel headers have not changed. 36*8d67ca89SAndroid Build Coastguard Worker 37*8d67ca89SAndroid Build Coastguard Worker# Terminate the script if any command fails. 38*8d67ca89SAndroid Build Coastguard Workerset -eE 39*8d67ca89SAndroid Build Coastguard Worker 40*8d67ca89SAndroid Build Coastguard WorkerTMPDIR="" 41*8d67ca89SAndroid Build Coastguard WorkerANDROID_DIR="" 42*8d67ca89SAndroid Build Coastguard WorkerANDROID_KERNEL_REPO="https://android.googlesource.com/kernel/common/" 43*8d67ca89SAndroid Build Coastguard WorkerANDROID_KERNEL_BRANCH="android-mainline" 44*8d67ca89SAndroid Build Coastguard WorkerKERNEL_DIR="" 45*8d67ca89SAndroid Build Coastguard WorkerKERNEL_DOWNLOAD=0 46*8d67ca89SAndroid Build Coastguard WorkerARCH_LIST=("arm" "arm64" "riscv" "x86") 47*8d67ca89SAndroid Build Coastguard WorkerANDROID_KERNEL_DIR="external/kernel-headers/original" 48*8d67ca89SAndroid Build Coastguard WorkerSKIP_GENERATION=0 49*8d67ca89SAndroid Build Coastguard WorkerVERIFY_HEADERS_ONLY=0 50*8d67ca89SAndroid Build Coastguard Worker 51*8d67ca89SAndroid Build Coastguard Workerfunction cleanup () { 52*8d67ca89SAndroid Build Coastguard Worker if [[ "${TMPDIR}" =~ /tmp ]] && [[ -d "${TMPDIR}" ]]; then 53*8d67ca89SAndroid Build Coastguard Worker echo "Removing temporary directory ${TMPDIR}" 54*8d67ca89SAndroid Build Coastguard Worker rm -rf "${TMPDIR}" 55*8d67ca89SAndroid Build Coastguard Worker TMPDIR="" 56*8d67ca89SAndroid Build Coastguard Worker fi 57*8d67ca89SAndroid Build Coastguard Worker} 58*8d67ca89SAndroid Build Coastguard Worker 59*8d67ca89SAndroid Build Coastguard Workerfunction usage () { 60*8d67ca89SAndroid Build Coastguard Worker grep '^###' $0 | sed -e 's/^###//' 61*8d67ca89SAndroid Build Coastguard Worker} 62*8d67ca89SAndroid Build Coastguard Worker 63*8d67ca89SAndroid Build Coastguard Workerfunction copy_hdrs () { 64*8d67ca89SAndroid Build Coastguard Worker local src_dir=$1 65*8d67ca89SAndroid Build Coastguard Worker local tgt_dir=$2 66*8d67ca89SAndroid Build Coastguard Worker local dont_copy_dirs=$3 67*8d67ca89SAndroid Build Coastguard Worker 68*8d67ca89SAndroid Build Coastguard Worker mkdir -p ${tgt_dir} 69*8d67ca89SAndroid Build Coastguard Worker 70*8d67ca89SAndroid Build Coastguard Worker local search_dirs=() 71*8d67ca89SAndroid Build Coastguard Worker 72*8d67ca89SAndroid Build Coastguard Worker # This only works if none of the filenames have spaces. 73*8d67ca89SAndroid Build Coastguard Worker for file in $(ls -d ${src_dir}/* 2> /dev/null); do 74*8d67ca89SAndroid Build Coastguard Worker if [[ -d "${file}" ]]; then 75*8d67ca89SAndroid Build Coastguard Worker search_dirs+=("${file}") 76*8d67ca89SAndroid Build Coastguard Worker elif [[ -f "${file}" ]] && [[ "${file}" =~ .h$ ]]; then 77*8d67ca89SAndroid Build Coastguard Worker cp ${file} ${tgt_dir} 78*8d67ca89SAndroid Build Coastguard Worker fi 79*8d67ca89SAndroid Build Coastguard Worker done 80*8d67ca89SAndroid Build Coastguard Worker 81*8d67ca89SAndroid Build Coastguard Worker if [[ "${dont_copy_dirs}" == "" ]]; then 82*8d67ca89SAndroid Build Coastguard Worker for dir in "${search_dirs[@]}"; do 83*8d67ca89SAndroid Build Coastguard Worker copy_hdrs "${dir}" ${tgt_dir}/$(basename ${dir}) 84*8d67ca89SAndroid Build Coastguard Worker done 85*8d67ca89SAndroid Build Coastguard Worker fi 86*8d67ca89SAndroid Build Coastguard Worker} 87*8d67ca89SAndroid Build Coastguard Worker 88*8d67ca89SAndroid Build Coastguard Workerfunction copy_if_exists () { 89*8d67ca89SAndroid Build Coastguard Worker local check_dir=$1 90*8d67ca89SAndroid Build Coastguard Worker local src_dir=$2 91*8d67ca89SAndroid Build Coastguard Worker local tgt_dir=$3 92*8d67ca89SAndroid Build Coastguard Worker 93*8d67ca89SAndroid Build Coastguard Worker mkdir -p ${tgt_dir} 94*8d67ca89SAndroid Build Coastguard Worker 95*8d67ca89SAndroid Build Coastguard Worker # This only works if none of the filenames have spaces. 96*8d67ca89SAndroid Build Coastguard Worker for file in $(ls -d ${src_dir}/* 2> /dev/null); do 97*8d67ca89SAndroid Build Coastguard Worker if [[ -f "${file}" ]] && [[ "${file}" =~ .h$ ]]; then 98*8d67ca89SAndroid Build Coastguard Worker # Check that this file exists in check_dir. 99*8d67ca89SAndroid Build Coastguard Worker header=$(basename ${file}) 100*8d67ca89SAndroid Build Coastguard Worker if [[ -f "${check_dir}/${header}" ]]; then 101*8d67ca89SAndroid Build Coastguard Worker cp ${file} ${tgt_dir} 102*8d67ca89SAndroid Build Coastguard Worker fi 103*8d67ca89SAndroid Build Coastguard Worker fi 104*8d67ca89SAndroid Build Coastguard Worker done 105*8d67ca89SAndroid Build Coastguard Worker} 106*8d67ca89SAndroid Build Coastguard Worker 107*8d67ca89SAndroid Build Coastguard Workerfunction verify_modified_hdrs () { 108*8d67ca89SAndroid Build Coastguard Worker local src_dir=$1 109*8d67ca89SAndroid Build Coastguard Worker local tgt_dir=$2 110*8d67ca89SAndroid Build Coastguard Worker local kernel_dir=$3 111*8d67ca89SAndroid Build Coastguard Worker 112*8d67ca89SAndroid Build Coastguard Worker local search_dirs=() 113*8d67ca89SAndroid Build Coastguard Worker 114*8d67ca89SAndroid Build Coastguard Worker # This only works if none of the filenames have spaces. 115*8d67ca89SAndroid Build Coastguard Worker for file in $(ls -d ${src_dir}/* 2> /dev/null); do 116*8d67ca89SAndroid Build Coastguard Worker if [[ -d "${file}" ]]; then 117*8d67ca89SAndroid Build Coastguard Worker search_dirs+=("${file}") 118*8d67ca89SAndroid Build Coastguard Worker elif [[ -f "${file}" ]] && [[ "${file}" =~ .h$ ]]; then 119*8d67ca89SAndroid Build Coastguard Worker tgt_file=${tgt_dir}/$(basename ${file}) 120*8d67ca89SAndroid Build Coastguard Worker if [[ -e ${tgt_file} ]] && ! diff "${file}" "${tgt_file}" > /dev/null; then 121*8d67ca89SAndroid Build Coastguard Worker if [[ ${file} =~ ${kernel_dir}/*(.+) ]]; then 122*8d67ca89SAndroid Build Coastguard Worker echo "New version of ${BASH_REMATCH[1]} found in kernel headers." 123*8d67ca89SAndroid Build Coastguard Worker else 124*8d67ca89SAndroid Build Coastguard Worker echo "New version of ${file} found in kernel headers." 125*8d67ca89SAndroid Build Coastguard Worker fi 126*8d67ca89SAndroid Build Coastguard Worker echo "This file needs to be updated manually." 127*8d67ca89SAndroid Build Coastguard Worker fi 128*8d67ca89SAndroid Build Coastguard Worker fi 129*8d67ca89SAndroid Build Coastguard Worker done 130*8d67ca89SAndroid Build Coastguard Worker 131*8d67ca89SAndroid Build Coastguard Worker for dir in "${search_dirs[@]}"; do 132*8d67ca89SAndroid Build Coastguard Worker verify_modified_hdrs "${dir}" ${tgt_dir}/$(basename ${dir}) "${kernel_dir}" 133*8d67ca89SAndroid Build Coastguard Worker done 134*8d67ca89SAndroid Build Coastguard Worker} 135*8d67ca89SAndroid Build Coastguard Worker 136*8d67ca89SAndroid Build Coastguard Workertrap cleanup EXIT 137*8d67ca89SAndroid Build Coastguard Worker# This automatically triggers a call to cleanup. 138*8d67ca89SAndroid Build Coastguard Workertrap "exit 1" HUP INT TERM TSTP 139*8d67ca89SAndroid Build Coastguard Worker 140*8d67ca89SAndroid Build Coastguard Workerwhile [ $# -gt 0 ]; do 141*8d67ca89SAndroid Build Coastguard Worker case "$1" in 142*8d67ca89SAndroid Build Coastguard Worker "--skip-generation") 143*8d67ca89SAndroid Build Coastguard Worker SKIP_GENERATION=1 144*8d67ca89SAndroid Build Coastguard Worker ;; 145*8d67ca89SAndroid Build Coastguard Worker "--download-kernel") 146*8d67ca89SAndroid Build Coastguard Worker KERNEL_DOWNLOAD=1 147*8d67ca89SAndroid Build Coastguard Worker ;; 148*8d67ca89SAndroid Build Coastguard Worker "--use-kernel-dir") 149*8d67ca89SAndroid Build Coastguard Worker if [[ $# -lt 2 ]]; then 150*8d67ca89SAndroid Build Coastguard Worker echo "--use-kernel-dir requires an argument." 151*8d67ca89SAndroid Build Coastguard Worker exit 1 152*8d67ca89SAndroid Build Coastguard Worker fi 153*8d67ca89SAndroid Build Coastguard Worker shift 154*8d67ca89SAndroid Build Coastguard Worker KERNEL_DIR="$1" 155*8d67ca89SAndroid Build Coastguard Worker KERNEL_DOWNLOAD=0 156*8d67ca89SAndroid Build Coastguard Worker ;; 157*8d67ca89SAndroid Build Coastguard Worker "--verify-modified-headers-only") 158*8d67ca89SAndroid Build Coastguard Worker if [[ $# -lt 2 ]]; then 159*8d67ca89SAndroid Build Coastguard Worker echo "--verify-modified-headers-only requires an argument." 160*8d67ca89SAndroid Build Coastguard Worker exit 1 161*8d67ca89SAndroid Build Coastguard Worker fi 162*8d67ca89SAndroid Build Coastguard Worker shift 163*8d67ca89SAndroid Build Coastguard Worker KERNEL_DIR="$1" 164*8d67ca89SAndroid Build Coastguard Worker KERNEL_DOWNLOAD=0 165*8d67ca89SAndroid Build Coastguard Worker VERIFY_HEADERS_ONLY=1 166*8d67ca89SAndroid Build Coastguard Worker ;; 167*8d67ca89SAndroid Build Coastguard Worker "-h" | "--help") 168*8d67ca89SAndroid Build Coastguard Worker usage 169*8d67ca89SAndroid Build Coastguard Worker exit 1 170*8d67ca89SAndroid Build Coastguard Worker ;; 171*8d67ca89SAndroid Build Coastguard Worker "-"*) 172*8d67ca89SAndroid Build Coastguard Worker echo "Error: Unrecognized option $1" 173*8d67ca89SAndroid Build Coastguard Worker usage 174*8d67ca89SAndroid Build Coastguard Worker exit 1 175*8d67ca89SAndroid Build Coastguard Worker ;; 176*8d67ca89SAndroid Build Coastguard Worker *) 177*8d67ca89SAndroid Build Coastguard Worker echo "Error: Extra arguments on the command-line." 178*8d67ca89SAndroid Build Coastguard Worker usage 179*8d67ca89SAndroid Build Coastguard Worker exit 1 180*8d67ca89SAndroid Build Coastguard Worker ;; 181*8d67ca89SAndroid Build Coastguard Worker esac 182*8d67ca89SAndroid Build Coastguard Worker shift 183*8d67ca89SAndroid Build Coastguard Workerdone 184*8d67ca89SAndroid Build Coastguard Worker 185*8d67ca89SAndroid Build Coastguard WorkerANDROID_KERNEL_DIR="${ANDROID_BUILD_TOP}/${ANDROID_KERNEL_DIR}" 186*8d67ca89SAndroid Build Coastguard Workerif [[ "${ANDROID_BUILD_TOP}" == "" ]]; then 187*8d67ca89SAndroid Build Coastguard Worker echo "ANDROID_BUILD_TOP is not set, did you run lunch?" 188*8d67ca89SAndroid Build Coastguard Worker exit 1 189*8d67ca89SAndroid Build Coastguard Workerelif [[ ! -d "${ANDROID_KERNEL_DIR}" ]]; then 190*8d67ca89SAndroid Build Coastguard Worker echo "${ANDROID_BUILD_TOP} doesn't appear to be the root of an android tree." 191*8d67ca89SAndroid Build Coastguard Worker echo " ${ANDROID_KERNEL_DIR} is not a directory." 192*8d67ca89SAndroid Build Coastguard Worker exit 1 193*8d67ca89SAndroid Build Coastguard Workerfi 194*8d67ca89SAndroid Build Coastguard Worker 195*8d67ca89SAndroid Build Coastguard Workerif [[ ${KERNEL_DOWNLOAD} -eq 1 ]]; then 196*8d67ca89SAndroid Build Coastguard Worker TMPDIR=$(mktemp -d /tmp/android_kernelXXXXXXXX) 197*8d67ca89SAndroid Build Coastguard Worker cd "${TMPDIR}" 198*8d67ca89SAndroid Build Coastguard Worker echo "Fetching android linux kernel source..." 199*8d67ca89SAndroid Build Coastguard Worker git clone ${ANDROID_KERNEL_REPO} -b ${ANDROID_KERNEL_BRANCH} --depth=1 200*8d67ca89SAndroid Build Coastguard Worker cd common 201*8d67ca89SAndroid Build Coastguard Worker KERNEL_DIR="${TMPDIR}/common" 202*8d67ca89SAndroid Build Coastguard Workerelif [[ "${KERNEL_DIR}" == "" ]]; then 203*8d67ca89SAndroid Build Coastguard Worker echo "Must specify one of --use-kernel-dir or --download-kernel." 204*8d67ca89SAndroid Build Coastguard Worker exit 1 205*8d67ca89SAndroid Build Coastguard Workerelif [[ ! -d "${KERNEL_DIR}" ]] || [[ ! -d "${KERNEL_DIR}/kernel" ]]; then 206*8d67ca89SAndroid Build Coastguard Worker echo "The kernel directory $KERNEL_DIR or $KERNEL_DIR/kernel does not exist." 207*8d67ca89SAndroid Build Coastguard Worker exit 1 208*8d67ca89SAndroid Build Coastguard Workerelse 209*8d67ca89SAndroid Build Coastguard Worker cd "${KERNEL_DIR}" 210*8d67ca89SAndroid Build Coastguard Workerfi 211*8d67ca89SAndroid Build Coastguard Worker 212*8d67ca89SAndroid Build Coastguard Workerif [[ ${VERIFY_HEADERS_ONLY} -eq 1 ]]; then 213*8d67ca89SAndroid Build Coastguard Worker # Verify if modified headers have changed. 214*8d67ca89SAndroid Build Coastguard Worker verify_modified_hdrs "${KERNEL_DIR}/include/scsi" \ 215*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/scsi" \ 216*8d67ca89SAndroid Build Coastguard Worker "${KERNEL_DIR}" 217*8d67ca89SAndroid Build Coastguard Worker exit 0 218*8d67ca89SAndroid Build Coastguard Workerfi 219*8d67ca89SAndroid Build Coastguard Worker 220*8d67ca89SAndroid Build Coastguard Workerif [[ ${SKIP_GENERATION} -eq 0 ]]; then 221*8d67ca89SAndroid Build Coastguard Worker # Build all of the generated headers. 222*8d67ca89SAndroid Build Coastguard Worker for arch in "${ARCH_LIST[@]}"; do 223*8d67ca89SAndroid Build Coastguard Worker echo "Generating headers for arch ${arch}" 224*8d67ca89SAndroid Build Coastguard Worker # Clean up any leftover headers. 225*8d67ca89SAndroid Build Coastguard Worker make ARCH=${arch} distclean 226*8d67ca89SAndroid Build Coastguard Worker make ARCH=${arch} headers_install 227*8d67ca89SAndroid Build Coastguard Worker done 228*8d67ca89SAndroid Build Coastguard Workerfi 229*8d67ca89SAndroid Build Coastguard Worker 230*8d67ca89SAndroid Build Coastguard Worker# Completely delete the old original headers so that any deleted/moved 231*8d67ca89SAndroid Build Coastguard Worker# headers are also removed. 232*8d67ca89SAndroid Build Coastguard Workerrm -rf "${ANDROID_KERNEL_DIR}/uapi" 233*8d67ca89SAndroid Build Coastguard Workermkdir -p "${ANDROID_KERNEL_DIR}/uapi" 234*8d67ca89SAndroid Build Coastguard Worker 235*8d67ca89SAndroid Build Coastguard Workercd ${ANDROID_BUILD_TOP} 236*8d67ca89SAndroid Build Coastguard Worker 237*8d67ca89SAndroid Build Coastguard Worker# Copy all of the include/uapi files to the kernel headers uapi directory. 238*8d67ca89SAndroid Build Coastguard Workercopy_hdrs "${KERNEL_DIR}/include/uapi" "${ANDROID_KERNEL_DIR}/uapi" 239*8d67ca89SAndroid Build Coastguard Worker 240*8d67ca89SAndroid Build Coastguard Worker# Copy the staging files to uapi/linux. 241*8d67ca89SAndroid Build Coastguard Workercopy_hdrs "${KERNEL_DIR}/drivers/staging/android/uapi" \ 242*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/uapi/linux" "no-copy-dirs" 243*8d67ca89SAndroid Build Coastguard Worker 244*8d67ca89SAndroid Build Coastguard Worker# Remove ion.h, it's not fully supported by the upstream kernel (see b/77976082). 245*8d67ca89SAndroid Build Coastguard Workerrm -f "${ANDROID_KERNEL_DIR}/uapi/linux/ion.h" 246*8d67ca89SAndroid Build Coastguard Worker 247*8d67ca89SAndroid Build Coastguard Worker# Copy the generated headers. 248*8d67ca89SAndroid Build Coastguard Workercopy_hdrs "${KERNEL_DIR}/include/generated/uapi" \ 249*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/uapi" 250*8d67ca89SAndroid Build Coastguard Worker 251*8d67ca89SAndroid Build Coastguard Workerfor arch in "${ARCH_LIST[@]}"; do 252*8d67ca89SAndroid Build Coastguard Worker # Copy arch headers. 253*8d67ca89SAndroid Build Coastguard Worker copy_hdrs "${KERNEL_DIR}/arch/${arch}/include/uapi" \ 254*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/uapi/asm-${arch}" 255*8d67ca89SAndroid Build Coastguard Worker # Copy the generated arch headers. 256*8d67ca89SAndroid Build Coastguard Worker copy_hdrs "${KERNEL_DIR}/arch/${arch}/include/generated/uapi" \ 257*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/uapi/asm-${arch}" 258*8d67ca89SAndroid Build Coastguard Worker 259*8d67ca89SAndroid Build Coastguard Worker # Special copy of generated header files from arch/<ARCH>/generated/asm that 260*8d67ca89SAndroid Build Coastguard Worker # also exist in uapi/asm-generic. 261*8d67ca89SAndroid Build Coastguard Worker copy_if_exists "${KERNEL_DIR}/include/uapi/asm-generic" \ 262*8d67ca89SAndroid Build Coastguard Worker "${KERNEL_DIR}/arch/${arch}/include/generated/asm" \ 263*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/uapi/asm-${arch}/asm" 264*8d67ca89SAndroid Build Coastguard Workerdone 265*8d67ca89SAndroid Build Coastguard Worker 266*8d67ca89SAndroid Build Coastguard Worker# Verify if modified headers have changed. 267*8d67ca89SAndroid Build Coastguard Workerverify_modified_hdrs "${KERNEL_DIR}/include/scsi" \ 268*8d67ca89SAndroid Build Coastguard Worker "${ANDROID_KERNEL_DIR}/scsi" \ 269*8d67ca89SAndroid Build Coastguard Worker "${KERNEL_DIR}" 270*8d67ca89SAndroid Build Coastguard Workerecho "Headers updated." 271*8d67ca89SAndroid Build Coastguard Worker 272*8d67ca89SAndroid Build Coastguard Workerif [[ ${SKIP_GENERATION} -eq 0 ]]; then 273*8d67ca89SAndroid Build Coastguard Worker cd "${KERNEL_DIR}" 274*8d67ca89SAndroid Build Coastguard Worker # Clean all of the generated headers. 275*8d67ca89SAndroid Build Coastguard Worker for arch in "${ARCH_LIST[@]}"; do 276*8d67ca89SAndroid Build Coastguard Worker echo "Cleaning kernel files for arch ${arch}" 277*8d67ca89SAndroid Build Coastguard Worker make ARCH=${arch} distclean 278*8d67ca89SAndroid Build Coastguard Worker done 279*8d67ca89SAndroid Build Coastguard Workerfi 280