# Makefile for Efabless design kits for gf180mcu:
#
# This file supports all the process options including 2 to 6 metals,
# and multiple thicknesses of the top metal.  The three PDKs generated by
# the Makefile represent the three backend options for which the I/O library
# has layout, which are, namely, 3-, 4-, and 5- metal options.
#
# Important note about the process:  GF180MCU uses the same base process as
# other GF180 processes.  However, instead of a thin oxide gate, the base
# oxide is a thick oxide, and the thick oxide mask defines a thicker oxide.
# The process DRC rules then follow the rule sets for thick oxide devices,
# so the minimum length transistor is 280nm, making this much more like a
# 0.28um process than a 0.18um process.
#
# Notes about definitions:
# METALSN means N layers of metal, where N can be 2 to 6.
# THICKMET3P0 means that the top metal is 3.0um thick
# THICKMET1P1 means that the top metal is 1.1um thick
# THICKMET0P9 means that the top metal is 0.9um thick
# Otherwise, the top metal is 0.6um thick
# Always use exactly one "METALSN" option (N = 4 to 6).
#
# NOTE:  Using "METALSN" instead of "METALN" because "METALN" are the preferred
# layer names in the technology LEF file.
#
# MIM means that the MiM cap is defined between top metal and the one below.
# The process defines a "MIM OPT A" with the MiM cap between metals 3 and 2.
# Because this option is only available with METALS4 (For METALS3 options A
# and B are the same), it is not being implemented.
#
# MIM caps are mutually-exclusive-selectable 1fF, 1.5fF, or 2fF per um^2.
# For simplicity, this file assumes the 2fF per um^2 value.
#
# HRPOLY1K defines the 1K high sheet rho poly resistor.
#
# Not all combinations of options are valid.  Global Foundries defines the
# following combinations as valid (adjusting for the decision not to
# implement MIM OPT A):
#
# METALS2 + THICKMET3P0
#
# METALS3 + MIM
# METALS3 + MIM + THICKMET0P9
# METALS3 + MIM + THICKMET1P1
# METALS3 + MIM + THICKMET3P0
#
# METALS4 + MIM + THICKMET0P9
# METALS4 + MIM + THICKMET1P1
# METALS4 + MIM + THICKMET3P0
#
# METALS5 + MIM + THICKMET0P9
# METALS5 + MIM + THICKMET1P1
#
# METALS6 + MIM + THICKMET0P9
#
#------------------------------------------------------------------------------
#
# The defined options per PDK in this file are:
#
#  gf180mcuA   =  METALS3 | MIM | THICKMET3P0 | HRPOLY1K
#  gf180mcuB   =  METALS4 | MIM | THICKMET1P1 | HRPOLY1K
#  gf180mcuC   =  METALS5 | MIM | THICKMET0P9 | HRPOLY1K
#
# Written by Tim Edwards April 2022
# Efabless, Inc.
#
#--------------------------------------------------------------------
# This Makefile contains bash-isms
SHELL := /bin/bash
export SHELL
# We use pipes to save output to files, without pipefail they will always be
# seen by make as having succeeded.
SHELLOPTS := pipefail
export SHELLOPTS
MV = mv
PATCH = patch
SED = @SED@

prefix = @prefix@
datarootdir = @datarootdir@
datadir = @datadir@

# Find path to open_pdks (even though this directory may be a symbolic link)
SCRIPTSDIR = $(patsubst %/gf180mcu,%,$(PWD))

# Use git revision if this is a cloned repo;  otherwise get the revision
# from the VERSION file in the directory above.
GITREV = $(shell git describe --long)
ifeq (${GITREV},)
    REVISION = $(shell cat ${SCRIPTSDIR}/VERSION)
else
    REVISION = ${GITREV}
endif
TECH = gf180mcu

# The run-time environment uses PDKPATH to override the PDK location,
# so prevent that from happening during PDK install.  This will also
# happen with PDK_ROOT, so avoid that as well.
unexport PDKPATH
unexport PDK_ROOT

# If EF_STYLE is set to 1, then efabless naming conventions are
# used, otherwise the generic naming conventions are used.
# Mainly this has to do with where the technology LEF files are
# put (libs.tech/lef/ vs. libs.ref/techLEF).

# EF_STYLE = 0 | 1
EF_STYLE = @EF_STYLE@

# Normally it's fine to keep the staging path in a local directory,
# although /tmp or a dedicated staging area are also fine, as long
# as the install process can write to the path.

STAGING_PATH = $(shell pwd)

SHARED_PDKS_PATH ?= $(datadir)/pdk

# If LINK_TARGETS is set to "none", then files are copied
# from the SkyWater sources to the target.  If set to "source",
# symbolic links are made in the target directories pointing
# back to the SkyWater sources.  If set to the name of another
# PDK (e.g, "sky130A"), then symbolic links are made to the
# same files in that PDK, where they exist, and are copied
# from source, where they don't.
#
# Behavior is to let the link targets for variant A follow the
# configuration option.  Link targets for variant B will always
# be the files of variant A (which may end up being symbolic
# links to symbolic links if "source" was chosen for link-targets
# in the configuration).

# LINK_TARGETS = source | none | gf180mcuA
LINK_TARGETS_A = @GF180MCU_LINK_TARGETS@
LINK_TARGETS_B = gf180mcuA
LINK_TARGETS_C = gf180mcuA

# ENABLED_VARIANTS = all | A | B | C
ENABLED_VARIANTS = @GF180MCU_ENABLED_VARIANTS@
ifeq (${ENABLED_VARIANTS},)
	VARIANTS += A B C
else
    ifeq (${ENABLED_VARIANTS}, all)
	VARIANTS += A B C
    else
	VARIANTS += ${ENABLED_VARIANTS}
    endif
endif

# Paths:

