cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mkcompile_h (2644B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0
      3
      4TARGET=$1
      5ARCH=$2
      6SMP=$3
      7PREEMPT=$4
      8PREEMPT_DYNAMIC=$5
      9PREEMPT_RT=$6
     10CC_VERSION="$7"
     11LD=$8
     12
     13# Do not expand names
     14set -f
     15
     16# Fix the language to get consistent output
     17LC_ALL=C
     18export LC_ALL
     19
     20if [ -z "$KBUILD_BUILD_VERSION" ]; then
     21	VERSION=$(cat .version 2>/dev/null || echo 1)
     22else
     23	VERSION=$KBUILD_BUILD_VERSION
     24fi
     25
     26if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
     27	TIMESTAMP=`date`
     28else
     29	TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
     30fi
     31if test -z "$KBUILD_BUILD_USER"; then
     32	LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
     33else
     34	LINUX_COMPILE_BY=$KBUILD_BUILD_USER
     35fi
     36if test -z "$KBUILD_BUILD_HOST"; then
     37	LINUX_COMPILE_HOST=`uname -n`
     38else
     39	LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
     40fi
     41
     42UTS_VERSION="#$VERSION"
     43CONFIG_FLAGS=""
     44if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
     45
     46if [ -n "$PREEMPT_RT" ] ; then
     47	CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT_RT"
     48elif [ -n "$PREEMPT_DYNAMIC" ] ; then
     49	CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT_DYNAMIC"
     50elif [ -n "$PREEMPT" ] ; then
     51	CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"
     52fi
     53
     54# Truncate to maximum length
     55UTS_LEN=64
     56UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)"
     57
     58# Generate a temporary compile.h
     59
     60{ echo /\* This file is auto generated, version $VERSION \*/
     61  if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
     62
     63  echo \#define UTS_MACHINE \"$ARCH\"
     64
     65  echo \#define UTS_VERSION \"$UTS_VERSION\"
     66
     67  printf '#define LINUX_COMPILE_BY "%s"\n' "$LINUX_COMPILE_BY"
     68  echo \#define LINUX_COMPILE_HOST \"$LINUX_COMPILE_HOST\"
     69
     70  LD_VERSION=$($LD -v | head -n1 | sed 's/(compatible with [^)]*)//' \
     71		      | sed 's/[[:space:]]*$//')
     72  printf '#define LINUX_COMPILER "%s"\n' "$CC_VERSION, $LD_VERSION"
     73} > .tmpcompile
     74
     75# Only replace the real compile.h if the new one is different,
     76# in order to preserve the timestamp and avoid unnecessary
     77# recompilations.
     78# We don't consider the file changed if only the date/time changed,
     79# unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for
     80# reproducible builds with that value referring to a commit timestamp).
     81# A kernel config change will increase the generation number, thus
     82# causing compile.h to be updated (including date/time) due to the
     83# changed comment in the
     84# first line.
     85
     86if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
     87   IGNORE_PATTERN="UTS_VERSION"
     88else
     89   IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED"
     90fi
     91
     92if [ -r $TARGET ] && \
     93      grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \
     94      grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \
     95      cmp -s .tmpver.1 .tmpver.2; then
     96   rm -f .tmpcompile
     97else
     98   echo "  UPD     $TARGET"
     99   mv -f .tmpcompile $TARGET
    100fi
    101rm -f .tmpver.1 .tmpver.2