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