blob: f060763c0c6a0c4304c2da5e473e7d0b59c58da5 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001TARGET=$1
2ARCH=$2
3SMP=$3
Sam Ravnborgbd5bdd82005-07-14 20:18:07 +00004PREEMPT=$4
5CC=$5
Linus Torvalds1da177e2005-04-16 15:20:36 -07006
Mike Frysingerd03fab42008-11-06 03:31:22 -05007vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
8
Linus Torvalds1da177e2005-04-16 15:20:36 -07009# 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
Mike Frysingerd03fab42008-11-06 03:31:22 -050016 vecho " SKIPPED $TARGET"
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 exit 0
18fi
19
20# Do not expand names
21set -f
22
Sam Ravnborg87c94bf2007-04-01 21:49:27 +020023# 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
Linus Torvalds1da177e2005-04-16 15:20:36 -070034else
Sam Ravnborg87c94bf2007-04-01 21:49:27 +020035 VERSION=$KBUILD_BUILD_VERSION
Linus Torvalds1da177e2005-04-16 15:20:36 -070036fi
37
Sam Ravnborg87c94bf2007-04-01 21:49:27 +020038if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
39 TIMESTAMP=`date`
40else
41 TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
42fi
Linus Torvalds1da177e2005-04-16 15:20:36 -070043
44UTS_VERSION="#$VERSION"
Sam Ravnborgbd5bdd82005-07-14 20:18:07 +000045CONFIG_FLAGS=""
46if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
47if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
Sam Ravnborg87c94bf2007-04-01 21:49:27 +020048UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
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 \*/
Sam Ravnborgbd5bdd82005-07-14 20:18:07 +000058 if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
59
Linus Torvalds1da177e2005-04-16 15:20:36 -070060 echo \#define UTS_MACHINE \"$ARCH\"
61
62 echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
63
Sam Ravnborg87c94bf2007-04-01 21:49:27 +020064 echo \#define LINUX_COMPILE_TIME \"`date +%T`\"
Linus Torvalds1da177e2005-04-16 15:20:36 -070065 echo \#define LINUX_COMPILE_BY \"`whoami`\"
66 echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
67
68 if [ -x /bin/dnsdomainname ]; then
Felipe Contreras9c3049c2009-09-17 00:38:39 +030069 domain=`dnsdomainname 2> /dev/null`
Linus Torvalds1da177e2005-04-16 15:20:36 -070070 elif [ -x /bin/domainname ]; then
Felipe Contreras9c3049c2009-09-17 00:38:39 +030071 domain=`domainname 2> /dev/null`
72 fi
73
74 if [ -n "$domain" ]; then
75 echo \#define LINUX_COMPILE_DOMAIN \"`echo $domain | $UTS_TRUNCATE`\"
Linus Torvalds1da177e2005-04-16 15:20:36 -070076 else
77 echo \#define LINUX_COMPILE_DOMAIN
78 fi
79
Sam Ravnborg87c94bf2007-04-01 21:49:27 +020080 echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
Linus Torvalds1da177e2005-04-16 15:20:36 -070081) > .tmpcompile
82
83# Only replace the real compile.h if the new one is different,
84# in order to preserve the timestamp and avoid unnecessary
85# recompilations.
86# We don't consider the file changed if only the date/time changed.
87# A kernel config change will increase the generation number, thus
88# causing compile.h to be updated (including date/time) due to the
89# changed comment in the
90# first line.
91
92if [ -r $TARGET ] && \
93 grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' $TARGET > .tmpver.1 && \
94 grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' .tmpcompile > .tmpver.2 && \
95 cmp -s .tmpver.1 .tmpver.2; then
96 rm -f .tmpcompile
97else
Mike Frysingerd03fab42008-11-06 03:31:22 -050098 vecho " UPD $TARGET"
Linus Torvalds1da177e2005-04-16 15:20:36 -070099 mv -f .tmpcompile $TARGET
100fi
101rm -f .tmpver.1 .tmpver.2