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