blob: 908098596b3269d78c81f25830b9620834c15a06 [file] [log] [blame]
xiaohu.huangf4577f72022-11-08 17:56:02 +08001#!/bin/sh
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8RTOS_SDK_VERSION_FILE=$1
9RTOS_SDK_MANIFEST_FILE=$2
xiaohu.huang22242642024-08-14 16:53:12 +080010RTOS_SDK_MANIFEST_REF_FILE=$3
xiaohu.huangf4577f72022-11-08 17:56:02 +080011
12echo "#ifndef __SDK_VER_H__" > $RTOS_SDK_VERSION_FILE
13echo "#define __SDK_VER_H__" >> $RTOS_SDK_VERSION_FILE
14echo "" >> $RTOS_SDK_VERSION_FILE
15
16echo -e "#include <stdio.h>\n" >> $RTOS_SDK_VERSION_FILE
17
18COMPILE_TIME=`date +%F" "%T`
19echo "#define CONFIG_BOARD_NAME \"$BOARD\"" >> $RTOS_SDK_VERSION_FILE
20echo "#define CONFIG_PRODUCT_NAME \"$PRODUCT\"" >> $RTOS_SDK_VERSION_FILE
21echo "#define CONFIG_COMPILE_TIME \"$COMPILE_TIME\"" >> $RTOS_SDK_VERSION_FILE
22# Get SDK_VERSION
23pattern="revision="
24keyline=`grep 'default .* revision' $RTOS_SDK_MANIFEST_FILE`
25for keyword in $keyline; do
26 let i++
27 if [[ $keyword == $pattern* ]]; then
28 SDK_VERSION=`echo ${keyword#*${pattern}} | sed 's/\"//g' | sed 's/\/>//g'`
29 break;
30 fi
31done
32echo "#define CONFIG_VERSION_STRING \"$SDK_VERSION\"" >> $RTOS_SDK_VERSION_FILE
33echo "" >> $RTOS_SDK_VERSION_FILE
34
xiaohu.huang22242642024-08-14 16:53:12 +080035if [ -n "$RTOS_SDK_MANIFEST_REF_FILE" ] && [ -f "$RTOS_SDK_MANIFEST_REF_FILE" ]; then
36 is_need_filter=1
37 ref_list=`awk '/path=/ && /name=/ {for (i=1; i<=NF; i++) if ($i ~ /^name=/) \
38 {split($i, a, "="); print a[2]}}' $RTOS_SDK_MANIFEST_REF_FILE`
39else
40 is_need_filter=0
41fi
42
xiaohu.huangf4577f72022-11-08 17:56:02 +080043echo "const char* version_map[] = {" >> $RTOS_SDK_VERSION_FILE
44printf " \"[%-7s %-12s %-12s]\",\n" "cm_hash" "remote_name" "branch" \
45 >> $RTOS_SDK_VERSION_FILE
46GIT_LISTS=$(find ! -path "*/.repo/*" -name ".git")
47for PRODUCT_PATH in $GIT_LISTS;
48do
49 if [ -d $PRODUCT_PATH ];then
50 #echo $PRODUCT_PATH
51 GIT_REMOTE_NAME="$(cd $PRODUCT_PATH && git remote -v 2>/dev/null \
52 | head -n 1 | cut -d " " -f 1)"
53 GIT_NAME=${GIT_REMOTE_NAME##*rtos_sdk/}
xiaohu.huang22242642024-08-14 16:53:12 +080054 if [ $is_need_filter -eq 1 ]; then
55 if ! echo "$ref_list" | grep -q "\"rtos_sdk/$GIT_NAME\""; then
56 continue;
57 fi
58 fi
xiaohu.huangf4577f72022-11-08 17:56:02 +080059 GIT_1ST_NAME="$(echo ${GIT_NAME} | cut -d / -f 1)"
60 GIT_2ND_NAME=${GIT_REMOTE_NAME##*/}
61 COMMIT_HASH="$(cd $PRODUCT_PATH && git log --oneline -1 2>/dev/null \
62 | head -n 1 | cut -d " " -f 1)"
63 BRANCH=$(cd $PRODUCT_PATH && git branch 2>/dev/null | grep "\*" | cut -d " " -f 2)
64 BRANCH=${BRANCH##*"/"}
65 if [ "${GIT_1ST_NAME}"x = "${GIT_2ND_NAME}"x ];then
66 printf " \"[%-7s %-12s %-12s]\",\n" $COMMIT_HASH \
67 ${GIT_1ST_NAME:0:12} ${BRANCH:0:12} >> $RTOS_SDK_VERSION_FILE
68 else
69 printf " \"[%-7s %-4s %-7s %-12s]\",\n" $COMMIT_HASH \
70 ${GIT_1ST_NAME:0:4} ${GIT_2ND_NAME:0:7} ${BRANCH:0:12} \
71 >> $RTOS_SDK_VERSION_FILE
72 fi
73 else
74 echo "product path:$PRODUCT_PATH is not exist,please check it..."
75 fi
76done
77echo "};" >> $RTOS_SDK_VERSION_FILE
78
79echo "#ifdef CONFIG_VERSION_FULL_INFO" >> $RTOS_SDK_VERSION_FILE
80echo "#define OUTPUT_VERSION_FULL_INFO() \\
81do{ \\
82 for (int i = 0; i < sizeof(version_map) / sizeof(const char*); i++) \\
83 printf(\"%s\\n\", version_map[i]); \\
84} \\
85while(0)" >> $RTOS_SDK_VERSION_FILE
86echo "#else" >> $RTOS_SDK_VERSION_FILE
87echo -e "#define OUTPUT_VERSION_FULL_INFO()">> $RTOS_SDK_VERSION_FILE
88echo "#endif" >> $RTOS_SDK_VERSION_FILE
89
90echo "" >> $RTOS_SDK_VERSION_FILE
91echo "#endif" >> $RTOS_SDK_VERSION_FILE