# Path to GF180MCU open PDK sources.  If this is specified, then all
# library repositories must be subdirectories of this path.
GF180MCU_PR_PATH = @GF180MCU_FD_PR_PATH@
GF180MCU_IO_PATH = @GF180MCU_FD_IO_PATH@
GF180MCU_SC_7T5V0_PATH = @GF180MCU_FD_SC_MCU7T5V0_PATH@
GF180MCU_SC_9T5V0_PATH = @GF180MCU_FD_SC_MCU9T5V0_PATH@
GF180MCU_SRAM_PATH = @GF180MCU_FD_IP_SRAM_PATH@

# Path to GF180MCU library sources
PDK_URL = https://github.com/google

# Names of library repositories
PDK_LIB_PR =       ${PDK_URL}/globalfoundries-pdk-libs-gf180mcu_fd_pr
PDK_LIB_IO =       ${PDK_URL}/globalfoundries-pdk-libs-gf180mcu_fd_io
PDK_LIB_SC_7T5V0 = ${PDK_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu7t5v0
PDK_LIB_SC_9T5V0 = ${PDK_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu9t5v0
PDK_LIB_SRAM =     ${PDK_URL}/globalfoundries-pdk-ip-gf180mcu_fd_ip_sram

# NOTE:  Install destination is the git repository of the technology platform.
# Once updated in git, the git project can be distributed to all hosts.
#
ifeq (${EF_STYLE}, 1)
    CONFIG_DIR = .ef-config
    REV_DIR = ${REVISION}
else
    CONFIG_DIR = .config
    REV_DIR = .
endif

# Process nodes created from the master sources
GF180MCUA = gf180mcuA
GF180MCUB = gf180mcuB
GF180MCUC = gf180mcuC

DIST_LINK_TARGETS_A = ${LINK_TARGETS_A}
DIST_LINK_TARGETS_B = ${SHARED_PDKS_PATH}/${LINK_TARGETS_B}
DIST_LINK_TARGETS_C = ${SHARED_PDKS_PATH}/${LINK_TARGETS_C}

# Basic definitions for each process node
GF180MCUA_DEFS = -DTECHNAME=gf180mcuA -DREVISION=${REVISION}
GF180MCUB_DEFS = -DTECHNAME=gf180mcuB -DREVISION=${REVISION}
GF180MCUC_DEFS = -DTECHNAME=gf180mcuC -DREVISION=${REVISION}

# Module definitions for each process node (see top)
GF180MCUA_DEFS += -DMETALS3 -DMIM -DTHICKMET3P0 -DHRPOLY1K
GF180MCUB_DEFS += -DMETALS4 -DMIM -DTHICKMET1P1 -DHRPOLY1K
GF180MCUC_DEFS += -DMETALS5 -DMIM -DTHICKMET0P9 -DHRPOLY1K

# Add staging path
GF180MCUA_DEFS += -DSTAGING_PATH=${STAGING_PATH}
GF180MCUB_DEFS += -DSTAGING_PATH=${STAGING_PATH}
GF180MCUC_DEFS += -DSTAGING_PATH=${STAGING_PATH}

# Get the timestamp of the open_pdks commit to use for stamping layouts.
OPEN_PDKS_TIMESTAMP = $(shell git log -1 --format="%ad" --date=raw | cut -d' ' -f1)
TIMESTAMP_OPT = -timestamp ${OPEN_PDKS_TIMESTAMP}

# Record commit numbers for the nodeinfo.json file
OPEN_PDKS_COMMIT = $(shell git rev-parse HEAD)
ifeq (${OPEN_PDKS_COMMIT},)
    COMMIT_DEFS = -DOPEN_PDKS_COMMIT=${REVISION}
else
    COMMIT_DEFS = -DOPEN_PDKS_COMMIT=${OPEN_PDKS_COMMIT}
endif

ifeq (${GF180MCU_SC_9T5V0_PATH},)
    COMMIT_DEFS += -DFD_SC_MCU9T5V0_COMMIT="unknown"
else
    COMMIT_DEFS += -DFD_SC_MCU9T5V0_COMMIT=$(shell cd ${GF180MCU_SC_9T5V0_PATH} ; git rev-parse HEAD)
endif
ifeq (${GF180MCU_SC_7T5V0_PATH},)
    COMMIT_DEFS += -DFD_SC_MCU7T5V0_COMMIT="unknown"
else
    COMMIT_DEFS += -DFD_SC_MCU7T5V0_COMMIT=$(shell cd ${GF180MCU_SC_7T5V0_PATH} ; git rev-parse HEAD)
endif
ifeq (${GF180MCU_PR_PATH},)
    COMMIT_DEFS += -DFD_PR_COMMIT="unknown"
else
    COMMIT_DEFS += -DFD_PR_COMMIT=$(shell cd ${GF180MCU_PR_PATH} ; git rev-parse HEAD)
endif
ifeq (${GF180MCU_IO_PATH},)
    COMMIT_DEFS += -DFD_IO_COMMIT="unknown"
else
    COMMIT_DEFS += -DFD_IO_COMMIT=$(shell cd ${GF180MCU_IO_PATH} ; git rev-parse HEAD)
endif
ifeq (${GF180MCU_SRAM_PATH},)
    COMMIT_DEFS += -DFD_IP_SRAM_COMMIT="unknown"
else
    COMMIT_DEFS += -DFD_IP_SRAM_COMMIT=$(shell cd ${GF180MCU_SRAM_PATH} ; git rev-parse HEAD)
endif

COMMIT_DEFS += -DMAGIC_COMMIT=$(shell magic -dnull -noconsole --commit)
COMMIT_DEFS += -DMAGIC_VERSION=$(shell magic -dnull -noconsole --version)
COMMIT_DEFS += -DOPEN_PDKS_VERSION=$(shell cat ${SCRIPTSDIR}/VERSION)

ifeq (${EF_STYLE}, 1)
    EF_FORMAT = -ef_format
    GF180MCUA_DEFS += -DEF_FORMAT
    GF180MCUB_DEFS += -DEF_FORMAT
    GF180MCUC_DEFS += -DEF_FORMAT
else
    EF_FORMAT = -std_format
endif

MAGICTOP = libs.tech/magic
NETGENTOP = libs.tech/netgen
QFLOWTOP = libs.tech/qflow
IRSIMTOP = libs.tech/irsim
KLAYOUTTOP = libs.tech/klayout
OPENLANETOP = libs.tech/openlane
XSCHEMTOP = libs.tech/xschem
XCIRCUITTOP = libs.tech/xcircuit
NGSPICETOP = libs.tech/ngspice

ifeq (${EF_STYLE}, 1)
    MAGICPATH = ${MAGICTOP}/${REVISION}
    MAGIC_CURRENT = ${MAGICTOP}/current
else
    MAGICPATH = ${MAGICTOP}
    MAGIC_CURRENT = ${MAGICTOP}
endif

NETGENPATH = ${NETGENTOP}
IRSIMPATH = ${IRSIMTOP}
QFLOWPATH = ${QFLOWTOP}
KLAYOUTPATH = ${KLAYOUTTOP}
OPENLANEPATH = ${OPENLANETOP}
XSCHEMPATH = ${XSCHEMTOP}
XCIRCUITPATH = ${XCIRCUITTOP}
NGSPICEPATH = ${NGSPICETOP}

MAGICTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${MAGICTOP}
NETGENTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${NETGENTOP}
IRSIMTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${IRSIMTOP}
QFLOWTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${QFLOWTOP}
KLAYOUTTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${KLAYOUTTOP}
OPENLANETOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${OPENLANETOP}
XSCHEMTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${XSCHEMTOP}
XCIRCUITTOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${XCIRCUITTOP}
NGSPICETOP_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${NGSPICETOP}

MAGIC_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${MAGICPATH}
NETGEN_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${NETGENPATH}
IRSIM_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${IRSIMPATH}
QFLOW_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${QFLOWPATH}
KLAYOUT_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${KLAYOUTPATH}
OPENLANE_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${OPENLANEPATH}
XSCHEM_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${XSCHEMPATH}
XCIRCUIT_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${XCIRCUITPATH}
NGSPICE_STAGING_A = ${STAGING_PATH}/${GF180MCUA}/${NGSPICEPATH}

MAGICTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${MAGICTOP}
NETGENTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${NETGENTOP}
IRSIMTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${IRSIMTOP}
QFLOWTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${QFLOWTOP}
KLAYOUTTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${KLAYOUTTOP}
OPENLANETOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${OPENLANETOP}
XSCHEMTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${XSCHEMTOP}
XCIRCUITTOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${XCIRCUITTOP}
NGSPICETOP_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${NGSPICETOP}

MAGIC_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${MAGICPATH}
NETGEN_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${NETGENPATH}
IRSIM_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${IRSIMPATH}
QFLOW_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${QFLOWPATH}
KLAYOUT_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${KLAYOUTPATH}
OPENLANE_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${OPENLANEPATH}
XSCHEM_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${XSCHEMPATH}
XCIRCUIT_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${XCIRCUITPATH}
NGSPICE_STAGING_B = ${STAGING_PATH}/${GF180MCUB}/${NGSPICEPATH}

MAGICTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${MAGICTOP}
NETGENTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${NETGENTOP}
IRSIMTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${IRSIMTOP}
QFLOWTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${QFLOWTOP}
KLAYOUTTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${KLAYOUTTOP}
OPENLANETOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${OPENLANETOP}
XSCHEMTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${XSCHEMTOP}
XCIRCUITTOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${XCIRCUITTOP}
NGSPICETOP_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${NGSPICETOP}

MAGIC_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${MAGICPATH}
NETGEN_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${NETGENPATH}
IRSIM_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${IRSIMPATH}
QFLOW_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${QFLOWPATH}
KLAYOUT_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${KLAYOUTPATH}
OPENLANE_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${OPENLANEPATH}
XSCHEM_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${XSCHEMPATH}
XCIRCUIT_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${XCIRCUITPATH}
NGSPICE_STAGING_C = ${STAGING_PATH}/${GF180MCUC}/${NGSPICEPATH}

GF180MCUA_DEFS += -DMAGIC_CURRENT=${MAGIC_CURRENT}
GF180MCUB_DEFS += -DMAGIC_CURRENT=${MAGIC_CURRENT}
GF180MCUC_DEFS += -DMAGIC_CURRENT=${MAGIC_CURRENT}

# These definitions are used by the build recipes
A_STACK = 3lm
B_STACK = 4lm
C_STACK = 5lm

# These definitions are used by the build recipes for the tech LEF
A_FULLSTACK = 3LM_1TM_30K
B_FULLSTACK = 4LM_1TM_11K
C_FULLSTACK = 5LM_1TM_9K

# Openlane has a number of files that are common to all digital
# standard cell libraries, so these are collected in one definition
# here:
OPENLANE_COMMON = config.tcl tracks.info no_synth.cells drc_exclude.cells

# Where cpp syntax is followed, this is equivalent to cpp, but it does not
# mangle non-C source files under the belief that they are actually C code.
CPP   = ${SCRIPTSDIR}/common/preproc.py

# The following script in the ${SCRIPTSDIR}/common directory does most of the work of
# copying or linking the foundry vendor files to the target directory.
STAGE = set -f ; ${SCRIPTSDIR}/common/foundry_install.py ${EF_FORMAT} ${TIMESTAMP_OPT}
ifneq ($(DESTDIR), )
INSTALL = ${SCRIPTSDIR}/common/staging_install.py -writeto $(DESTDIR) ${EF_FORMAT}
else
INSTALL = ${SCRIPTSDIR}/common/staging_install.py ${EF_FORMAT}
endif

# List the EDA tools to install local setup files for
TOOLS =

# KLAYOUT_DISABLED = 0 | 1
KLAYOUT_DISABLED = @KLAYOUT_DISABLED@
ifneq (${KLAYOUT_DISABLED}, 1)
        TOOLS += klayout
endif

# OPENLANE_DISABLED = 0 | 1
OPENLANE_DISABLED = @OPENLANE_DISABLED@
ifneq (${OPENLANE_DISABLED}, 1)
        TOOLS += openlane
endif

# QFLOW_DISABLED = 0 | 1
QFLOW_DISABLED = @QFLOW_DISABLED@
ifneq (${QFLOW_DISABLED}, 1)
        TOOLS += qflow
endif

# MAGIC_DISABLED = 0 | 1
MAGIC_DISABLED = @MAGIC_DISABLED@
ifneq (${MAGIC_DISABLED}, 1)
        TOOLS += magic
endif

# NETGEN_DISABLED = 0 | 1
NETGEN_DISABLED = @NETGEN_DISABLED@
ifneq (${NETGEN_DISABLED}, 1)
        TOOLS += netgen
endif

# IRSIM_DISABLED = 0 | 1
IRSIM_DISABLED = @IRSIM_DISABLED@
ifneq (${IRSIM_DISABLED}, 1)
        TOOLS += irsim
endif

# XSCHEM_DISABLED = 0 | 1
XSCHEM_DISABLED = @XSCHEM_DISABLED@
ifneq (${XSCHEM_DISABLED}, 1)
        TOOLS += xschem
endif

# XCIRCUIT_DISABLED = 0 | 1
XCIRCUIT_DISABLED = @XCIRCUIT_DISABLED@
ifneq (${XCIRCUIT_DISABLED}, 1)
        TOOLS += xcircuit
endif

reference: ${TECH}.json
	# Rewrite the ${TECH}.json file to change the commit values in
	# "reference" to reflect the state of the system when  "make
	# reference" was run.  This is then committed to the open_pdks
	# repository to create a known reference configuration of all
	# tools.
	../common/save_commit_refs.py ${COMMIT_DEFS} ${TECH}.json

all: $(foreach var, ${VARIANTS}, all-$(var))

# Handle prerequisites
prerequisites: pr-repo io-repo sc-7t-repo sc-9t-repo sram-repo

pr-repo:
	if test "x${GF180MCU_PR_PATH}" != "x" ; then \
		if test -d "${GF180MCU_PR_PATH}" ; then \
			echo "Using existing installation of primitive library from ${GF180MCU_PR_PATH}" ; \
		else \
			echo "Downloading primitive library from ${GF180MCU_PR_PATH}" ; \
			../scripts/download.sh ${PDK_LIB_PR} ${GF180MCU_PR_PATH} ; \
		fi ; \
	fi

io-repo:
	if test "x${GF180MCU_IO_PATH}" != "x" ; then \
		if test -d "${GF180MCU_IO_PATH}" ; then \
			echo "Using existing installation of I/O library from ${GF180MCU_IO_PATH}" ; \
		else \
			echo "Downloading I/O library from ${GF180MCU_IO_PATH}" ; \
			../scripts/download.sh ${PDK_LIB_IO} ${GF180MCU_IO_PATH} ; \
		fi ; \
	fi

sc-7t-repo:
	if test "x${GF180MCU_SC_7T5V0_PATH}" != "x" ; then \
		if test -d "${GF180MCU_SC_7T5V0_PATH}" ; then \
			echo "Using existing installation of 7-track standard cell library from ${GF180MCU_SC_7T5V0_PATH}" ; \
		else \
			echo "Downloading 7-track standard cell library from ${GF180MCU_SC_7T5V0_PATH}" ; \
			../scripts/download.sh ${PDK_LIB_SC_7T5V0} ${GF180MCU_SC_7T5V0_PATH} ; \
		fi ; \
	fi

sc-9t-repo:
	if test "x${GF180MCU_SC_9T5V0_PATH}" != "x" ; then \
		if test -d "${GF180MCU_SC_9T5V0_PATH}" ; then \
			echo "Using existing installation of 9-track standard cell library from ${GF180MCU_SC_9T5V0_PATH}" ; \
		else \
			echo "Downloading 9-track standard cell library from ${GF180MCU_SC_9T5V0_PATH}" ; \
			../scripts/download.sh ${PDK_LIB_SC_9T5V0} ${GF180MCU_SC_9T5V0_PATH} ; \
		fi ; \
	fi

sram-repo:
	if test "x${GF180MCU_SRAM_PATH}" != "x" ; then \
		if test -d "${GF180MCU_SRAM_PATH}" ; then \
			echo "Using existing installation of primitive library from ${GF180MCU_SRAM_PATH}" ; \
		else \
			echo "Downloading primitive library from ${GF180MCU_SRAM_PATH}" ; \
			../scripts/download.sh ${PDK_LIB_SRAM} ${GF180MCU_SRAM_PATH} ; \
		fi ; \
	fi

# Update prerequisites
update: update-pr-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-ream-repo

update-pr-repo:
	if test "x${GF180MCU_PR_PATH}" != "x" ; then \
		echo "Updating GF180MCU primitive library from ${PDK_LIB_PR}" ; \
		custom/scripts/pdk_update.sh ${GF180MCU_PR_PATH} ; \
	fi

update-io-repo:
	if test "x${GF180MCU_IO_PATH}" != "x" ; then \
		echo "Updating GF180MCU I/O library from ${PDK_LIB_IO}" ; \
		custom/scripts/pdk_update.sh ${GF180MCU_IO_PATH} ; \
	fi

update-sc-7t-repo:
	if test "x${GF180MCU_SC_7T5V0_PATH}" != "x" ; then \
		echo "Updating GF180MCU 7-track standard cell library from ${PDK_LIB_SC_7T5V0}" ; \
		custom/scripts/pdk_update.sh ${GF180MCU_SC_7T5V0_PATH} ; \
	fi

update-sc-9t-repo:
	if test "x${GF180MCU_SC_9T5V0_PATH}" != "x" ; then \
		echo "Updating GF180MCU 9-track standard cell library from ${PDK_LIB_SC_9T5V0}" ; \
		custom/scripts/pdk_update.sh ${GF180MCU_SC_9T5V0_PATH} ; \
	fi

update-sram-repo:
	if test "x${GF180MCU_SRAM_PATH}" != "x" ; then \
		echo "Updating GF180MCU SRAM macro library from ${PDK_LIB_SRAM}" ; \
		custom/scripts/pdk_update.sh ${GF180MCU_SRAM_PATH} ; \
	fi

all-%: prerequisites
	echo "Starting gf180mcu$* PDK staging on "`date` > ${GF180MCU$*}_make.log
	${MAKE} general-$*
	${MAKE} tools-$*
	${MAKE} vendor-$*
	echo "Ended gf180mcu$* PDK staging on "`date` >> ${GF180MCU$*}_make.log

general-%: ${TECH}.json
	mkdir -p ${STAGING_PATH}/${GF180MCU$*}/${CONFIG_DIR}
	rm -f ${STAGING_PATH}/${GF180MCU$*}/${CONFIG_DIR}/nodeinfo.json
	${CPP} ${GF180MCU$*_DEFS} ${COMMIT_DEFS} ${TECH}.json \
		${STAGING_PATH}/${GF180MCU$*}/${CONFIG_DIR}/nodeinfo.json

tools-A: $(addsuffix -A, $(TOOLS))

tools-B: $(addsuffix -B, $(TOOLS))

tools-C: $(addsuffix -C, $(TOOLS))

magic-%: magic/${TECH}.tech magic/${TECH}gds.tech magic/${TECH}.magicrc magic/${TECH}.tcl
	mkdir -p ${MAGICTOP_STAGING_$*}
	mkdir -p ${MAGIC_STAGING_$*}
	rm -f ${MAGICTOP_STAGING_$*}/current
	rm -f ${MAGIC_STAGING_$*}/${GF180MCU$*}.tech
	rm -f ${MAGIC_STAGING_$*}/${GF180MCU$*}-GDS.tech
	rm -f ${MAGIC_STAGING_$*}/${GF180MCU$*}.tcl
	rm -f ${MAGIC_STAGING_$*}/${GF180MCU$*}-BindKeys
	rm -f ${MAGIC_STAGING_$*}/magicrc
	if test "${EF_STYLE}" == "1" ; then \
            (cd ${MAGICTOP_STAGING_$*} ; ln -s ${REV_DIR} current) ; \
	fi

	${CPP} ${GF180MCU$*_DEFS} magic/${TECH}.tech \
		${MAGIC_STAGING_$*}/${GF180MCU$*}.tech
	${CPP} ${GF180MCU$*_DEFS} magic/${TECH}gds.tech \
		${MAGIC_STAGING_$*}/${GF180MCU$*}-GDS.tech
	${CPP} ${GF180MCU$*_DEFS} magic/${TECH}.magicrc \
		${MAGIC_STAGING_$*}/${GF180MCU$*}.magicrc
	${CPP} ${GF180MCU$*_DEFS} ${SCRIPTSDIR}/common/pdk.bindkeys \
		${MAGIC_STAGING_$*}/${GF180MCU$*}-BindKeys
	${CPP} ${GF180MCU$*_DEFS} magic/${TECH}.tcl \
		${MAGIC_STAGING_$*}/${GF180MCU$*}.tcl
	${CPP} ${GF180MCU$*_DEFS} ${SCRIPTSDIR}/common/pdk.tcl >> \
		${MAGIC_STAGING_$*}/${GF180MCU$*}.tcl

netgen-%: netgen/${TECH}_setup.tcl
	mkdir -p ${NETGENTOP_STAGING_$*}
	mkdir -p ${NETGEN_STAGING_$*}
	rm -f ${NETGEN_STAGING_$*}/${GF180MCU$*}_setup.tcl
	rm -f ${NETGEN_STAGING_$*}/setup.tcl
	${CPP} ${GF180MCU$*_DEFS} netgen/${TECH}_setup.tcl \
		${NETGEN_STAGING_$*}/${GF180MCU$*}_setup.tcl
	(cd ${NETGEN_STAGING_$*} ; ln -s ${GF180MCU$*}_setup.tcl setup.tcl)

qflow-%: qflow/${TECH}.sh qflow/${TECH}.par
	mkdir -p ${QFLOWTOP_STAGING_$*}
	mkdir -p ${QFLOW_STAGING_$*}
	rm -f ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0.sh
	rm -f ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0.par
	rm -f ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0.sh
	rm -f ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0.par
	${CPP} ${GF180MCU$*_DEFS} -DLIBRARY=gf180mcu_fd_sc_mcu7t5v0 \
		qflow/${TECH}.sh ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0.sh
	${CPP} ${GF180MCU$*_DEFS} -DLIBRARY=gf180mcu_fd_sc_mcu9t5v0 \
		qflow/${TECH}.sh ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0.sh
	${CPP} ${GF180MCU$*_DEFS} qflow/${TECH}.par \
		 ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0.par
	${CPP} ${GF180MCU$*_DEFS} qflow/${TECH}.par \
		 ${QFLOW_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0.par

irsim-%:
	mkdir -p ${IRSIMTOP_STAGING_$*}
	mkdir -p ${IRSIM_STAGING_$*}

klayout-%: ${GF180MCU_PR_PATH}
	mkdir -p ${KLAYOUTTOP_STAGING_$*}
	mkdir -p ${KLAYOUT_STAGING_$*}
	rm -rf ${KLAYOUT_STAGING_$*}/drc
	rm -rf ${KLAYOUT_STAGING_$*}/lvs
	rm -rf ${KLAYOUT_STAGING_$*}/tech
	rm -rf ${KLAYOUT_STAGING_$*}/pymacros
	mkdir ${KLAYOUT_STAGING_$*}/drc
	mkdir ${KLAYOUT_STAGING_$*}/lvs
	mkdir ${KLAYOUT_STAGING_$*}/tech
	mkdir ${KLAYOUT_STAGING_$*}/pymacros

	cp -rp ${GF180MCU_PR_PATH}/rules/klayout/drc/* \
		${KLAYOUT_STAGING_$*}/drc
	cp -rp ${GF180MCU_PR_PATH}/rules/klayout/lvs/* \
		${KLAYOUT_STAGING_$*}/lvs
	cp -rp ${GF180MCU_PR_PATH}/cells/klayout/pymacros/cells/* \
		${KLAYOUT_STAGING_$*}/pymacros
	cp -rp ${GF180MCU_PR_PATH}/tech/klayout/* \
		${KLAYOUT_STAGING_$*}/tech
	cp -rp ${GF180MCU_PR_PATH}/cells/klayout/pymacros/*.lym \
		${KLAYOUT_STAGING_$*}/tech

xcircuit-%:
	rm -rf ${XCIRCUIT_STAGING_$*}
	mkdir -p ${XCIRCUITTOP_STAGING_$*}
	mkdir -p ${XCIRCUIT_STAGING_$*}

xschem-%: ${GF180MCU_PR_PATH}
	rm -rf ${XSCHEM_STAGING_$*}
	mkdir -p ${XSCHEMTOP_STAGING_$*}
	mkdir -p ${XSCHEM_STAGING_$*}
	cp -rp ${GF180MCU_PR_PATH}/cells/xschem/symbols ${XSCHEM_STAGING_$*}
	cp -rp ${GF180MCU_PR_PATH}/cells/xschem/tests ${XSCHEM_STAGING_$*}
	cp -rp ${GF180MCU_PR_PATH}/cells/xschem/xschemrc ${XSCHEM_STAGING_$*}

openlane-%: openlane/config.tcl openlane/gf180mcu_fd_sc_mcu7t5v0/config.tcl openlane/gf180mcu_fd_sc_mcu9t5v0/config.tcl
	mkdir -p ${OPENLANETOP_STAGING_$*}
	mkdir -p ${OPENLANE_STAGING_$*}
	rm -rf ${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0
	rm -rf ${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0
	mkdir ${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0
	mkdir ${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0
	for file in ${OPENLANE_COMMON} ; do \
		rm -f ${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0/$$file ; \
	done
	for file in ${OPENLANE_COMMON} ; do \
		rm -f ${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0/$$file ; \
	done
	${CPP} ${GF180MCU$*_DEFS} openlane/config.tcl ${OPENLANE_STAGING_$*}/config.tcl

	for file in ${OPENLANE_COMMON} ; do \
		${CPP} -quiet ${GF180MCU$*_DEFS} openlane/gf180mcu_fd_sc_mcu7t5v0/$$file \
			${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu7t5v0/$$file ; \
	done
	for file in ${OPENLANE_COMMON} ; do \
		${CPP} -quiet ${GF180MCU$*_DEFS} openlane/gf180mcu_fd_sc_mcu9t5v0/$$file \
			${OPENLANE_STAGING_$*}/gf180mcu_fd_sc_mcu9t5v0/$$file ; \
	done

	rm -f ${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.min.magic
	rm -f ${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.nom.magic
	rm -f ${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.max.magic

	if test -f openlane/rules.openrcx.gf180mcu$*.min.magic ; then \
		${CPP} ${GF180MCU$*_DEFS} openlane/rules.openrcx.gf180mcu$*.min.magic \
		${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.min.magic ;\
	fi
	if test -f openlane/rules.openrcx.gf180mcu$*.nom.magic ; then \
		${CPP} ${GF180MCU$*_DEFS} openlane/rules.openrcx.gf180mcu$*.nom.magic \
		${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.nom.magic ;\
	fi
	if test -f openlane/rules.openrcx.gf180mcu$*.max.magic ; then \
		${CPP} ${GF180MCU$*_DEFS} openlane/rules.openrcx.gf180mcu$*.max.magic \
		${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.max.magic ;\
	fi

vendor-A: primitive-build-A digital-7t5v0-build-A digital-9t5v0-build-A io-build-A sram-build-A

vendor-B: primitive-build-B digital-7t5v0-build-B digital-9t5v0-build-B io-build-B sram-build-B

vendor-C: primitive-build-C digital-7t5v0-build-C digital-9t5v0-build-C io-build-C sram-build-C

primitive-build-%:
	if test -d ${GF180MCU_PR_PATH} ; then \
		echo "Building primitives library and simulation models" ;\
		make primitive-$* ;\
	fi

io-build-%:
	if test -d ${GF180MCU_IO_PATH} ; then \
		echo "Building padframe I/O libraries" ;\
		make io-$* ;\
	fi

digital-9t5v0-build-%:
	if test -d ${GF180MCU_SC_9T5V0_PATH} ; then \
		echo "Building 5V 9-track digital standard cell libraries" ;\
		make digital-9t5v0-$* ;\
	fi

digital-7t5v0-build-%:
	if test -d ${GF180MCU_SC_7T5V0_PATH} ; then \
		echo "Building 5V 7-track digital standard cell libraries" ;\
		make digital-7t5v0-$* ;\
	fi

sram-build-%:
	if test -d ${GF180MCU_SRAM_PATH} ; then \
		echo "Building SRAM libraries" ;\
		make sram-$* ;\
	fi

primitive-%:
        # Install tech LEF and primitive devices from vendor files
	${STAGE} -source ${GF180MCU_PR_PATH} \
		-target ${STAGING_PATH}/${GF180MCU$*} \
		-ngspice models/ngspice/*.ngspice \
		-xyce models/xyce/*.xyce \
		2>&1 | tee -a ${GF180MCU$*}_make.log

digital-9t5v0-%:
        # Install 5V 9-track digital standard cells from vendor files
	${STAGE} -source ${GF180MCU_SC_9T5V0_PATH} \
		-target ${STAGING_PATH}/${GF180MCU$*} \
		-techlef tech/gf180mcu_${$*_FULLSTACK}_9t_tech.lef \
			rename=gf180mcu_fd_sc_mcu9t5v0.tlef \
		-cdl cells/*/*.cdl compile-only noconvert \
		-liberty cells/*/*_ff_125C_1v98.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_1v98 \
		-liberty cells/*/*_ff_n40C_1v98.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_1v98 \
		-liberty cells/*/*_ff_125C_3p6v.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_3p6v \
		-liberty cells/*/*_ff_n40C_3p6v.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_3p6v \
		-liberty cells/*/*_ff_125C_5v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_5v50 \
		-liberty cells/*/*_ff_n40C_5v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_5v50 \
		-liberty cells/*/*_ss_125C_1v62.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ss_125C_1v62 \
		-liberty cells/*/*_ss_n40C_1v62.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ss_n40C_1v62 \
		-liberty cells/*/*_ss_125C_3v00.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ss_125C_3v00 \
		-liberty cells/*/*_ss_n40C_3v00.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ss_n40C_3v00 \
		-liberty cells/*/*_ss_125C_4v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ss_125C_4v50 \
		-liberty cells/*/*_ss_n40C_4v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__ss_n40C_4v50 \
		-liberty cells/*/*_tt_025C_1v80.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__tt_025C_1v80 \
		-liberty cells/*/*_tt_025C_3v30.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__tt_025C_3v30 \
		-liberty cells/*/*_tt_025C_5v00.lib compile-only \
			rename=gf180mcu_fd_sc_mcu9t5v0__tt_025C_5v00 \
		-gds cells/*/*.gds compile-only \
		-lef cells/*/*.lef compile-only \
		-verilog cells/*/*.v compile-only \
		-library digital gf180mcu_fd_sc_mcu9t5v0 2>&1 | \
		tee -a ${GF180MCU$*}_make.log

digital-7t5v0-%:
        # Install 5V 7-track digital standard cells from vendor files
	${STAGE} -source ${GF180MCU_SC_7T5V0_PATH} \
		-target ${STAGING_PATH}/${GF180MCU$*} \
		-techlef tech/gf180mcu_${$*_FULLSTACK}_7t_tech.lef \
			rename=gf180mcu_fd_sc_mcu7t5v0.tlef \
		-cdl cells/*/*.cdl compile-only noconvert \
		-liberty cells/*/*_ff_125C_1v98.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_1v98 \
		-liberty cells/*/*_ff_n40C_1v98.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_1v98 \
		-liberty cells/*/*_ff_125C_3p6v.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_3p6v \
		-liberty cells/*/*_ff_n40C_3p6v.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_3p6v \
		-liberty cells/*/*_ff_125C_5v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_5v50 \
		-liberty cells/*/*_ff_n40C_5v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_5v50 \
		-liberty cells/*/*_ss_125C_1v62.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ss_125C_1v62 \
		-liberty cells/*/*_ss_n40C_1v62.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ss_n40C_1v62 \
		-liberty cells/*/*_ss_125C_3v00.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ss_125C_3v00 \
		-liberty cells/*/*_ss_n40C_3v00.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ss_n40C_3v00 \
		-liberty cells/*/*_ss_125C_4v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ss_125C_4v50 \
		-liberty cells/*/*_ss_n40C_4v50.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__ss_n40C_4v50 \
		-liberty cells/*/*_tt_025C_1v80.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__tt_025C_1v80 \
		-liberty cells/*/*_tt_025C_3v30.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__tt_025C_3v30 \
		-liberty cells/*/*_tt_025C_5v00.lib compile-only \
			rename=gf180mcu_fd_sc_mcu7t5v0__tt_025C_5v00 \
		-gds cells/*/*.gds compile-only \
		-lef cells/*/*.lef compile-only \
		-verilog cells/*/*.v compile-only \
		-library digital gf180mcu_fd_sc_mcu7t5v0 2>&1 | \
		tee -a ${GF180MCU$*}_make.log

io-%:
        # Install I/O cells from vendor files
	# Note:  Do not use GF LEF views.  Annotate only.  LEF is being renamed
	# back to the original, although eventually all files will be changed
	# to canonical names.

	${STAGE} -source ${GF180MCU_IO_PATH} \
		-target ${STAGING_PATH}/${GF180MCU$*} \
		-cdl cells/*/*.cdl compile-only noconvert \
		-liberty cells/*/*_ff_125C_2v75.lib compile-only \
			rename=gf180mcu_fd_io__ff_125C_2v75 \
		-liberty cells/*/*_ff_n40C_2v75.lib compile-only \
			rename=gf180mcu_fd_io__ff_n40C_2v75 \
		-liberty cells/*/*_ff_125C_3v63.lib compile-only \
			rename=gf180mcu_fd_io__ff_125C_3v63 \
		-liberty cells/*/*_ff_n40C_3v63.lib compile-only \
			rename=gf180mcu_fd_io__ff_n40C_3v63 \
		-liberty cells/*/*_ff_125C_5v50.lib compile-only \
			rename=gf180mcu_fd_io__ff_125C_5v50 \
		-liberty cells/*/*_ff_n40C_5v50.lib compile-only \
			rename=gf180mcu_fd_io__ff_n40C_5v50 \
		-liberty cells/*/*_ss_125C_2v50.lib compile-only \
			rename=gf180mcu_fd_io__ss_125C_2v50 \
		-liberty cells/*/*_ss_125C_2v97.lib compile-only \
			rename=gf180mcu_fd_io__ss_125C_2v97 \
		-liberty cells/*/*_ss_125C_4v50.lib compile-only \
			rename=gf180mcu_fd_io__ss_125C_4v50 \
		-liberty cells/*/*_tt_025C_2v50.lib compile-only \
			rename=gf180mcu_fd_io__tt_025C_2v50 \
		-liberty cells/*/*_tt_025C_3v30.lib compile-only \
			rename=gf180mcu_fd_io__tt_025C_3v30 \
		-liberty cells/*/*_tt_025C_5v00.lib compile-only \
			rename=gf180mcu_fd_io__tt_025C_5v00 \
		-gds cells/*/*_${$*_STACK}.gds compile-only \
			options=custom/scripts/gds_import_io.tcl \
		-lef cells/*/*_${$*_STACK}.lef \
			annotate untrusted lefopts=-hide compile-only \
			filter=custom/scripts/fix_io_lef.py \
		-verilog cells/*/*.v compile-only \
		-library general gf180mcu_fd_io 2>&1 | tee -a ${GF180MCU$*}_make.log

sram-%:
	# Install SRAM macros from vendor files
	${STAGE} -source ${GF180MCU_SRAM_PATH} \
		-target ${STAGING_PATH}/${GF180MCU$*} \
		-cdl cells/*/*.cdl noconvert \
		-liberty cells/*/*.lib \
		-gds cells/*/*.gds \
		-lef cells/*/*.lef \
		-verilog cells/*/*.v \
		-library general gf180mcu_fd_ip_sram 2>&1 | tee -a ${GF180MCU$*}_make.log

install: $(foreach var, ${VARIANTS}, install-$(var))

install-A:
	echo "Starting GF180MCU PDK migration on "`date` > ${GF180MCUA}_install.log
	${INSTALL} \
		-source ${STAGING_PATH}/${GF180MCUA} \
		-finalpath ${SHARED_PDKS_PATH}/${GF180MCUA} \
		-variable PDKPATH \
		-link_from ${DIST_LINK_TARGETS_A} 2>&1 | tee -a ${GF180MCUA}_install.log
	echo "Ended GF180MCU PDK migration on "`date` >> ${GF180MCUA}_install.log

install-B: install-A
	echo "Starting GF180MCU PDK migration on "`date` > ${GF180MCUB}_install.log
	${INSTALL} \
		-source ${STAGING_PATH}/${GF180MCUB} \
		-finalpath ${SHARED_PDKS_PATH}/${GF180MCUB} \
		-variable PDKPATH \
		-link_from ${DIST_LINK_TARGETS_B} 2>&1 | tee -a ${GF180MCUB}_install.log
	echo "Ended GF180MCU PDK migration on "`date` >> ${GF180MCUB}_install.log

install-C: install-A
	echo "Starting GF180MCU PDK migration on "`date` > ${GF180MCUC}_install.log
	${INSTALL} \
		-source ${STAGING_PATH}/${GF180MCUC} \
		-finalpath ${SHARED_PDKS_PATH}/${GF180MCUC} \
		-variable PDKPATH \
		-link_from ${DIST_LINK_TARGETS_C} 2>&1 | tee -a ${GF180MCUC}_install.log
	echo "Ended GF180MCU PDK migration on "`date` >> ${GF180MCUC}_install.log

uninstall: $(foreach var, ${VARIANTS}, uninstall-$(var))

uninstall-A:
	echo "Uninstalling GF180MCU PDK from ${SHARED_PDKS_PATH}"
	if test "x${SHARED_PDKS_PATH}" != "x" ; then \
		${RM} -rf ${SHARED_PDKS_PATH}/${GF180MCUA} ; \
	fi
	echo "Finished GF180MCU PDK uninstall"

uninstall-B:
	echo "Uninstalling GF180MCU PDK from ${SHARED_PDKS_PATH}"
	if test "x${SHARED_PDKS_PATH}" != "x" ; then \
		${RM} -rf ${SHARED_PDKS_PATH}/${GF180MCUB} ; \
	fi
	echo "Finished GF180MCU PDK uninstall"

uninstall-C:
	echo "Uninstalling GF180MCU PDK from ${SHARED_PDKS_PATH}"
	if test "x${SHARED_PDKS_PATH}" != "x" ; then \
		${RM} -rf ${SHARED_PDKS_PATH}/${GF180MCUC} ; \
	fi
	echo "Finished GF180MCU PDK uninstall"

clean: $(foreach var, ${VARIANTS}, clean-$(var))

clean-A:
	${STAGE} -target ${STAGING_PATH}/${GF180MCUA} -clean

clean-B:
	${STAGE} -target ${STAGING_PATH}/${GF180MCUB} -clean

clean-C:
	${STAGE} -target ${STAGING_PATH}/${GF180MCUC} -clean

veryclean: $(foreach var, ${VARIANTS}, veryclean-$(var))

veryclean-A: clean-A
	${RM} ${GF180MCUA}_make.log
	${RM} ${GF180MCUA}_install.log

veryclean-B: clean-B
	${RM} ${GF180MCUB}_make.log
	${RM} ${GF180MCUB}_install.log

veryclean-C: clean-C
	${RM} ${GF180MCUC}_make.log
	${RM} ${GF180MCUC}_install.log


