X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=kitten%2Fscripts%2Fmkcompile_h;fp=kitten%2Fscripts%2Fmkcompile_h;h=8130012deae47bf0803802e860797862d4768ea8;hb=66a1a4c7a9edcd7d8bc207aca093d694a6e6b5b2;hp=0000000000000000000000000000000000000000;hpb=f7cf9c19ecb0a589dd45ae0d2c91814bd3c2acc2;p=palacios.git diff --git a/kitten/scripts/mkcompile_h b/kitten/scripts/mkcompile_h new file mode 100755 index 0000000..8130012 --- /dev/null +++ b/kitten/scripts/mkcompile_h @@ -0,0 +1,80 @@ +TARGET=$1 +ARCH=$2 +CC=$3 + +# 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 " +# do "compiled by root" + +if [ -r $TARGET -a ! -O include/linux/autoconf.h ]; then + echo " SKIPPED $TARGET" + exit 0 +fi + +# Do not expand names +set -f + +if [ -r .version ]; then + VERSION=`cat .version` +else + VERSION=0 + echo 0 > .version +fi + + +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 `LC_ALL=C LANG=C date`" + +# Truncate to maximum length + +UTS_LEN=64 +UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/" + +# Generate a temporary compile.h + +( echo /\* This file is auto generated, version $VERSION \*/ + if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi + + echo \#define UTS_MACHINE \"$ARCH\" + + echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\" + + echo \#define LWK_COMPILE_TIME \"`LC_ALL=C LANG=C date +%T`\" + echo \#define LWK_COMPILE_BY \"`whoami`\" + echo \#define LWK_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\" + + if [ -x /bin/dnsdomainname ]; then + echo \#define LWK_COMPILE_DOMAIN \"`dnsdomainname | $UTS_TRUNCATE`\" + elif [ -x /bin/domainname ]; then + echo \#define LWK_COMPILE_DOMAIN \"`domainname | $UTS_TRUNCATE`\" + else + echo \#define LWK_COMPILE_DOMAIN + fi + + echo \#define LWK_COMPILER \"`$CC -v 2>&1 | tail -n 1`\" +) > .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\|LWK_COMPILE_TIME' $TARGET > .tmpver.1 && \ + grep -v 'UTS_VERSION\|LWK_COMPILE_TIME' .tmpcompile > .tmpver.2 && \ + cmp -s .tmpver.1 .tmpver.2; then + rm -f .tmpcompile +else + echo " UPD $TARGET" + mv -f .tmpcompile $TARGET +fi +rm -f .tmpver.1 .tmpver.2