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/generated/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  domain=`dnsdomainname 2> /dev/null`
  71  if [ -z "$domain" ]; then
  72    domain=`domainname 2> /dev/null`
  73  fi
  74
  75  if [ -n "$domain" ]; then
  76    echo \#define LINUX_COMPILE_DOMAIN \"`echo $domain | $UTS_TRUNCATE`\"
  77  else
  78    echo \#define LINUX_COMPILE_DOMAIN
  79  fi
  80
  81  echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
  82) > .tmpcompile
  83
  84# Only replace the real compile.h if the new one is different,
  85# in order to preserve the timestamp and avoid unnecessary
  86# recompilations.
  87# We don't consider the file changed if only the date/time changed.
  88# A kernel config change will increase the generation number, thus
  89# causing compile.h to be updated (including date/time) due to the 
  90# changed comment in the
  91# first line.
  92
  93if [ -r $TARGET ] && \
  94      grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' $TARGET > .tmpver.1 && \
  95      grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' .tmpcompile > .tmpver.2 && \
  96      cmp -s .tmpver.1 .tmpver.2; then
  97   rm -f .tmpcompile
  98else
  99   vecho "  UPD     $TARGET"
 100   mv -f .tmpcompile $TARGET
 101fi
 102rm -f .tmpver.1 .tmpver.2
 103
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.