| # Copyright 2020 Efabless Corporation | 
 | # | 
 | # 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. | 
 |  | 
 | # Adopted from OpenLANE's Makefile. | 
 |  | 
 | OPEN_PDKS_ROOT ?= $(shell pwd)/.. | 
 | THREADS ?= $(shell nproc) | 
 | STD_CELL_LIBRARY ?= sky130_fd_sc_hd | 
 | SKYWATER_COMMIT ?= d8e2cf1ba006ed01468aa60e7f4e85a1ece74ca4 | 
 |  | 
 | .DEFAULT_GOAL := all | 
 |  | 
 | .PHONY: all | 
 | all: pdk | 
 |  | 
 | .PHONY: pdk | 
 | pdk: skywater-pdk skywater-library build-pdk | 
 |  | 
 | $(PDK_ROOT)/skywater-pdk: | 
 | 	git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk | 
 |  | 
 | .PHONY: skywater-pdk | 
 | skywater-pdk: $(PDK_ROOT)/skywater-pdk | 
 | 	cd $(PDK_ROOT)/skywater-pdk && \ | 
 | 		git checkout -qf $(SKYWATER_COMMIT) | 
 |  | 
 | .PHONY: skywater-library | 
 | skywater-library: $(PDK_ROOT)/skywater-pdk | 
 | 	cd $(PDK_ROOT)/skywater-pdk && \ | 
 | 		git submodule update --init libraries/$(STD_CELL_LIBRARY)/latest && \ | 
 | 		$(MAKE) -j$(THREADS) $(STD_CELL_LIBRARY) | 
 |  | 
 | .PHONY: all-skywater-libraries | 
 | all-skywater-libraries: skywater-pdk | 
 | 	cd $(PDK_ROOT)/skywater-pdk && \ | 
 | 		git submodule update --init libraries/sky130_fd_sc_hd/latest && \ | 
 | 		git submodule update --init libraries/sky130_fd_sc_hs/latest && \ | 
 | 		git submodule update --init libraries/sky130_fd_sc_hdll/latest && \ | 
 | 		git submodule update --init libraries/sky130_fd_sc_ms/latest && \ | 
 | 		git submodule update --init libraries/sky130_fd_sc_ls/latest && \ | 
 | 		git submodule update --init libraries/sky130_fd_sc_hvl/latest && \ | 
 | 		$(MAKE) -j$(THREADS) timing | 
 |  | 
 | .PHONY: build-pdk | 
 | build-pdk: $(PDK_ROOT)/skywater-pdk | 
 | 	[[ -d $(PDK_ROOT)/sky130A ]] && \ | 
 | 		(echo "Warning: A sky130A build already exists under $(PDK_ROOT). It will be deleted first!" && \ | 
 | 		sleep 5 && \ | 
 | 		rm -rf $(PDK_ROOT)/sky130A) || \ | 
 | 		true | 
 | 	cd $(OPEN_PDKS_ROOT) && \ | 
 | 		./configure \ | 
 | 			--prefix=$(PDK_ROOT) \ | 
 | 			--datarootdir=$(PDK_ROOT) \ | 
 | 			--enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk \ | 
 | 			&& \ | 
 | 		cd sky130 && \ | 
 | 		$(MAKE) veryclean && \ | 
 | 		$(MAKE) && \ | 
 | 		$(MAKE) install-local |