linux/scripts/mkcompile_h
<<
>>
Prefs
   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
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.