#!/usr/bin/env bash
# Copyright 2021 SkyWater PDK Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0

set -xe

export PATH=/host/out/magic/bin:$PATH

cd /host/github/open_pdks
git describe

POSSIBLE_TOOLS="all" # klayout magic netgen irsim openlane qflow xschem"
for TTOOL in $POSSIBLE_TOOLS; do

  #  --enable-klayout
  if [ x$TTOOL = xklayout -o x$TTOOL = xall ]; then
    KLAYOUT=--enable-klayout
  else
    KLAYOUT=--disable-klayout
  fi

  #  --enable-magic
  if [ x$TTOOL = xmagic -o x$TTOOL = xall  ]; then
    MAGIC=--enable-magic
  else
    MAGIC=--disable-magic
  fi

  #  --enable-netgen
  if [ x$TTOOL = xnetgen -o x$TTOOL = xall ]; then
    NETGEN=--enable-netgen
  else
    NETGEN=--disable-netgen
  fi

  #  --enable-irsim
  if [ x$TTOOL = xirsim -o x$TTOOL = xall ]; then
    IRSIM=--enable-irsim
  else
    IRSIM=--disable-irsim
  fi

  #  --enable-openlane
  if [ x$TTOOL = xopenlane -o x$TTOOL = xall ]; then
    OPENLANE=--enable-openlane
  else
    OPENLANE=--disable-openlane
  fi

  #  --enable-qflow
  if [ x$TTOOL = xqflow -o x$TTOOL = xall ]; then
    QFLOW=--enable-qflow
  else
    QFLOW=--disable-qflow
  fi

  #  --enable-xschem
  if [ x$TTOOL = xxschem -o x$TTOOL = xall ]; then
    XSCHEM=--enable-xschem
  else
    XSCHEM=--disable-xschem
  fi

  echo
  echo "========================================="
  echo " Building PDK files for $TTOOL"
  echo "-----------------------------------------"
  ./configure \
	--enable-sky130-pdk=/host/skywater-pdk \
	--enable-alpha-sky130 \
	--prefix=/usr/local \
        $KLAYOUT \
        $MAGIC \
        $NETGEN \
        $IRSIM \
        $OPENLANE \
        $QFLOW \
        $XSCHEM \

  make -j$(nproc) > /host/out/pdk-$TTOOL.build.log
  make DESTDIR=/host/out/pdk-$TTOOL install > /host/out/pdk-$TTOOL.install.log
  echo "========================================="

  echo
  echo "========================================="
  echo " PDK files for $TTOOL"
  echo "-----------------------------------------"
  find /host/out/pdk-$TTOOL | sort
  echo "========================================="
  echo
  if [ ! -d /host/out/pdk-$TTOOL ]; then
     echo "Missing install files for $TTOOL"
     exit 1
  fi
done
