1 #!/bin/sh !! 1 TARGET=$1 2 # SPDX-License-Identifier: GPL-2.0 !! 2 ARCH=$2 >> 3 SMP=$3 >> 4 CC=$4 3 5 4 UTS_MACHINE=$1 !! 6 # If compile.h exists already and we don't own autoconf.h 5 CC_VERSION="$2" !! 7 # (i.e. we're not the same user who did make *config), don't 6 LD=$3 !! 8 # modify compile.h >> 9 # So "sudo make install" won't change the "compiled by <user>" >> 10 # do "compiled by root" 7 11 8 if test -z "$KBUILD_BUILD_USER"; then !! 12 if [ -r $TARGET -a ! -O include/linux/autoconf.h ]; then 9 LINUX_COMPILE_BY=$(whoami | sed 's/\\/ !! 13 echo " SKIPPED $TARGET" 10 else !! 14 exit 0 11 LINUX_COMPILE_BY=$KBUILD_BUILD_USER << 12 fi 15 fi 13 if test -z "$KBUILD_BUILD_HOST"; then !! 16 14 LINUX_COMPILE_HOST=`uname -n` !! 17 # Do not expand names >> 18 set -f >> 19 >> 20 if [ -r .version ]; then >> 21 VERSION=`cat .version` 15 else 22 else 16 LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST !! 23 VERSION=0 >> 24 echo 0 > .version 17 fi 25 fi 18 26 19 LD_VERSION=$(LC_ALL=C $LD -v | head -n1 | << 20 sed -e 's/(compatible with [^) << 21 27 22 cat <<EOF !! 28 UTS_VERSION="#$VERSION" 23 #define UTS_MACHINE "${UTS_MACHINE !! 29 if [ -n "$SMP" ] ; then UTS_VERSION="$UTS_VERSION SMP"; fi 24 #define LINUX_COMPILE_BY "${LINUX_COMPI !! 30 UTS_VERSION="$UTS_VERSION `LC_ALL=C LANG=C date`" 25 #define LINUX_COMPILE_HOST "${LINUX_COMPI !! 31 26 #define LINUX_COMPILER "${CC_VERSION} !! 32 # Truncate to maximum length 27 EOF !! 33 >> 34 UTS_LEN=64 >> 35 UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/" >> 36 >> 37 # Generate a temporary compile.h >> 38 >> 39 ( echo /\* This file is auto generated, version $VERSION \*/ >> 40 >> 41 echo \#define UTS_MACHINE \"$ARCH\" >> 42 >> 43 echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\" >> 44 >> 45 echo \#define LINUX_COMPILE_TIME \"`LC_ALL=C LANG=C date +%T`\" >> 46 echo \#define LINUX_COMPILE_BY \"`whoami`\" >> 47 echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\" >> 48 >> 49 if [ -x /bin/dnsdomainname ]; then >> 50 echo \#define LINUX_COMPILE_DOMAIN \"`dnsdomainname | $UTS_TRUNCATE`\" >> 51 elif [ -x /bin/domainname ]; then >> 52 echo \#define LINUX_COMPILE_DOMAIN \"`domainname | $UTS_TRUNCATE`\" >> 53 else >> 54 echo \#define LINUX_COMPILE_DOMAIN >> 55 fi >> 56 >> 57 echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\" >> 58 ) > .tmpcompile >> 59 >> 60 # Only replace the real compile.h if the new one is different, >> 61 # in order to preserve the timestamp and avoid unnecessary >> 62 # recompilations. >> 63 # We don't consider the file changed if only the date/time changed. >> 64 # A kernel config change will increase the generation number, thus >> 65 # causing compile.h to be updated (including date/time) due to the >> 66 # changed comment in the >> 67 # first line. >> 68 >> 69 if [ -r $TARGET ] && \ >> 70 grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' $TARGET > .tmpver.1 && \ >> 71 grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' .tmpcompile > .tmpver.2 && \ >> 72 cmp -s .tmpver.1 .tmpver.2; then >> 73 rm -f .tmpcompile >> 74 else >> 75 echo " UPD $TARGET" >> 76 mv -f .tmpcompile $TARGET >> 77 fi >> 78 rm -f .tmpver.1 .tmpver.2
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.