| #--------------------------------------------------- |
| # 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 |
| |
| prefix = @prefix@ |
| datarootdir = @datarootdir@ |
| datadir = @datadir@ |
| |
| # NOTE: All scripts used by the project and design flow management |
| # system are in the "runtime" directory, except for cdl2spi.py, which |
| # is the one file used by scripts in both the common/ and runtime/ |
| # directories. |
| |
| common_install: |
| @if test -w $(datadir) ; then \ |
| mkdir -p $(datadir)/pdk/scripts/ ;\ |
| mkdir -p $(datadir)/pdk/runtime ;\ |
| for file in runtime/*.py ; do \ |
| ${CPP} -DPREFIX=$(datadir) $$file \ |
| $(datadir)/pdk/$$file ;\ |
| done ;\ |
| for file in runtime/*.txt ; do \ |
| ${CPP} -DPREFIX=$(datadir) $$file \ |
| $(datadir)/pdk/$$file ;\ |
| done ;\ |
| mv $(datadir)/pdk/runtime/* $(datadir)/pdk/scripts ;\ |
| ${CPP} -DPREFIX=$(datadir) common/cdl2spi.py $(datadir)/pdk/scripts/cdl2spi.py ;\ |
| rm -r -f $(datadir)/pdk/runtime ;\ |
| 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) |
| |
| #--------------------------------------------------- |