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