xref: /openbmc/linux/scripts/mkcompile_h (revision d03fab43)
1TARGET=$1
2ARCH=$2
3SMP=$3
4PREEMPT=$4
5CC=$5
6
7vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
8
9# If compile.h exists already and we don't own autoconf.h
10# (i.e. we're not the same user who did make *config), don't
11# modify compile.h
12# So "sudo make install" won't change the "compiled by <user>"
13# do "compiled by root"
14
15if [ -r $TARGET -a ! -O include/linux/autoconf.h ]; then
16  vecho "  SKIPPED $TARGET"
17  exit 0
18fi
19
20# Do not expand names
21set -f
22
23# Fix the language to get consistent output
24LC_ALL=C
25export LC_ALL
26
27if [ -z "$KBUILD_BUILD_VERSION" ]; then
28	if [ -r .version ]; then
29		VERSION=`cat .version`
30	else
31		VERSION=0
32		echo 0 > .version
33	fi
34else
35	VERSION=$KBUILD_BUILD_VERSION
36fi
37
38if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
39	TIMESTAMP=`date`
40else
41	TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
42fi
43
44UTS_VERSION="#$VERSION"
45CONFIG_FLAGS=""
46if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
47if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
48UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
49
50# Truncate to maximum length
51
52UTS_LEN=64
53UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/"
54
55# Generate a temporary compile.h
56
57( echo /\* This file is auto generated, version $VERSION \*/
58  if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
59
60  echo \#define UTS_MACHINE \"$ARCH\"
61
62  echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
63
64  echo \#define LINUX_COMPILE_TIME \"`date +%T`\"
65  echo \#define LINUX_COMPILE_BY \"`whoami`\"
66  echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
67
68  if [ -x /bin/dnsdomainname ]; then
69    echo \#define LINUX_COMPILE_DOMAIN \"`dnsdomainname | $UTS_TRUNCATE`\"
70  elif [ -x /bin/domainname ]; then
71    echo \#define LINUX_COMPILE_DOMAIN \"`domainname | $UTS_TRUNCATE`\"
72  else
73    echo \#define LINUX_COMPILE_DOMAIN
74  fi
75
76  echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
77) > .tmpcompile
78
79# Only replace the real compile.h if the new one is different,
80# in order to preserve the timestamp and avoid unnecessary
81# recompilations.
82# We don't consider the file changed if only the date/time changed.
83# A kernel config change will increase the generation number, thus
84# causing compile.h to be updated (including date/time) due to the
85# changed comment in the
86# first line.
87
88if [ -r $TARGET ] && \
89      grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' $TARGET > .tmpver.1 && \
90      grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' .tmpcompile > .tmpver.2 && \
91      cmp -s .tmpver.1 .tmpver.2; then
92   rm -f .tmpcompile
93else
94   vecho "  UPD     $TARGET"
95   mv -f .tmpcompile $TARGET
96fi
97rm -f .tmpver.1 .tmpver.2
98