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