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 VERILATOR_OBJS = $(OUT_DIR)/verilated.o 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) $(VERILATOR_OBJS) rm -f $@ mkdir -p $(OUT_DIR) ar rcsT $@ $^ $(OUT_DIR)/%.o : %.cpp mkdir -p $(OUT_DIR) $(COMPILE.cc) $(OUTPUT_OPTION) $<