Skip to content

Commit b19379f

Browse files
committed
make: introduce PYTHON_EXE dependency injection
This is consistent with OPENROAD_EXE, etc. and is useful to manage dependencies, e.g. when providing the python dependency from a venv instead of the system. Signed-off-by: Øyvind Harboe <[email protected]>
1 parent 4c4bee1 commit b19379f

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

flow/Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ versions.txt:
204204
.SECONDEXPANSION:
205205
$(DONT_USE_LIBS): $$(filter %$$(@F) %$$(@F).gz,$(LIB_FILES))
206206
@mkdir -p $(OBJECTS_DIR)/lib
207-
$(UTILS_DIR)/preprocessLib.py -i $^ -o $@
207+
$(PYTHON_EXE) $(UTILS_DIR)/preprocessLib.py -i $^ -o $@
208208

209209
$(OBJECTS_DIR)/lib/merged.lib: $(DONT_USE_LIBS)
210210
$(UTILS_DIR)/mergeLib.pl $(PLATFORM)_merged $(DONT_USE_LIBS) > $@
@@ -271,9 +271,9 @@ do-synth-report:
271271
.PHONY: memory
272272
memory:
273273
if [ -f $(RESULTS_DIR)/mem_hierarchical.json ]; then \
274-
python3 $(SCRIPTS_DIR)/mem_dump.py $(RESULTS_DIR)/mem_hierarchical.json; \
274+
$(PYTHON_EXE) $(SCRIPTS_DIR)/mem_dump.py $(RESULTS_DIR)/mem_hierarchical.json; \
275275
fi
276-
python3 $(SCRIPTS_DIR)/mem_dump.py $(RESULTS_DIR)/mem.json
276+
$(PYTHON_EXE) $(SCRIPTS_DIR)/mem_dump.py $(RESULTS_DIR)/mem.json
277277

278278
# ==============================================================================
279279

@@ -619,12 +619,12 @@ finish: $(LOG_DIR)/6_report.log \
619619

620620
.PHONY: elapsed
621621
elapsed:
622-
-@$(UTILS_DIR)/genElapsedTime.py -d $(BLOCK_LOG_FOLDERS) $(LOG_DIR)
622+
-@$(PYTHON_EXE) $(UTILS_DIR)/genElapsedTime.py -d $(BLOCK_LOG_FOLDERS) $(LOG_DIR)
623623

624624
# Useful when working with macros, see elapsed time for all macros in platform
625625
.PHONY: elapsed-all
626626
elapsed-all:
627-
@$(UTILS_DIR)/genElapsedTime.py -d $(shell find $(WORK_HOME)/logs/$(PLATFORM)/*/*/ -type d)
627+
@$(PYTHON_EXE) $(UTILS_DIR)/genElapsedTime.py -d $(shell find $(WORK_HOME)/logs/$(PLATFORM)/*/*/ -type d)
628628

629629
$(eval $(call do-step,6_1_fill,$(RESULTS_DIR)/5_route.odb $(RESULTS_DIR)/5_route.sdc $(FILL_CONFIG),density_fill))
630630

flow/scripts/variables.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ include $(PLATFORM_DIR)/config.mk
4141

4242
# __SPACE__ is a workaround for whitespace hell in "foreach"; there
4343
# is no way to escape space in defaults.py and get "foreach" to work.
44-
$(foreach line,$(shell $(SCRIPTS_DIR)/defaults.py),$(eval export $(subst __SPACE__, ,$(line))))
44+
$(foreach line,$(shell $(PYTHON_EXE) $(SCRIPTS_DIR)/defaults.py),$(eval export $(subst __SPACE__, ,$(line))))
4545

4646
export LOG_DIR = $(WORK_HOME)/logs/$(PLATFORM)/$(DESIGN_NICKNAME)/$(FLOW_VARIANT)
4747
export OBJECTS_DIR = $(WORK_HOME)/objects/$(PLATFORM)/$(DESIGN_NICKNAME)/$(FLOW_VARIANT)
@@ -70,6 +70,8 @@ export NUM_CORES
7070

7171
#-------------------------------------------------------------------------------
7272
# setup all commands used within this flow
73+
export PYTHON_EXE ?= $(shell command -v python3)
74+
7375
export TIME_BIN ?= env time
7476
TIME_CMD = $(TIME_BIN) -f 'Elapsed time: %E[h:]min:sec. CPU time: user %U sys %S (%P). Peak memory: %MKB.'
7577
TIME_TEST = $(shell $(TIME_CMD) echo foo 2>/dev/null)

