clashilator-0.1.3: template/Makefile.mustache
VERILOG_SRCS = {{#srcs}}{{verilogPath}} {{/srcs}}
HDL_DIR = {{hdlDir}}
OUT_DIR = {{outputDir}}/obj
VERILATOR_HDRS = $(OUT_DIR)/VSim.h
VERILATOR_LIB = $(OUT_DIR)/VSim__ALL.a $(OUT_DIR)/libverilated.a
SRC_DIR = {{outputDir}}/src
SRCS = $(foreach file, Impl.cpp Impl.h Interface.h, $(SRC_DIR)/$(file))
{{#verilator}}
CPPFLAGS = {{cflags}}
{{/verilator}}
{{^verilator}}
CPPFLAGS = $(shell pkg-config --cflags verilator)
{{/verilator}}
CPPFLAGS += -I$(OUT_DIR)
CXXFLAGS = -fPIC -O3
VERILATOR_FLAGS = -CFLAGS '-O3 -fPIC' -Wno-fatal --prefix VSim +1364-2001ext+v -I$(HDL_DIR)
all: $(OUT_DIR)/libVerilatorFFI.a
clean:
rm -rf $(OUT_DIR)
.PHONY: all clean
$(OUT_DIR)/VSim.mk: $(VERILOG_SRCS)
verilator $(VERILATOR_FLAGS) --cc -Mdir $(OUT_DIR) $(VERILOG_SRCS)
$(OUT_DIR)/verilated.o: $(shell pkg-config --variable=includedir verilator)/verilated.cpp
$(COMPILE.cc) $(OUTPUT_OPTION) $<
$(VERILATOR_LIB) $(VERILATOR_HDRS): $(OUT_DIR)/VSim.mk
cd $(OUT_DIR) && make -f VSim.mk CXX=$(CXX)
$(OUT_DIR)/VerilatorFFI.o: $(SRCS) $(VERILATOR_HDRS)
$(COMPILE.cc) $(OUTPUT_OPTION) $<
$(OUT_DIR)/libVerilatorFFI.a: $(OUT_DIR)/VerilatorFFI.o $(VERILATOR_LIB)
rm -f $@
mkdir -p $(OUT_DIR)
ar rcsT $@ $^
$(OUT_DIR)/%.o : %.cpp
mkdir -p $(OUT_DIR)
$(COMPILE.cc) $(OUTPUT_OPTION) $<