#!/usr/bin/env sh
#
# SPDX-License-Identifier: GPL-2.0-only

DATE=""
GITREV=""
TIMESOURCE=""
XGCCPATH="${XGCCPATH:-util/crossgcc/xgcc/bin/}"

export LANG=C
export LC_ALL=C
export TZ=UTC0

XCOMPILE=$1

if [ -z "$XCOMPILE" ] || [ "$1" = "--help" ]; then
	echo "usage: $0 <xcompile>" >&2
	exit 1
fi

# $1: format string
get_git_head_data() {
	LANG= git log --no-show-signature -1 --format="format:$1" 2>/dev/null || \
	LANG= git log -1 --format="format:$1"
}

if [ "${BUILD_TIMELESS}" = "1" ]; then
	GITREV=Timeless
	TIMESOURCE="fixed"
	DATE=0
elif [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then
	GITREV=$(get_git_head_data %h)
	TIMESOURCE=git
	DATE=$(get_git_head_data %ct)
else
	GITREV=Unknown
	TIMESOURCE="date"
	DATE=$(LANG= LC_ALL=C TZ=UTC0 date +%s)
fi

our_date() {
case $(uname) in
NetBSD|OpenBSD|DragonFly|FreeBSD|Darwin)
	date -r $1 $2
	;;
*)
	date -d @$1 $2
esac
}

# Look for IASL in XGCCPATH and xcompile.  Unfortunately,
# xcompile isn't available on the first build.
# If neither of those gives a valid iasl, check the path.
IASL="${XGCCPATH}iasl"
eval $(grep ^IASL:= "$XCOMPILE" 2>/dev/null | sed s,:=,=,)
if [ ! -x "${IASL}" ]; then
	IASL=$(command -v iasl)
fi
IASLVERSION="$(${IASL} -v | grep version | sed 's/.*version //')" >/dev/null

#Print out the information that goes into build.h
printf "/* build system definitions (autogenerated) */\n"
printf "#ifndef __BUILD_H\n"
printf "#define __BUILD_H\n\n"
printf "#define COREBOOT_VERSION %s\n" "\"$KERNELVERSION\""

#See if the build is running in a git repo and the git command is available
printf "/* timesource: $TIMESOURCE */\n"
printf "#define COREBOOT_VERSION_TIMESTAMP $DATE\n"
printf "#define COREBOOT_ORIGIN_GIT_REVISION \"$GITREV\"\n"

printf "#define COREBOOT_EXTRA_VERSION \"%s\"\n" "$COREBOOT_EXTRA_VERSION"
printf "#define COREBOOT_MAJOR_VERSION %d\n#define COREBOOT_MINOR_VERSION %d\n" `git describe --match [0-9].[0-9]* | sed 's/\([0-9]\)\.\([0-9]\+\).*/\1 \2/'`
printf "#define COREBOOT_BUILD \"$(our_date "$DATE")\"\n"
printf "#define COREBOOT_BUILD_YEAR_BCD 0x$(our_date "$DATE" +%y)\n"
printf "#define COREBOOT_BUILD_MONTH_BCD 0x$(our_date "$DATE" +%m)\n"
printf "#define COREBOOT_BUILD_DAY_BCD 0x$(our_date "$DATE" +%d)\n"
printf "#define COREBOOT_BUILD_WEEKDAY_BCD 0x$(our_date "$DATE" +%w)\n"
printf "#define COREBOOT_BUILD_EPOCH \"$(our_date "$DATE" +%s)\"\n"
printf "#define COREBOOT_DMI_DATE \"$(our_date "$DATE" +%m/%d/%Y)\"\n"
printf "\n"
printf "#define COREBOOT_COMPILE_TIME \"$(our_date "$DATE" +%T)\"\n"
printf "#define ASL_VERSION 0x%d\n" "${IASLVERSION}"
printf "#endif\n"
