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
  45if test -z "$KBUILD_BUILD_USER"; then
  46        LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
  47else
  48        LINUX_COMPILE_BY=$KBUILD_BUILD_USER
  49fi
  50if test -z "$KBUILD_BUILD_HOST"; then
  51        LINUX_COMPILE_HOST=`hostname`
  52else
  53        LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
  54fi
  55
  56UTS_VERSION="#$VERSION"
  57CONFIG_FLAGS=""
  58if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
  59if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
  60UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
  61
  62# Truncate to maximum length
  63
  64UTS_LEN=64
  65UTS_TRUNCATE="cut -b -$UTS_LEN"
  66
  67# Generate a temporary compile.h
  68
  69( echo /\* This file is auto generated, version $VERSION \*/
  70  if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
  71
  72  echo \#define UTS_MACHINE \"$ARCH\"
  73
  74  echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
  75
  76  echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"
  77  echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
  78
  79  echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | grep ' version '`\"
  80) > .tmpcompile
  81
  82# Only replace the real compile.h if the new one is different,
  83# in order to preserve the timestamp and avoid unnecessary
  84# recompilations.
  85# We don't consider the file changed if only the date/time changed.
  86# A kernel config change will increase the generation number, thus
  87# causing compile.h to be updated (including date/time) due to the
  88# changed comment in the
  89# first line.
  90
  91if [ -r $TARGET ] && \
  92      grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
  93      grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
  94      cmp -s .tmpver.1 .tmpver.2; then
  95   rm -f .tmpcompile
  96else
  97   vecho "  UPD     $TARGET"
  98   mv -f .tmpcompile $TARGET
  99fi
 100rm -f .tmpver.1 .tmpver.2
 101