flow/util/utils.mk

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ metadata: finish metadata-generate metadata-check
55

66
.PHONY: metadata-generate
77
metadata-generate:
8-
@mkdir -p $(REPORTS_DIR)
9-
@echo $(DESIGN_DIR) > $(REPORTS_DIR)/design-dir.txt
10-
$(UTILS_DIR)/genMetrics.py -d $(DESIGN_NICKNAME) \
8+
mkdir -p $(REPORTS_DIR)
9+
echo $(DESIGN_DIR) > $(REPORTS_DIR)/design-dir.txt
10+
$(PYTHON_EXE) $(UTILS_DIR)/genMetrics.py -d $(DESIGN_NICKNAME) \
1111
-p $(PLATFORM) \
1212
-v $(FLOW_VARIANT) \
1313
--logs $(LOG_DIR) \
@@ -20,7 +20,7 @@ export RULES_JSON ?= $(DESIGN_DIR)/rules-$(FLOW_VARIANT).json
2020

2121
.PHONY: metadata-check
2222
metadata-check:
23-
@$(UTILS_DIR)/checkMetadata.py \
23+
$(PYTHON_EXE) $(UTILS_DIR)/checkMetadata.py \
2424
-m $(REPORTS_DIR)/metadata.json \
2525
-r $(RULES_JSON) 2>&1 \
2626
| tee $(abspath $(REPORTS_DIR)/metadata-check.log)
@@ -40,8 +40,8 @@ update_metadata:
4040

4141
.PHONY: do-update_rules
4242
do-update_rules:
43-
@mkdir -p $(REPORTS_DIR)
44-
$(UTILS_DIR)/genRuleFile.py \
43+
mkdir -p $(REPORTS_DIR)
44+
$(PYTHON_EXE) $(UTILS_DIR)/genRuleFile.py \
4545
--rules $(RULES_JSON) \
4646
--new-rules $(REPORTS_DIR)/rules.json \
4747
--reference $(REPORTS_DIR)/metadata.json \
@@ -59,7 +59,7 @@ update_rules: do-update_rules do-copy_update_rules
5959

6060
.PHONY: do-update_rules_force
6161
do-update_rules_force:
62-
@mkdir -p $(REPORTS_DIR)
62+
mkdir -p $(REPORTS_DIR)
6363
$(UTILS_DIR)/genRuleFile.py \
6464
--rules $(RULES_JSON) \
6565
--new-rules $(REPORTS_DIR)/rules.json \
@@ -74,7 +74,7 @@ update_rules_force: do-update_rules_force
7474

7575
.PHONY: update_metadata_autotuner
7676
update_metadata_autotuner:
77-
@$(UTILS_DIR)/genMetrics.py -d $(DESIGN_NICKNAME) \
77+
$(PYTHON_EXE) $(UTILS_DIR)/genMetrics.py -d $(DESIGN_NICKNAME) \
7878
-p $(PLATFORM) \
7979
-v $(FLOW_VARIANT) \
8080
--logs $(LOG_DIR) \
@@ -93,7 +93,7 @@ $(RESULTS_DIR)/6_net_rc.csv:
9393

9494
.PHONY: correlate_rc
9595
correlate_rc: $(RESULTS_DIR)/6_net_rc.csv
96-
$(UTILS_DIR)/correlateRC.py $(RESULTS_DIR)/6_net_rc.csv
96+
$(PYTHON_EXE) $(UTILS_DIR)/correlateRC.py $(RESULTS_DIR)/6_net_rc.csv
9797

9898
# TODO Make always wants to redo designs with this rule, regardless of which variations are tried.
9999
# $(MAKE) DESIGN_CONFIG=$$config write_net_rc; \
@@ -104,7 +104,7 @@ correlate_platform_rc:
104104
design=$$(basename $$(dirname $$config)); \
105105
make DESIGN_CONFIG=./$$config results/$(PLATFORM)/$$design/base/6_net_rc.csv; \
106106
done
107-
$(UTILS_DIR)/correlateRC.py $$(find results/$(PLATFORM)/*/base -name 6_net_rc.csv)
107+
$(PYTHON_EXE) $(UTILS_DIR)/correlateRC.py $$(find results/$(PLATFORM)/*/base -name 6_net_rc.csv)
108108

109109
# Run test using gnu parallel
110110
#-------------------------------------------------------------------------------

0 commit comments

Comments
 (0)