#!/usr/bin/env bash

export REDIR_FILE="/dev/stderr"
export PYTHONHASHSEED=0

SCRIPT_SRC="$(realpath ${BASH_SOURCE[0]})"
SCRIPT_DIR="$(dirname "${SCRIPT_SRC}")"

source $SCRIPT_DIR/common.sh

if [ -z "$INPUT_DIRECTORY" ]; then
	if [ ! -z "$1" ]; then
		INPUT_DIRECTORY=$1
	else
		msg "No \$INPUT_DIRECTORY set or argument given."
		exit 1
	fi
fi
export INPUT_DIRECTORY
msg "Input directory: $INPUT_DIRECTORY"

if [ -z "$OUTPUT_DIRECTORY" ]; then
	if [ ! -z "$2" ]; then
		OUTPUT_DIRECTORY=$2
	else
		msg "No \$OUTPUT_DIRECTORY set or argument given."
		exit 1
	fi
fi
export OUTPUT_DIRECTORY
msg "Output directory: $OUTPUT_DIRECTORY"

TEMP_DIR=$(realpath ../tempdir-openram)
if [ -d "$TEMP_DIR" ]; then
	msg "Temp directory exists!"
	exit 1
fi
export TEMP_DIR
msg "Temp directory: $TEMP_DIR"

set -x

mkdir -p $TEMP_DIR

# Remove the existing stuff
rm -rf $OUTPUT_DIRECTORY/libraries
mkdir $OUTPUT_DIRECTORY/libraries

# Output the status.
DATE=$(date --iso-8601=seconds)
SAFE_DATE=$(echo $DATE | sed -e's/[T+]/_/g' -e's/://g' -e's/[^0-9A-Za-z_]/-/g')
msg "Run start on $DATE"
echo "----------------------------"

echo > $OUTPUT_DIRECTORY/build-tool-version

AUDIT_VERSION=$(git describe)
msg "Audit repo version: $AUDIT_VERSION"
echo "audit: $AUDIT_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version

MAGIC_VERSION=$(magic --version)
msg "Magic version: $MAGIC_VERSION"
echo "magic: $MAGIC_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version

SRC_VERSION=$(cd $INPUT_DIRECTORY; git describe)
msg "SRC version: $SRC_VERSION"
echo "src: $SRC_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version

echo "---------------------"
cat $OUTPUT_DIRECTORY/build-tool-version
echo "---------------------"

export DESCRIBE=audit-${AUDIT_VERSION}_magic-${MAGIC_VERSION}_$SAFE_DATE
msg "Run output version $DESCRIBE"

# Copy accross the template files
msg "Copying template files."
$SCRIPT_DIR/template-files.py $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR ; RETCODE=$?
if [ "$RETCODE" -ne 0 ]; then
	msg "Error: Failed to copy template files!?"
	exit 1
else
	msg "Successfully copied template files."
fi

# Convert the spice models
#msg "Converting spice models."
#$SCRIPT_DIR/run-spice.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR/spice; RETCODE=$?
#if [ "$RETCODE" -ne 0 ]; then
#	msg "Error: Failed to convert spice files!?"
#	exit 1
#else
#	msg "Successfully converted spice files."
#fi

#source $SCRIPT_DIR/run/run-cdl-lef-gds.inc.sh
source $SCRIPT_DIR/run/run-gds.inc.sh
$SCRIPT_DIR/gds-preview.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR sky130_fd_bd_sram || exit 1
#source $SCRIPT_DIR/run/run-verilog.inc.sh
#source $SCRIPT_DIR/run/run-liberty.inc.sh

$SCRIPT_DIR/sram_spice.py $INPUT_DIRECTORY/s8sram/V0.0.0/cells $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/cells/
cp -a $INPUT_DIRECTORY/tools $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/


# Remove the .pins files
find $OUTPUT_DIRECTORY -name *.pins -delete

cp -a $INPUT_DIRECTORY/tools 		$OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/
cp -a $INPUT_DIRECTORY/sky130 		$OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/tools/openram/
cp -a $INPUT_DIRECTORY/macros/configs 	$OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/tools/openram/
mkdir $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/macros
cat > $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/macros/README.rst <<EOF
This directory will contain the precompiled SRAM macros ready to go.
EOF

git describe
git diff HEAD

msg "Doing git operations."
(
	cd $OUTPUT_DIRECTORY
	GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
	git add -A
	git diff HEAD --stat



	find -name *.src -exec git rm -f \{\} \+
	git commit -m"Built based on $DESCRIBE"
	git push origin $GIT_BRANCH:"ram-$DESCRIBE"
	sleep 1
	git push origin $GIT_BRANCH:"ram-$DESCRIBE"
)
msg "Finished git operations."

msg "FINISHED: Build completed successfully @ $(date) using $AUDIT_VERSION (magic: $MAGIC_VERSION) (started @ $DATE)."
