Skip to content
Snippets Groups Projects
mkcompile_h 2.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • Linus Torvalds's avatar
    Linus Torvalds committed
    TARGET=$1
    ARCH=$2
    SMP=$3
    
    PREEMPT=$4
    CC=$5
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    
    
    vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
    
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    # If compile.h exists already and we don't own autoconf.h
    # (i.e. we're not the same user who did make *config), don't
    # modify compile.h
    # So "sudo make install" won't change the "compiled by <user>"
    # do "compiled by root"
    
    
    if [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
    
      vecho "  SKIPPED $TARGET"
    
    Linus Torvalds's avatar
    Linus Torvalds committed
      exit 0
    fi
    
    # Do not expand names
    set -f
    
    
    # Fix the language to get consistent output
    LC_ALL=C
    export LC_ALL
    
    if [ -z "$KBUILD_BUILD_VERSION" ]; then
    	if [ -r .version ]; then
    		VERSION=`cat .version`
    	else
    		VERSION=0
    		echo 0 > .version
    	fi
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    else
    
    	VERSION=$KBUILD_BUILD_VERSION
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    fi
    
    
    if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
    	TIMESTAMP=`date`
    else
    	TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
    fi
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    
    UTS_VERSION="#$VERSION"
    
    CONFIG_FLAGS=""
    if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
    if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
    
    UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    
    # Truncate to maximum length
    
    UTS_LEN=64
    
    UTS_TRUNCATE="cut -b -$UTS_LEN"
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    
    # Generate a temporary compile.h
    
    ( echo /\* This file is auto generated, version $VERSION \*/
    
      if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
      
    
    Linus Torvalds's avatar
    Linus Torvalds committed
      echo \#define UTS_MACHINE \"$ARCH\"
    
      echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
    
      echo \#define LINUX_COMPILE_BY \"`whoami`\"
      echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
    
    
      echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
    
    Linus Torvalds's avatar
    Linus Torvalds committed
    ) > .tmpcompile
    
    # Only replace the real compile.h if the new one is different,
    # in order to preserve the timestamp and avoid unnecessary
    # recompilations.
    # We don't consider the file changed if only the date/time changed.
    # A kernel config change will increase the generation number, thus
    # causing compile.h to be updated (including date/time) due to the 
    # changed comment in the
    # first line.
    
    if [ -r $TARGET ] && \
    
          grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
          grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
    
    Linus Torvalds's avatar
    Linus Torvalds committed
          cmp -s .tmpver.1 .tmpver.2; then
       rm -f .tmpcompile
    else
    
       vecho "  UPD     $TARGET"
    
    Linus Torvalds's avatar
    Linus Torvalds committed
       mv -f .tmpcompile $TARGET
    fi
    rm -f .tmpver.1 .tmpver.2