packages feed

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) $<