From 6772b07f18eb94e3cc1775f666d7d512e23c5dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= <fandabohacek@gmail.com> Date: Mon, 28 Aug 2023 17:59:47 +0200 Subject: [PATCH] feat: make more make friendly --- Makefile | 65 ++++++++++++++++++++++++-------------------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/Makefile b/Makefile index fa44693..1e39601 100644 --- a/Makefile +++ b/Makefile @@ -1,65 +1,56 @@ -export ROOT := $(shell pwd) -SIMDIR := $(ROOT)/sim -export SRCDIR := $(ROOT)/src -TBDIR := $(ROOT)/testbench -WORKDIR := $(ROOT)/work +SIMDIR := sim +BINDIR := bin +export SRCDIR := src +TBDIR := testbench +WORKDIR := work VHDLEX := vhd +WORKFILE := $(WORKDIR)/work-obj93.cf + ##################################################### # # # Top level entity # # # ##################################################### -export TOP_ENTITY := # fill -export TOP_ENTITY_VHDL := $(SRCDIR)/$(TOP_ENTITY).$(VHDLEX) +export TOP_ENTITY := # put top entity here TESTBENCH ?= $(TOP_ENTITY)_tb # default WAVEFORM_VIEWER := gtkwave COMPILER := ghdl -COMPILER_FLAGS := --workdir=$(WORKDIR) +COMPILER_FLAGS := --std=08 --ieee=standard --workdir=$(WORKDIR) STOP_TIME ?= 1000ns -WAVEFORM_FILE ?= $(SIMDIR)/out.gwh - -RUN_FLAGS := --stop-time=$(STOP_TIME) --vcd=$(WAVEFORM_FILE) --stats +RUN_FLAGS := --stop-time=$(STOP_TIME) --stats -TBSOURCES := $(wildcard $(TBDIR)/*.$(VHDLEX)) -export SOURCES := $(wildcard $(SRCDIR)/*.$(VHDLEX)) +TBSOURCES := $(wildcard $(TBDIR)/*.$(VHDLEX) $(TBDIR)/**/*.$(VHDLEX)) +export SOURCES := $(wildcard $(SRCDIR)/*.$(VHDLEX) $(SRCDIR)/**/*.$(VHDLEX)) ALL_SOURCES := $(SOURCES) $(TBSOURCES) -EXECUTABLE := $(SIMDIR)/$(TESTBENCH) - .PHONY: all clean xil -compile: $(SIMDIR) $(WORKDIR) $(ALL_SOURCES) - @$(COMPILER) -i $(COMPILER_FLAGS) $(ALL_SOURCES) - @$(COMPILER) -m -o $(EXECUTABLE) $(COMPILER_FLAGS) $(TESTBENCH) - -all: compile run view - -$(TBDIR)/$(TESTBENCH): compile +all: $(SIMDIR)/$(TESTBENCH).ghw -$(WORKDIR): - @mkdir $(WORKDIR) +$(BINDIR)/%_tb.out: $(TBDIR)/%_tb.$(VHDLEX) $(WORKFILE) $(BINDIR) + @$(COMPILER) -m -o $@ $(COMPILER_FLAGS) $(notdir $(basename $@)) -$(SIMDIR): - @mkdir $(SIMDIR) +$(BINDIR)/%.out: $(SRCDIR)/%.$(VHDLEX) $(WORKFILE) $(BINDIR) + @$(COMPILER) -m -o $@ $(COMPILER_FLAGS) $(notdir $(basename $@)) -run: $(TBDIR)/$(TESTBENCH) $(SIMDIR) - @$(EXECUTABLE) $(RUN_FLAGS) +$(SIMDIR)/%.ghw: $(BINDIR)/%.out + $< $(RUN_FLAGS) --wave=$@ + gsettings set com.geda.gtkwave reload 1 + gsettings set com.geda.gtkwave reload 0 + pgrep $(WAVEFORM_VIEWER) || $(WAVEFORM_VIEWER) $@ & -view: - @$(WAVEFORM_VIEWER) $(WAVEFORM_FILE) - -xil: - @$(MAKE) -C xil all +$(WORKFILE): $(WORKDIR) $(ALL_SOURCES) + @$(COMPILER) -i $(COMPILER_FLAGS) $(ALL_SOURCES) -xil-flash: - @$(MAKE) -C xil flash +$(BINDIR) $(WORKDIR) $(SIMDIR): + @mkdir $@ clean: - @$(RM) -rf $(SIMDIR) - @$(RM) -rf $(WORKDIR) + @$(RM) -rf $(SIMDIR) $(WORKDIR) $(BINDIR) @$(MAKE) -C ax309 clean +$(ALL_SOURCES): -- 2.48.1