The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/scripts/mkcompile_h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #!/bin/sh
    2 
    3 TARGET=$1
    4 ARCH=$2
    5 SMP=$3
    6 PREEMPT=$4
    7 CC=$5
    8 
    9 vecho() { [ "${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 
   17 if [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
   18   vecho "  SKIPPED $TARGET"
   19   exit 0
   20 fi
   21 
   22 # Do not expand names
   23 set -f
   24 
   25 # Fix the language to get consistent output
   26 LC_ALL=C
   27 export LC_ALL
   28 
   29 if [ -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
   36 else
   37         VERSION=$KBUILD_BUILD_VERSION
   38 fi
   39 
   40 if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
   41         TIMESTAMP=`date`
   42 else
   43         TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
   44 fi
   45 if test -z "$KBUILD_BUILD_USER"; then
   46         LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
   47 else
   48         LINUX_COMPILE_BY=$KBUILD_BUILD_USER
   49 fi
   50 if test -z "$KBUILD_BUILD_HOST"; then
   51         LINUX_COMPILE_HOST=`hostname`
   52 else
   53         LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
   54 fi
   55 
   56 UTS_VERSION="#$VERSION"
   57 CONFIG_FLAGS=""
   58 if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
   59 if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
   60 UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
   61 
   62 # Truncate to maximum length
   63 
   64 UTS_LEN=64
   65 UTS_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 | tail -n 1`\"
   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 
   91 if [ -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
   96 else
   97    vecho "  UPD     $TARGET"
   98    mv -f .tmpcompile $TARGET
   99 fi
  100 rm -f .tmpver.1 .tmpver.2

Cache object: 0bb279f338c2f0a0c679c7136f9e2468


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.