Refer to: https://github.com/LineageOS/android_kernel_sony_sm8250/blob/lineage-21/scripts/mkcompile_h#L76
Add "-m1" for grep to fix the following issues without hardcode compiler name (24b147d266):
- Warnings and errors about missing terminating '"' character and unknown type name '__s8'
while compiling include/generated/compile.h
Before the fix, the error messages were as follows:
In file included from ../../../../../../kernel/sony/sm8150/init/version.c:9:
./include/generated/compile.h:7:24: warning: missing terminating '"' character [-Winvalid-pp-token]
7 | #define LINUX_COMPILER "Android (11368308, +pgo, +bolt, +lto, +mlgo, based on r510928) clang version 18.0.0 (https://android.googlesource.com/toolchain/llvm-project 477610d4d0d988e69dbc3fae4fe86bff3f07f2b5)
| ^
./include/generated/compile.h:8:1: error: unknown type name 'Found'
8 | Found HIP installation: /dev/null, version 3.5.0, LLD 18.0.0"
| ^
./include/generated/compile.h:8:10: error: expected ';' after top level declarator
8 | Found HIP installation: /dev/null, version 3.5.0, LLD 18.0.0"
| ^
| ;
./include/generated/compile.h:8:61: warning: missing terminating '"' character [-Winvalid-pp-token]
8 | Found HIP installation: /dev/null, version 3.5.0, LLD 18.0.0"
| ^
In file included from ../../../../../../kernel/sony/sm8150/init/version.c:10:
In file included from ../../../../../../kernel/sony/sm8150/include/linux/module.h:9:
In file included from ../../../../../../kernel/sony/sm8150/include/linux/list.h:5:
../../../../../../kernel/sony/sm8150/include/linux/types.h:102:10: error: unknown type name '__s8'; did you mean '__u8'?
102 | typedef __s8 int8_t;
| ^~~~
| __u8
../../../../../../kernel/sony/sm8150/include/uapi/asm-generic/int-ll64.h:21:23: note: '__u8' declared here
21 | typedef unsigned char __u8;
| ^
../../../../../../kernel/sony/sm8150/init/version.c:46:26: error: expected ';' after top level declarator
46 | LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
| ^
| ;
../../../../../../kernel/sony/sm8150/init/version.c:51:6: error: expected ';' after top level declarator
51 | " (" LINUX_COMPILER ") %s\n";
| ^
| ;
2 warnings and 5 errors generated.
111 lines
2.8 KiB
Bash
Executable File
111 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
TARGET=$1
|
|
ARCH=$2
|
|
SMP=$3
|
|
PREEMPT=$4
|
|
CC=$5
|
|
LD=$6
|
|
|
|
vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
|
|
|
|
# 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 <user>"
|
|
# do "compiled by root"
|
|
|
|
if [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
|
|
vecho " SKIPPED $TARGET"
|
|
exit 0
|
|
fi
|
|
|
|
# Do not expand names
|
|
set -f
|
|
|
|
# Fix the language to get consistent output
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
if [ -z "$KBUILD_BUILD_VERSION" ]; then
|
|
if [ -r .version ]; then
|
|
VERSION=`cat .version`
|
|
else
|
|
VERSION=0
|
|
echo 0 > .version
|
|
fi
|
|
else
|
|
VERSION=$KBUILD_BUILD_VERSION
|
|
fi
|
|
|
|
if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
|
|
TIMESTAMP=`date`
|
|
else
|
|
TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
|
|
fi
|
|
if test -z "$KBUILD_BUILD_USER"; then
|
|
LINUX_COMPILE_BY="raystef66"
|
|
else
|
|
LINUX_COMPILE_BY=$KBUILD_BUILD_USER
|
|
fi
|
|
if test -z "$KBUILD_BUILD_HOST"; then
|
|
LINUX_COMPILE_HOST="Private-Server"
|
|
else
|
|
LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
|
|
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 $TIMESTAMP"
|
|
|
|
# Truncate to maximum length
|
|
|
|
UTS_LEN=64
|
|
UTS_TRUNCATE="cut -b -$UTS_LEN"
|
|
|
|
# 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 LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"
|
|
echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
|
|
|
|
echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | grep -m1 ' version ' | sed 's/clang/Clang/g' | sed 's/(https..*)//g' | sed 's/[[:space:]]*$//'`\"
|
|
) > .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,
|
|
# unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for
|
|
# reproducible builds with that value referring to a commit timestamp).
|
|
# 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 [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
|
|
IGNORE_PATTERN="UTS_VERSION"
|
|
else
|
|
IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED"
|
|
fi
|
|
|
|
if [ -r $TARGET ] && \
|
|
grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \
|
|
grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \
|
|
cmp -s .tmpver.1 .tmpver.2; then
|
|
rm -f .tmpcompile
|
|
else
|
|
vecho " UPD $TARGET"
|
|
mv -f .tmpcompile $TARGET
|
|
fi
|
|
rm -f .tmpver.1 .tmpver.2
|