#---------------------------------------------------
# Makefile for efabless project open_pdks
# Tim Edwards, 11/21/2016
# Updated 10/19/2018 for use independently of the
# efabless /ef/ tree filesystem setup.
# Updated 5/5/2020 for use with the 2-stage install
#---------------------------------------------------
#
# Typical usage:
#
# make
# 	generates the tech files from source masters.
#
# make install
#
# 	installs the tech files.  If the configuration
#	script has been given the "--with-<PDK>-dist-path="
#	option, then tech files are installed in the path
#	(such as a git repository) that is used for
#	distribution of software across a system.  Otherwise,
#	files are installed in the local path specified by
#	the configuration option "--with-<PDK>-local-path=".
#
# make clean
#
# 	clean up all files generated by 'make'
# 
# make veryclean
#
# 	clean up all files generated by 'make' and remove
#	all log files.
#
# make uninstall
#
#	remove the installed PDKs.
#
#---------------------------------------------------
#
# The following definitions are tied to the contents
# of this repository and should not be changed.

TECHS =

SKY130_SOURCE_PATH = @SKY130_SOURCE_PATH@
ifneq ($(SKY130_SOURCE_PATH),)
    TECHS += sky130
endif

DONE_MESSAGE = "Done."
ifeq ($(TECHS),)
	DONE_MESSAGE = "No techs configured."
endif

TECHS_ALL = $(addprefix tech_,$(TECHS))
TECHS_INSTALL = $(addprefix install-,$(TECHS))
TECHS_UNINSTALL = $(addprefix uninstall-,$(TECHS))
TECHS_CLEAN = $(addprefix clean-,$(TECHS))
TECHS_VERYCLEAN = $(addprefix veryclean-,$(TECHS))

#---------------------------------------------------

all: $(TECHS_ALL)
	@echo $(DONE_MESSAGE)

install: $(TECHS_INSTALL) common_install
	@echo $(DONE_MESSAGE)

uninstall: $(TECHS_UNINSTALL)
	@echo $(DONE_MESSAGE)

clean: $(TECHS_CLEAN)
	@echo $(DONE_MESSAGE)

veryclean: $(TECHS_VERYCLEAN)
	@echo $(DONE_MESSAGE)

distclean: $(TECHS_VERYCLEAN)
	${RM} -rf sources
	@echo $(DONE_MESSAGE)

#---------------------------------------------------

CPP = common/preproc.py

common_install:
	@if test -w @datadir@ ; then \
		mkdir -p @datadir@/pdk/scripts/ ;\
		cp runtime/cace.py @datadir@/pdk/scripts/ ;\
		cp runtime/cace_datasheet_upload.py @datadir@/pdk/scripts/ ;\
		cp runtime/cace_design_upload.py @datadir@/pdk/scripts/ ;\
		cp runtime/cace_gensim.py @datadir@/pdk/scripts/ ;\
		cp runtime/cace_launch.py @datadir@/pdk/scripts/ ;\
		cp runtime/cace_makeplot.py @datadir@/pdk/scripts/ ;\
		cp runtime/cdl2spi.py @datadir@/pdk/scripts/ ;\
		cp runtime/change_gds_cell.py @datadir@/pdk/scripts/ ;\
		cp runtime/change_gds_date.py @datadir@/pdk/scripts/ ;\
		cp runtime/change_gds_string.py @datadir@/pdk/scripts/ ;\
		cp runtime/changepath.py @datadir@/pdk/scripts/ ;\
		cp runtime/characterize_help.txt @datadir@/pdk/scripts/ ;\
		cp runtime/cleanup_unref.py @datadir@/pdk/scripts/ ;\
		cp runtime/config.py @datadir@/pdk/scripts/ ;\
		cp runtime/consoletext.py @datadir@/pdk/scripts/ ;\
		${CPP} -DPREFIX=@datadir@ runtime/create_project.py \
			@datadir@/pdk/scripts/create_project.py ;\
		cp runtime/editparam.py @datadir@/pdk/scripts/ ;\
		cp runtime/failreport.py @datadir@/pdk/scripts/ ;\
		cp runtime/find_gds_prefix.py @datadir@/pdk/scripts/ ;\
		cp runtime/foundry_nodes.py @datadir@/pdk/scripts/ ;\
		cp runtime/helpwindow.py @datadir@/pdk/scripts/ ;\
		cp runtime/listboxchoice.py @datadir@/pdk/scripts/ ;\
		cp runtime/lvs_help.txt @datadir@/pdk/scripts/ ;\
		cp runtime/make_icon_from_soft.py @datadir@/pdk/scripts/ ;\
		cp runtime/makestub.py @datadir@/pdk/scripts/ ;\
		cp runtime/manager_help.txt @datadir@/pdk/scripts/ ;\
		cp runtime/netlist_to_layout.py @datadir@/pdk/scripts/ ;\
		cp runtime/padframe_generator.py @datadir@/pdk/scripts/ ;\
		cp runtime/profile.py @datadir@/pdk/scripts/ ;\
		${CPP} -DPREFIX=@datadir@ runtime/project_manager.py \
			@datadir@/pdk/scripts/project_manager.py ;\
		cp runtime/qflow_help.txt @datadir@/pdk/scripts/ ;\
		cp runtime/rename_project.py @datadir@/pdk/scripts/ ;\
		cp runtime/requirements.txt @datadir@/pdk/scripts/ ;\
		cp runtime/settings.py @datadir@/pdk/scripts/ ;\
		cp runtime/simhints.py @datadir@/pdk/scripts/ ;\
		cp runtime/soc_floorplanner.py @datadir@/pdk/scripts/ ;\
		cp runtime/symbolbuilder.py @datadir@/pdk/scripts/ ;\
		cp runtime/tksimpledialog.py @datadir@/pdk/scripts/ ;\
		cp runtime/tooltip.py @datadir@/pdk/scripts/ ;\
		cp runtime/treeviewchoice.py @datadir@/pdk/scripts/ ;\
		cp runtime/treeviewsplit.py @datadir@/pdk/scripts/ ;\
		echo "Common install:  Done." ;\
	else \
		echo "Common install:  @datadir@ is not writeable (ignoring)." ;\
	fi
	
#---------------------------------------------------

tech_sky130:
	(cd sky130 && ${MAKE} all)

#---------------------------------------------------

install-sky130:	sky130
	(cd sky130 && ${MAKE} install)

uninstall-sky130: sky130
	(cd sky130 && ${MAKE} uninstall)

clean-sky130:
	(cd sky130 && ${MAKE} clean)

veryclean-sky130:
	(cd sky130 && ${MAKE} veryclean)

#---------------------------------------------------
