]>
Commit | Line | Data |
---|---|---|
23121ca2 | 1 | #!/bin/sh |
d2912cb1 | 2 | # SPDX-License-Identifier: GPL-2.0-only |
23121ca2 | 3 | |
cd195bc4 | 4 | # Script to update include/generated/autoksyms.h and dependency files |
23121ca2 NP |
5 | # |
6 | # Copyright: (C) 2016 Linaro Limited | |
7 | # Created by: Nicolas Pitre, January 2016 | |
8 | # | |
23121ca2 | 9 | |
cd195bc4 | 10 | # Update the include/generated/autoksyms.h file. |
23121ca2 NP |
11 | # |
12 | # For each symbol being added or removed, the corresponding dependency | |
13 | # file's timestamp is updated to force a rebuild of the affected source | |
14 | # file. All arguments passed to this script are assumed to be a command | |
15 | # to be exec'd to trigger a rebuild of those files. | |
16 | ||
17 | set -e | |
18 | ||
19 | cur_ksyms_file="include/generated/autoksyms.h" | |
20 | new_ksyms_file="include/generated/autoksyms.h.tmpnew" | |
21 | ||
22 | info() { | |
23 | if [ "$quiet" != "silent_" ]; then | |
24 | printf " %-7s %s\n" "$1" "$2" | |
25 | fi | |
26 | } | |
27 | ||
28 | info "CHK" "$cur_ksyms_file" | |
29 | ||
30 | # Use "make V=1" to debug this script. | |
31 | case "$KBUILD_VERBOSE" in | |
32 | *1*) | |
33 | set -x | |
34 | ;; | |
35 | esac | |
36 | ||
cd195bc4 QP |
37 | # Generate a new symbol list file |
38 | $CONFIG_SHELL $srctree/scripts/gen_autoksyms.sh "$new_ksyms_file" | |
23121ca2 NP |
39 | |
40 | # Extract changes between old and new list and touch corresponding | |
41 | # dependency files. | |
42 | changed=$( | |
43 | count=0 | |
44 | sort "$cur_ksyms_file" "$new_ksyms_file" | uniq -u | | |
bc7cd2dd | 45 | sed -n 's/^#define __KSYM_\(.*\) 1/\1/p' | |
23121ca2 NP |
46 | while read sympath; do |
47 | if [ -z "$sympath" ]; then continue; fi | |
bc7cd2dd | 48 | depfile="include/ksym/${sympath}" |
23121ca2 NP |
49 | mkdir -p "$(dirname "$depfile")" |
50 | touch "$depfile" | |
825d4875 NP |
51 | # Filesystems with coarse time precision may create timestamps |
52 | # equal to the one from a file that was very recently built and that | |
53 | # needs to be rebuild. Let's guard against that by making sure our | |
54 | # dep files are always newer than the first file we created here. | |
55 | while [ ! "$depfile" -nt "$new_ksyms_file" ]; do | |
56 | touch "$depfile" | |
57 | done | |
23121ca2 NP |
58 | echo $((count += 1)) |
59 | done | tail -1 ) | |
60 | changed=${changed:-0} | |
61 | ||
62 | if [ $changed -gt 0 ]; then | |
63 | # Replace the old list with tne new one | |
64 | old=$(grep -c "^#define __KSYM_" "$cur_ksyms_file" || true) | |
65 | new=$(grep -c "^#define __KSYM_" "$new_ksyms_file" || true) | |
66 | info "KSYMS" "symbols: before=$old, after=$new, changed=$changed" | |
67 | info "UPD" "$cur_ksyms_file" | |
68 | mv -f "$new_ksyms_file" "$cur_ksyms_file" | |
69 | # Then trigger a rebuild of affected source files | |
70 | exec $@ | |
71 | else | |
72 | rm -f "$new_ksyms_file" | |
73 | fi |