xref: /utopia/UTPA2-700.0.x/projects/build/scripts/mkcompile_h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi#!/bin/sh
2*53ee8cc1Swenshuai.xi
3*53ee8cc1Swenshuai.xiTARGET=$1
4*53ee8cc1Swenshuai.xiARCH=$2
5*53ee8cc1Swenshuai.xiSMP=$3
6*53ee8cc1Swenshuai.xiPREEMPT=$4
7*53ee8cc1Swenshuai.xiCC=$5
8*53ee8cc1Swenshuai.xi
9*53ee8cc1Swenshuai.xivecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
10*53ee8cc1Swenshuai.xi
11*53ee8cc1Swenshuai.xi# If compile.h exists already and we don't own autoconf.h
12*53ee8cc1Swenshuai.xi# (i.e. we're not the same user who did make *config), don't
13*53ee8cc1Swenshuai.xi# modify compile.h
14*53ee8cc1Swenshuai.xi# So "sudo make install" won't change the "compiled by <user>"
15*53ee8cc1Swenshuai.xi# do "compiled by root"
16*53ee8cc1Swenshuai.xi
17*53ee8cc1Swenshuai.xiif [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
18*53ee8cc1Swenshuai.xi  vecho "  SKIPPED $TARGET"
19*53ee8cc1Swenshuai.xi  exit 0
20*53ee8cc1Swenshuai.xifi
21*53ee8cc1Swenshuai.xi
22*53ee8cc1Swenshuai.xi# Do not expand names
23*53ee8cc1Swenshuai.xiset -f
24*53ee8cc1Swenshuai.xi
25*53ee8cc1Swenshuai.xi# Fix the language to get consistent output
26*53ee8cc1Swenshuai.xiLC_ALL=C
27*53ee8cc1Swenshuai.xiexport LC_ALL
28*53ee8cc1Swenshuai.xi
29*53ee8cc1Swenshuai.xiif [ -z "$KBUILD_BUILD_VERSION" ]; then
30*53ee8cc1Swenshuai.xi	if [ -r .version ]; then
31*53ee8cc1Swenshuai.xi		VERSION=`cat .version`
32*53ee8cc1Swenshuai.xi	else
33*53ee8cc1Swenshuai.xi		VERSION=0
34*53ee8cc1Swenshuai.xi		echo 0 > .version
35*53ee8cc1Swenshuai.xi	fi
36*53ee8cc1Swenshuai.xielse
37*53ee8cc1Swenshuai.xi	VERSION=$KBUILD_BUILD_VERSION
38*53ee8cc1Swenshuai.xifi
39*53ee8cc1Swenshuai.xi
40*53ee8cc1Swenshuai.xiif [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
41*53ee8cc1Swenshuai.xi	TIMESTAMP=`date`
42*53ee8cc1Swenshuai.xielse
43*53ee8cc1Swenshuai.xi	TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
44*53ee8cc1Swenshuai.xifi
45*53ee8cc1Swenshuai.xiif test -z "$KBUILD_BUILD_USER"; then
46*53ee8cc1Swenshuai.xi	LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
47*53ee8cc1Swenshuai.xielse
48*53ee8cc1Swenshuai.xi	LINUX_COMPILE_BY=$KBUILD_BUILD_USER
49*53ee8cc1Swenshuai.xifi
50*53ee8cc1Swenshuai.xiif test -z "$KBUILD_BUILD_HOST"; then
51*53ee8cc1Swenshuai.xi	LINUX_COMPILE_HOST=`hostname`
52*53ee8cc1Swenshuai.xielse
53*53ee8cc1Swenshuai.xi	LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
54*53ee8cc1Swenshuai.xifi
55*53ee8cc1Swenshuai.xi
56*53ee8cc1Swenshuai.xiUTS_VERSION="#$VERSION"
57*53ee8cc1Swenshuai.xiCONFIG_FLAGS=""
58*53ee8cc1Swenshuai.xiif [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
59*53ee8cc1Swenshuai.xiif [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
60*53ee8cc1Swenshuai.xiUTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
61*53ee8cc1Swenshuai.xi
62*53ee8cc1Swenshuai.xi# Truncate to maximum length
63*53ee8cc1Swenshuai.xi
64*53ee8cc1Swenshuai.xiUTS_LEN=64
65*53ee8cc1Swenshuai.xiUTS_TRUNCATE="cut -b -$UTS_LEN"
66*53ee8cc1Swenshuai.xi
67*53ee8cc1Swenshuai.xi# Generate a temporary compile.h
68*53ee8cc1Swenshuai.xi
69*53ee8cc1Swenshuai.xi( echo /\* This file is auto generated, version $VERSION \*/
70*53ee8cc1Swenshuai.xi  if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
71*53ee8cc1Swenshuai.xi
72*53ee8cc1Swenshuai.xi  echo \#define UTS_MACHINE \"$ARCH\"
73*53ee8cc1Swenshuai.xi
74*53ee8cc1Swenshuai.xi  echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
75*53ee8cc1Swenshuai.xi
76*53ee8cc1Swenshuai.xi  echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"
77*53ee8cc1Swenshuai.xi  echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
78*53ee8cc1Swenshuai.xi
79*53ee8cc1Swenshuai.xi  echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
80*53ee8cc1Swenshuai.xi) > .tmpcompile
81*53ee8cc1Swenshuai.xi
82*53ee8cc1Swenshuai.xi# Only replace the real compile.h if the new one is different,
83*53ee8cc1Swenshuai.xi# in order to preserve the timestamp and avoid unnecessary
84*53ee8cc1Swenshuai.xi# recompilations.
85*53ee8cc1Swenshuai.xi# We don't consider the file changed if only the date/time changed.
86*53ee8cc1Swenshuai.xi# A kernel config change will increase the generation number, thus
87*53ee8cc1Swenshuai.xi# causing compile.h to be updated (including date/time) due to the
88*53ee8cc1Swenshuai.xi# changed comment in the
89*53ee8cc1Swenshuai.xi# first line.
90*53ee8cc1Swenshuai.xi
91*53ee8cc1Swenshuai.xiif [ -r $TARGET ] && \
92*53ee8cc1Swenshuai.xi      grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
93*53ee8cc1Swenshuai.xi      grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
94*53ee8cc1Swenshuai.xi      cmp -s .tmpver.1 .tmpver.2; then
95*53ee8cc1Swenshuai.xi   rm -f .tmpcompile
96*53ee8cc1Swenshuai.xielse
97*53ee8cc1Swenshuai.xi   vecho "  UPD     $TARGET"
98*53ee8cc1Swenshuai.xi   mv -f .tmpcompile $TARGET
99*53ee8cc1Swenshuai.xifi
100*53ee8cc1Swenshuai.xirm -f .tmpver.1 .tmpver.2
101