|  | # -*- Makefile -*- | 
|  | # This Makefile template is supposed to be included in each plugin's Makefile. | 
|  | # Plugin Makefiles need to specify the plugin's name and source files. | 
|  | # The plugin name is how the final shared object will be named. | 
|  | # This shared object can be imported to Yosys with `plugin -i` command. | 
|  | # | 
|  | # Below is an example of a plugin Makefile that uses this template: | 
|  | # NAME = plugin_name | 
|  | # SOURCES = source1.cc source2.cc | 
|  | # include ../Makefile_plugin.common | 
|  | # | 
|  | # For the above example the final plugin shared object will be named plugin_name.so. | 
|  | # In order to test the plugin it has to be copied to Yosys's shared folder. | 
|  | # The install target in this Makefile copies the plugins into the shared folder | 
|  | # of the Yosys installation that is found in the PATH. | 
|  | # This is needed because the shared folder is where Yosys will look for the | 
|  | # plugin object when `plugin -i` is called in Yosys's synthesis script. | 
|  | # | 
|  | # To add tests for the plugin the Makefile_test.common Makefile should be used. | 
|  | # Refer to Makefile_test.common to learn more details. | 
|  | # | 
|  | # Below is a directory structure which shows how the plugin sources and tests | 
|  | # should be laid out | 
|  | # | 
|  | # |-- Makefile_plugin.common | 
|  | # |-- Makefile_test.common | 
|  | # |-- example-plugin | 
|  | # |   |-- Makefile | 
|  | # |   |-- source1.cc | 
|  | # |   |-- source2.cc | 
|  | # |   |-- tests | 
|  | # |       |-- Makefile | 
|  | # |       |-- test_case_1 | 
|  | # |       |   |-- test_case_1.tcl | 
|  | # |       |   |-- test_case_1.v | 
|  | # |       |   |-- test_case_1.golden.ext | 
|  | # |       |   |-- ... | 
|  | # |-- example2-plugin | 
|  | # |-- ... | 
|  | CXX ?= $(shell yosys-config --cxx) | 
|  | CXXFLAGS ?= $(shell yosys-config --cxxflags) #-DSDC_DEBUG | 
|  | LDFLAGS ?= $(shell yosys-config --ldflags) | 
|  | LDLIBS ?= $(shell yosys-config --ldlibs) | 
|  | PLUGINS_DIR ?= $(shell yosys-config --datdir)/plugins | 
|  | DATA_DIR ?= $(shell yosys-config --datdir) | 
|  |  | 
|  | OBJS := $(SOURCES:cc=o) | 
|  |  | 
|  | $(NAME).so: $(OBJS) | 
|  | $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -o $@ $^ $(LDLIBS) | 
|  |  | 
|  | install_plugin: $(NAME).so | 
|  | install -D $< $(PLUGINS_DIR)/$< | 
|  |  | 
|  | test: | 
|  | @$(MAKE) -C tests all | 
|  |  | 
|  | .PHONY: install | 
|  | install: install_plugin | 
|  |  | 
|  | clean: | 
|  | rm -f *.d *.o *.so | 
|  | $(MAKE) -C tests clean |