xref: /aosp_15_r20/bionic/libc/kernel/tools/generate_uapi_headers.sh (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
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