#!/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 -empty -delete -print
find $OUTPUT_DIRECTORY/ -name \*.sh -delete -print

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)."
