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