mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Support custom PROGRAM_PREFIX
This commit is contained in:
		
							parent
							
								
									7c06cb6157
								
							
						
					
					
						commit
						0d789c5a3b
					
				
					 10 changed files with 81 additions and 71 deletions
				
			
		
							
								
								
									
										87
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										87
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -42,6 +42,7 @@ SANITIZER = | ||||||
| # SANITIZER = undefined
 | # SANITIZER = undefined
 | ||||||
| # SANITIZER = cfi
 | # SANITIZER = cfi
 | ||||||
| 
 | 
 | ||||||
|  | PROGRAM_PREFIX :=  | ||||||
| 
 | 
 | ||||||
| OS := $(shell uname -s) | OS := $(shell uname -s) | ||||||
| PREFIX ?= /usr/local | PREFIX ?= /usr/local | ||||||
|  | @ -57,14 +58,14 @@ endif | ||||||
| 
 | 
 | ||||||
| BINDIR := $(PREFIX)/bin | BINDIR := $(PREFIX)/bin | ||||||
| LIBDIR := $(PREFIX)/lib | LIBDIR := $(PREFIX)/lib | ||||||
| DATDIR := $(PREFIX)/share/yosys | DATDIR := $(PREFIX)/share/$(PROGRAM_PREFIX)yosys | ||||||
| 
 | 
 | ||||||
| EXE = | EXE = | ||||||
| OBJS = | OBJS = | ||||||
| GENFILES = | GENFILES = | ||||||
| EXTRA_OBJS = | EXTRA_OBJS = | ||||||
| EXTRA_TARGETS = | EXTRA_TARGETS = | ||||||
| TARGETS = yosys$(EXE) yosys-config | TARGETS = $(PROGRAM_PREFIX)yosys$(EXE) $(PROGRAM_PREFIX)yosys-config | ||||||
| 
 | 
 | ||||||
| PRETTY = 1 | PRETTY = 1 | ||||||
| SMALL = 0 | SMALL = 0 | ||||||
|  | @ -249,7 +250,7 @@ LDFLAGS += $(EMCCFLAGS) | ||||||
| LDLIBS = | LDLIBS = | ||||||
| EXE = .js | EXE = .js | ||||||
| 
 | 
 | ||||||
| TARGETS := $(filter-out yosys-config,$(TARGETS)) | TARGETS := $(filter-out $(PROGRAM_PREFIX)yosys-config,$(TARGETS)) | ||||||
| EXTRA_TARGETS += yosysjs-$(YOSYS_VER).zip | EXTRA_TARGETS += yosysjs-$(YOSYS_VER).zip | ||||||
| 
 | 
 | ||||||
| ifeq ($(ENABLE_ABC),1) | ifeq ($(ENABLE_ABC),1) | ||||||
|  | @ -310,7 +311,7 @@ $(error Invalid CONFIG setting '$(CONFIG)'. Valid values: clang, gcc, gcc-4.8, e | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| ifeq ($(ENABLE_LIBYOSYS),1) | ifeq ($(ENABLE_LIBYOSYS),1) | ||||||
| TARGETS += libyosys.so | TARGETS += lib$(PROGRAM_PREFIX)yosys.so | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| ifeq ($(ENABLE_PYOSYS),1) | ifeq ($(ENABLE_PYOSYS),1) | ||||||
|  | @ -463,7 +464,7 @@ LDLIBS += -lpthread | ||||||
| endif | endif | ||||||
| else | else | ||||||
| ifeq ($(ABCEXTERNAL),) | ifeq ($(ABCEXTERNAL),) | ||||||
| TARGETS += yosys-abc$(EXE) | TARGETS += $(PROGRAM_PREFIX)yosys-abc$(EXE) | ||||||
| endif | endif | ||||||
| endif | endif | ||||||
| endif | endif | ||||||
|  | @ -513,8 +514,8 @@ endef | ||||||
| ifeq ($(PRETTY), 1) | ifeq ($(PRETTY), 1) | ||||||
| P_STATUS = 0 | P_STATUS = 0 | ||||||
| P_OFFSET = 0 | P_OFFSET = 0 | ||||||
| P_UPDATE = $(eval P_STATUS=$(shell echo $(OBJS) yosys$(EXE) | $(AWK) 'BEGIN { RS = " "; I = $(P_STATUS)+0; } $$1 == "$@" && NR > I { I = NR; } END { print I; }')) | P_UPDATE = $(eval P_STATUS=$(shell echo $(OBJS) $(PROGRAM_PREFIX)yosys$(EXE) | $(AWK) 'BEGIN { RS = " "; I = $(P_STATUS)+0; } $$1 == "$@" && NR > I { I = NR; } END { print I; }')) | ||||||
| P_SHOW = [$(shell $(AWK) "BEGIN { N=$(words $(OBJS) yosys$(EXE)); printf \"%3d\", $(P_OFFSET)+90*$(P_STATUS)/N; exit; }")%] | P_SHOW = [$(shell $(AWK) "BEGIN { N=$(words $(OBJS) $(PROGRAM_PREFIX)yosys$(EXE)); printf \"%3d\", $(P_OFFSET)+90*$(P_STATUS)/N; exit; }")%] | ||||||
| P = @echo "$(if $(findstring $@,$(TARGETS) $(EXTRA_TARGETS)),$(eval P_OFFSET = 10))$(call P_UPDATE)$(call P_SHOW) Building $@"; | P = @echo "$(if $(findstring $@,$(TARGETS) $(EXTRA_TARGETS)),$(eval P_OFFSET = 10))$(call P_UPDATE)$(call P_SHOW) Building $@"; | ||||||
| Q = @ | Q = @ | ||||||
| S = -s | S = -s | ||||||
|  | @ -552,7 +553,7 @@ OBJS += kernel/driver.o kernel/register.o kernel/rtlil.o kernel/log.o kernel/cal | ||||||
| OBJS += kernel/cellaigs.o kernel/celledges.o | OBJS += kernel/cellaigs.o kernel/celledges.o | ||||||
| 
 | 
 | ||||||
| kernel/log.o: CXXFLAGS += -DYOSYS_SRC='"$(YOSYS_SRC)"' | kernel/log.o: CXXFLAGS += -DYOSYS_SRC='"$(YOSYS_SRC)"' | ||||||
| kernel/yosys.o: CXXFLAGS += -DYOSYS_DATDIR='"$(DATDIR)"' | kernel/yosys.o: CXXFLAGS += -DYOSYS_DATDIR='"$(DATDIR)"' -DYOSYS_PROGRAM_PREFIX='"$(PROGRAM_PREFIX)"' | ||||||
| 
 | 
 | ||||||
| OBJS += libs/bigint/BigIntegerAlgorithms.o libs/bigint/BigInteger.o libs/bigint/BigIntegerUtils.o | OBJS += libs/bigint/BigIntegerAlgorithms.o libs/bigint/BigInteger.o libs/bigint/BigIntegerUtils.o | ||||||
| OBJS += libs/bigint/BigUnsigned.o libs/bigint/BigUnsignedInABase.o | OBJS += libs/bigint/BigUnsigned.o libs/bigint/BigUnsignedInABase.o | ||||||
|  | @ -605,7 +606,7 @@ include techlibs/common/Makefile.inc | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| ifeq ($(LINK_ABC),1) | ifeq ($(LINK_ABC),1) | ||||||
| OBJS += yosys-libabc.a | OBJS += $(PROGRAM_PREFIX)yosys-libabc.a | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| top-all: $(TARGETS) $(EXTRA_TARGETS) | top-all: $(TARGETS) $(EXTRA_TARGETS) | ||||||
|  | @ -617,14 +618,14 @@ ifeq ($(CONFIG),emcc) | ||||||
| yosys.js: $(filter-out yosysjs-$(YOSYS_VER).zip,$(EXTRA_TARGETS)) | yosys.js: $(filter-out yosysjs-$(YOSYS_VER).zip,$(EXTRA_TARGETS)) | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| yosys$(EXE): $(OBJS) | $(PROGRAM_PREFIX)yosys$(EXE): $(OBJS) | ||||||
| 	$(P) $(LD) -o yosys$(EXE) $(LDFLAGS) $(OBJS) $(LDLIBS) | 	$(P) $(LD) -o $(PROGRAM_PREFIX)yosys$(EXE) $(LDFLAGS) $(OBJS) $(LDLIBS) | ||||||
| 
 | 
 | ||||||
| libyosys.so: $(filter-out kernel/driver.o,$(OBJS)) | lib$(PROGRAM_PREFIX)yosys.so: $(filter-out kernel/driver.o,$(OBJS)) | ||||||
| ifeq ($(OS), Darwin) | ifeq ($(OS), Darwin) | ||||||
| 	$(P) $(LD) -o libyosys.so -shared -Wl,-install_name,libyosys.so $(LDFLAGS) $^ $(LDLIBS) | 	$(P) $(LD) -o lib$(PROGRAM_PREFIX)yosys.so -shared -Wl,-install_name,lib$(PROGRAM_PREFIX)yosys.so $(LDFLAGS) $^ $(LDLIBS) | ||||||
| else | else | ||||||
| 	$(P) $(LD) -o libyosys.so -shared -Wl,-soname,libyosys.so $(LDFLAGS) $^ $(LDLIBS) | 	$(P) $(LD) -o lib$(PROGRAM_PREFIX)yosys.so -shared -Wl,-soname,lib$(PROGRAM_PREFIX)yosys.so $(LDFLAGS) $^ $(LDLIBS) | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| %.o: %.cc | %.o: %.cc | ||||||
|  | @ -660,11 +661,11 @@ CXXFLAGS_NOVERIFIC = $(CXXFLAGS) | ||||||
| LDLIBS_NOVERIFIC = $(LDLIBS) | LDLIBS_NOVERIFIC = $(LDLIBS) | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| yosys-config: misc/yosys-config.in | $(PROGRAM_PREFIX)yosys-config: misc/yosys-config.in | ||||||
| 	$(P) $(SED) -e 's#@CXXFLAGS@#$(subst -I. -I"$(YOSYS_SRC)",-I"$(DATDIR)/include",$(strip $(CXXFLAGS_NOVERIFIC)))#;' \
 | 	$(P) $(SED) -e 's#@CXXFLAGS@#$(subst -I. -I"$(YOSYS_SRC)",-I"$(DATDIR)/include",$(strip $(CXXFLAGS_NOVERIFIC)))#;' \
 | ||||||
| 			-e 's#@CXX@#$(strip $(CXX))#;' -e 's#@LDFLAGS@#$(strip $(LDFLAGS) $(PLUGIN_LDFLAGS))#;' -e 's#@LDLIBS@#$(strip $(LDLIBS_NOVERIFIC))#;' \
 | 			-e 's#@CXX@#$(strip $(CXX))#;' -e 's#@LDFLAGS@#$(strip $(LDFLAGS) $(PLUGIN_LDFLAGS))#;' -e 's#@LDLIBS@#$(strip $(LDLIBS_NOVERIFIC))#;' \
 | ||||||
| 			-e 's#@BINDIR@#$(strip $(BINDIR))#;' -e 's#@DATDIR@#$(strip $(DATDIR))#;' < $< > yosys-config | 			-e 's#@BINDIR@#$(strip $(BINDIR))#;' -e 's#@DATDIR@#$(strip $(DATDIR))#;' < $< > $(PROGRAM_PREFIX)yosys-config | ||||||
| 	$(Q) chmod +x yosys-config | 	$(Q) chmod +x $(PROGRAM_PREFIX)yosys-config | ||||||
| 
 | 
 | ||||||
| abc/abc-$(ABCREV)$(EXE) abc/libabc-$(ABCREV).a: | abc/abc-$(ABCREV)$(EXE) abc/libabc-$(ABCREV).a: | ||||||
| 	$(P) | 	$(P) | ||||||
|  | @ -691,11 +692,11 @@ ifeq ($(ABCREV),default) | ||||||
| .PHONY: abc/libabc-$(ABCREV).a | .PHONY: abc/libabc-$(ABCREV).a | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| yosys-abc$(EXE): abc/abc-$(ABCREV)$(EXE) | $(PROGRAM_PREFIX)yosys-abc$(EXE): abc/abc-$(ABCREV)$(EXE) | ||||||
| 	$(P) cp abc/abc-$(ABCREV)$(EXE) yosys-abc$(EXE) | 	$(P) cp abc/abc-$(ABCREV)$(EXE) $(PROGRAM_PREFIX)yosys-abc$(EXE) | ||||||
| 
 | 
 | ||||||
| yosys-libabc.a: abc/libabc-$(ABCREV).a | $(PROGRAM_PREFIX)yosys-libabc.a: abc/libabc-$(ABCREV).a | ||||||
| 	$(P) cp abc/libabc-$(ABCREV).a yosys-libabc.a | 	$(P) cp abc/libabc-$(ABCREV).a $(PROGRAM_PREFIX)yosys-libabc.a | ||||||
| 
 | 
 | ||||||
| ifneq ($(SEED),) | ifneq ($(SEED),) | ||||||
| SEEDOPT="-S $(SEED)" | SEEDOPT="-S $(SEED)" | ||||||
|  | @ -765,7 +766,7 @@ ystests: $(TARGETS) $(EXTRA_TARGETS) | ||||||
| 	@echo "" | 	@echo "" | ||||||
| 
 | 
 | ||||||
| # Unit test
 | # Unit test
 | ||||||
| unit-test: libyosys.so | unit-test: lib$(PROGRAM_PREFIX)yosys.so | ||||||
| 	@$(MAKE) -C $(UNITESTPATH) CXX="$(CXX)" CPPFLAGS="$(CPPFLAGS)" \
 | 	@$(MAKE) -C $(UNITESTPATH) CXX="$(CXX)" CPPFLAGS="$(CPPFLAGS)" \
 | ||||||
| 		CXXFLAGS="$(CXXFLAGS)" LDLIBS="$(LDLIBS)" ROOTPATH="$(CURDIR)" | 		CXXFLAGS="$(CXXFLAGS)" LDLIBS="$(LDLIBS)" ROOTPATH="$(CURDIR)" | ||||||
| 
 | 
 | ||||||
|  | @ -774,26 +775,26 @@ clean-unit-test: | ||||||
| 
 | 
 | ||||||
| install: $(TARGETS) $(EXTRA_TARGETS) | install: $(TARGETS) $(EXTRA_TARGETS) | ||||||
| 	$(INSTALL_SUDO) mkdir -p $(DESTDIR)$(BINDIR) | 	$(INSTALL_SUDO) mkdir -p $(DESTDIR)$(BINDIR) | ||||||
| 	$(INSTALL_SUDO) cp $(filter-out libyosys.so,$(TARGETS)) $(DESTDIR)$(BINDIR) | 	$(INSTALL_SUDO) cp $(filter-out lib$(PROGRAM_PREFIX)yosys.so,$(TARGETS)) $(DESTDIR)$(BINDIR) | ||||||
| ifneq ($(filter yosys,$(TARGETS)),) | ifneq ($(filter $(PROGRAM_PREFIX)yosys,$(TARGETS)),) | ||||||
| 	$(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(BINDIR)/yosys | 	$(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(BINDIR)/$(PROGRAM_PREFIX)yosys | ||||||
| endif | endif | ||||||
| ifneq ($(filter yosys-abc,$(TARGETS)),) | ifneq ($(filter $(PROGRAM_PREFIX)yosys-abc,$(TARGETS)),) | ||||||
| 	$(INSTALL_SUDO) $(STRIP) $(DESTDIR)$(BINDIR)/yosys-abc | 	$(INSTALL_SUDO) $(STRIP) $(DESTDIR)$(BINDIR)/$(PROGRAM_PREFIX)yosys-abc | ||||||
| endif | endif | ||||||
| ifneq ($(filter yosys-filterlib,$(TARGETS)),) | ifneq ($(filter $(PROGRAM_PREFIX)yosys-filterlib,$(TARGETS)),) | ||||||
| 	$(INSTALL_SUDO) $(STRIP) $(DESTDIR)$(BINDIR)/yosys-filterlib | 	$(INSTALL_SUDO) $(STRIP) $(DESTDIR)$(BINDIR)/$(PROGRAM_PREFIX)yosys-filterlib | ||||||
| endif | endif | ||||||
| 	$(INSTALL_SUDO) mkdir -p $(DESTDIR)$(DATDIR) | 	$(INSTALL_SUDO) mkdir -p $(DESTDIR)$(DATDIR) | ||||||
| 	$(INSTALL_SUDO) cp -r share/. $(DESTDIR)$(DATDIR)/. | 	$(INSTALL_SUDO) cp -r share/. $(DESTDIR)$(DATDIR)/. | ||||||
| ifeq ($(ENABLE_LIBYOSYS),1) | ifeq ($(ENABLE_LIBYOSYS),1) | ||||||
| 	$(INSTALL_SUDO) mkdir -p $(DESTDIR)$(LIBDIR) | 	$(INSTALL_SUDO) mkdir -p $(DESTDIR)$(LIBDIR) | ||||||
| 	$(INSTALL_SUDO) cp libyosys.so $(DESTDIR)$(LIBDIR)/ | 	$(INSTALL_SUDO) cp lib$(PROGRAM_PREFIX)yosys.so $(DESTDIR)$(LIBDIR)/ | ||||||
| 	$(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(LIBDIR)/libyosys.so | 	$(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(LIBDIR)/lib$(PROGRAM_PREFIX)yosys.so | ||||||
| ifeq ($(ENABLE_PYOSYS),1) | ifeq ($(ENABLE_PYOSYS),1) | ||||||
| 	$(INSTALL_SUDO) mkdir -p $(PYTHON_DESTDIR)/pyosys | 	$(INSTALL_SUDO) mkdir -p $(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys | ||||||
| 	$(INSTALL_SUDO) cp libyosys.so $(PYTHON_DESTDIR)/pyosys/ | 	$(INSTALL_SUDO) cp lib$(PROGRAM_PREFIX)yosys.so $(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/libyosys.so | ||||||
| 	$(INSTALL_SUDO) cp misc/__init__.py $(PYTHON_DESTDIR)/pyosys/ | 	$(INSTALL_SUDO) cp misc/__init__.py $(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/ | ||||||
| endif | endif | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  | @ -801,16 +802,16 @@ uninstall: | ||||||
| 	$(INSTALL_SUDO) rm -vf $(addprefix $(DESTDIR)$(BINDIR)/,$(notdir $(TARGETS))) | 	$(INSTALL_SUDO) rm -vf $(addprefix $(DESTDIR)$(BINDIR)/,$(notdir $(TARGETS))) | ||||||
| 	$(INSTALL_SUDO) rm -rvf $(DESTDIR)$(DATDIR) | 	$(INSTALL_SUDO) rm -rvf $(DESTDIR)$(DATDIR) | ||||||
| ifeq ($(ENABLE_LIBYOSYS),1) | ifeq ($(ENABLE_LIBYOSYS),1) | ||||||
| 	$(INSTALL_SUDO) rm -vf $(DESTDIR)$(LIBDIR)/libyosys.so | 	$(INSTALL_SUDO) rm -vf $(DESTDIR)$(LIBDIR)/lib$(PROGRAM_PREFIX)yosys.so | ||||||
| ifeq ($(ENABLE_PYOSYS),1) | ifeq ($(ENABLE_PYOSYS),1) | ||||||
| 	$(INSTALL_SUDO) rm -vf $(PYTHON_DESTDIR)/pyosys/libyosys.so | 	$(INSTALL_SUDO) rm -vf $(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/libyosys.so | ||||||
| 	$(INSTALL_SUDO) rm -vf $(PYTHON_DESTDIR)/pyosys/__init__.py | 	$(INSTALL_SUDO) rm -vf $(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/__init__.py | ||||||
| 	$(INSTALL_SUDO) rmdir $(PYTHON_DESTDIR)/pyosys | 	$(INSTALL_SUDO) rmdir $(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys | ||||||
| endif | endif | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| update-manual: $(TARGETS) $(EXTRA_TARGETS) | update-manual: $(TARGETS) $(EXTRA_TARGETS) | ||||||
| 	cd manual && ../yosys -p 'help -write-tex-command-reference-manual' | 	cd manual && ../$(PROGRAM_PREFIX)yosys -p 'help -write-tex-command-reference-manual' | ||||||
| 
 | 
 | ||||||
| manual: $(TARGETS) $(EXTRA_TARGETS) | manual: $(TARGETS) $(EXTRA_TARGETS) | ||||||
| 	cd manual && bash appnotes.sh | 	cd manual && bash appnotes.sh | ||||||
|  | @ -836,13 +837,13 @@ clean: | ||||||
| 
 | 
 | ||||||
| clean-abc: | clean-abc: | ||||||
| 	$(MAKE) -C abc DEP= clean | 	$(MAKE) -C abc DEP= clean | ||||||
| 	rm -f yosys-abc$(EXE) yosys-libabc.a abc/abc-[0-9a-f]* abc/libabc-[0-9a-f]*.a | 	rm -f $(PROGRAM_PREFIX)yosys-abc$(EXE) $(PROGRAM_PREFIX)yosys-libabc.a abc/abc-[0-9a-f]* abc/libabc-[0-9a-f]*.a | ||||||
| 
 | 
 | ||||||
| mrproper: clean | mrproper: clean | ||||||
| 	git clean -xdf | 	git clean -xdf | ||||||
| 
 | 
 | ||||||
| coverage: | coverage: | ||||||
| 	./yosys -qp 'help; help -all' | 	./$(PROGRAM_PREFIX)yosys -qp 'help; help -all' | ||||||
| 	rm -rf coverage.info coverage_html | 	rm -rf coverage.info coverage_html | ||||||
| 	lcov --capture -d . --no-external -o coverage.info | 	lcov --capture -d . --no-external -o coverage.info | ||||||
| 	genhtml coverage.info --output-directory coverage_html | 	genhtml coverage.info --output-directory coverage_html | ||||||
|  | @ -868,9 +869,9 @@ ifeq ($(CONFIG),mxe) | ||||||
| mxebin: $(TARGETS) $(EXTRA_TARGETS) | mxebin: $(TARGETS) $(EXTRA_TARGETS) | ||||||
| 	rm -rf yosys-win32-mxebin-$(YOSYS_VER){,.zip} | 	rm -rf yosys-win32-mxebin-$(YOSYS_VER){,.zip} | ||||||
| 	mkdir -p yosys-win32-mxebin-$(YOSYS_VER) | 	mkdir -p yosys-win32-mxebin-$(YOSYS_VER) | ||||||
| 	cp -r yosys.exe share/ yosys-win32-mxebin-$(YOSYS_VER)/ | 	cp -r $(PROGRAM_PREFIX)yosys.exe share/ yosys-win32-mxebin-$(YOSYS_VER)/ | ||||||
| ifeq ($(ENABLE_ABC),1) | ifeq ($(ENABLE_ABC),1) | ||||||
| 	cp -r yosys-abc.exe abc/lib/x86/pthreadVC2.dll yosys-win32-mxebin-$(YOSYS_VER)/ | 	cp -r $(PROGRAM_PREFIX)yosys-abc.exe abc/lib/x86/pthreadVC2.dll yosys-win32-mxebin-$(YOSYS_VER)/ | ||||||
| endif | endif | ||||||
| 	echo -en 'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-mxebin-$(YOSYS_VER)/readme.txt | 	echo -en 'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-mxebin-$(YOSYS_VER)/readme.txt | ||||||
| 	echo -en 'Documentation at http://www.clifford.at/yosys/.\r\n' >> yosys-win32-mxebin-$(YOSYS_VER)/readme.txt | 	echo -en 'Documentation at http://www.clifford.at/yosys/.\r\n' >> yosys-win32-mxebin-$(YOSYS_VER)/readme.txt | ||||||
|  |  | ||||||
|  | @ -6,23 +6,23 @@ ifneq ($(CONFIG),emcc) | ||||||
| 
 | 
 | ||||||
| # MSYS targets support yosys-smtbmc, but require a launcher script
 | # MSYS targets support yosys-smtbmc, but require a launcher script
 | ||||||
| ifeq ($(CONFIG),$(filter $(CONFIG),msys2 msys2-64)) | ifeq ($(CONFIG),$(filter $(CONFIG),msys2 msys2-64)) | ||||||
| TARGETS += yosys-smtbmc.exe yosys-smtbmc-script.py | TARGETS += $(PROGRAM_PREFIX)yosys-smtbmc.exe $(PROGRAM_PREFIX)yosys-smtbmc-script.py | ||||||
| # Needed to find the Python interpreter for yosys-smtbmc scripts.
 | # Needed to find the Python interpreter for yosys-smtbmc scripts.
 | ||||||
| # Override if necessary, it is only used for msys2 targets.
 | # Override if necessary, it is only used for msys2 targets.
 | ||||||
| PYTHON := $(shell cygpath -w -m $(PREFIX)/bin/python3) | PYTHON := $(shell cygpath -w -m $(PREFIX)/bin/python3) | ||||||
| 
 | 
 | ||||||
| yosys-smtbmc-script.py: backends/smt2/smtbmc.py | $(PROGRAM_PREFIX)yosys-smtbmc-script.py: backends/smt2/smtbmc.py | ||||||
| 	$(P) sed -e 's|##yosys-sys-path##|sys.path += [os.path.dirname(os.path.realpath(__file__)) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' \ | 	$(P) sed -e 's|##yosys-sys-path##|sys.path += [os.path.dirname(os.path.realpath(__file__)) + p for p in ["/share/python3", "/../share/$(PROGRAM_PREFIX)yosys/python3"]]|;' \ | ||||||
| 		-e "s|#!/usr/bin/env python3|#!$(PYTHON)|" < $< > $@ | 		-e "s|#!/usr/bin/env python3|#!$(PYTHON)|" < $< > $@ | ||||||
| 
 | 
 | ||||||
| yosys-smtbmc.exe: misc/launcher.c yosys-smtbmc-script.py | $(PROGRAM_PREFIX)yosys-smtbmc.exe: misc/launcher.c $(PROGRAM_PREFIX)yosys-smtbmc-script.py | ||||||
| 	$(P) $(CXX) -DGUI=0 -O -s -o $@ $< | 	$(P) $(CXX) -DGUI=0 -O -s -o $@ $< | ||||||
| # Other targets
 | # Other targets
 | ||||||
| else | else | ||||||
| TARGETS += yosys-smtbmc | TARGETS += $(PROGRAM_PREFIX)yosys-smtbmc | ||||||
| 
 | 
 | ||||||
| yosys-smtbmc: backends/smt2/smtbmc.py | $(PROGRAM_PREFIX)yosys-smtbmc: backends/smt2/smtbmc.py | ||||||
| 	$(P) sed 's|##yosys-sys-path##|sys.path += [os.path.dirname(os.path.realpath(__file__)) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' < $< > $@.new | 	$(P) sed 's|##yosys-sys-path##|sys.path += [os.path.dirname(os.path.realpath(__file__)) + p for p in ["/share/python3", "/../share/$(PROGRAM_PREFIX)yosys/python3"]]|;' < $< > $@.new | ||||||
| 	$(Q) chmod +x $@.new | 	$(Q) chmod +x $@.new | ||||||
| 	$(Q) mv $@.new $@ | 	$(Q) mv $@.new $@ | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | @ -53,8 +53,7 @@ so = SmtOpts() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def usage(): | def usage(): | ||||||
|     print(""" |     print(os.path.basename(sys.argv[0]) + """ [options] <yosys_smt2_output> | ||||||
| yosys-smtbmc [options] <yosys_smt2_output> |  | ||||||
| 
 | 
 | ||||||
|     -t <num_steps> |     -t <num_steps> | ||||||
|     -t <skip_steps>:<num_steps> |     -t <skip_steps>:<num_steps> | ||||||
|  |  | ||||||
|  | @ -835,7 +835,7 @@ std::string proc_share_dirname() | ||||||
| 	std::string proc_share_path = proc_self_path + "share/"; | 	std::string proc_share_path = proc_self_path + "share/"; | ||||||
| 	if (check_file_exists(proc_share_path, true)) | 	if (check_file_exists(proc_share_path, true)) | ||||||
| 		return proc_share_path; | 		return proc_share_path; | ||||||
| 	proc_share_path = proc_self_path + "../share/yosys/"; | 	proc_share_path = proc_self_path + "../share/" + proc_program_prefix()+ "yosys/"; | ||||||
| 	if (check_file_exists(proc_share_path, true)) | 	if (check_file_exists(proc_share_path, true)) | ||||||
| 		return proc_share_path; | 		return proc_share_path; | ||||||
| #    ifdef YOSYS_DATDIR | #    ifdef YOSYS_DATDIR | ||||||
|  | @ -848,6 +848,15 @@ std::string proc_share_dirname() | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | std::string proc_program_prefix() | ||||||
|  | { | ||||||
|  | 	std::string program_prefix; | ||||||
|  | #ifdef YOSYS_PROGRAM_PREFIX | ||||||
|  | 	program_prefix = YOSYS_PROGRAM_PREFIX; | ||||||
|  | #endif | ||||||
|  | 	return program_prefix; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| bool fgetline(FILE *f, std::string &buffer) | bool fgetline(FILE *f, std::string &buffer) | ||||||
| { | { | ||||||
| 	buffer = ""; | 	buffer = ""; | ||||||
|  |  | ||||||
|  | @ -324,6 +324,7 @@ namespace ID = RTLIL::ID; | ||||||
| RTLIL::Design *yosys_get_design(); | RTLIL::Design *yosys_get_design(); | ||||||
| std::string proc_self_dirname(); | std::string proc_self_dirname(); | ||||||
| std::string proc_share_dirname(); | std::string proc_share_dirname(); | ||||||
|  | std::string proc_program_prefix(); | ||||||
| const char *create_prompt(RTLIL::Design *design, int recursion_counter); | const char *create_prompt(RTLIL::Design *design, int recursion_counter); | ||||||
| std::vector<std::string> glob_filename(const std::string &filename_pattern); | std::vector<std::string> glob_filename(const std::string &filename_pattern); | ||||||
| void rewrite_filename(std::string &filename); | void rewrite_filename(std::string &filename); | ||||||
|  |  | ||||||
|  | @ -18,21 +18,21 @@ help() { | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "Use --exec to call a command instead of generating output. Example usage:" | 		echo "Use --exec to call a command instead of generating output. Example usage:" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "  yosys-config --exec --cxx --cxxflags --ldflags -o plugin.so -shared plugin.cc --ldlibs" | 		echo "  $0 --exec --cxx --cxxflags --ldflags -o plugin.so -shared plugin.cc --ldlibs" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "The above command can be abbreviated as:" | 		echo "The above command can be abbreviated as:" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "  yosys-config --build plugin.so plugin.cc" | 		echo "  $0 --build plugin.so plugin.cc" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "Use --prefix to change the prefix for the special args from '--' to" | 		echo "Use --prefix to change the prefix for the special args from '--' to" | ||||||
| 		echo "something else. Example:" | 		echo "something else. Example:" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "  yosys-config --prefix @ bindir: @bindir" | 		echo "  $0 --prefix @ bindir: @bindir" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "The args --bindir and --datdir can be directly followed by a slash and" | 		echo "The args --bindir and --datdir can be directly followed by a slash and" | ||||||
| 		echo "additional text. Example:" | 		echo "additional text. Example:" | ||||||
| 		echo "" | 		echo "" | ||||||
| 		echo "  yosys-config --datdir/simlib.v" | 		echo "  $0 --datdir/simlib.v" | ||||||
| 		echo "" | 		echo "" | ||||||
| 	} >&2 | 	} >&2 | ||||||
| 	exit 1 | 	exit 1 | ||||||
|  |  | ||||||
|  | @ -59,10 +59,10 @@ passes/techmap/techmap.inc: techlibs/common/techmap.v | ||||||
| passes/techmap/techmap.o: passes/techmap/techmap.inc | passes/techmap/techmap.o: passes/techmap/techmap.inc | ||||||
| 
 | 
 | ||||||
| ifneq ($(CONFIG),emcc) | ifneq ($(CONFIG),emcc) | ||||||
| TARGETS += yosys-filterlib$(EXE) | TARGETS += $(PROGRAM_PREFIX)yosys-filterlib$(EXE) | ||||||
| EXTRA_OBJS += passes/techmap/filterlib.o | EXTRA_OBJS += passes/techmap/filterlib.o | ||||||
| 
 | 
 | ||||||
| yosys-filterlib$(EXE): passes/techmap/filterlib.o | $(PROGRAM_PREFIX)yosys-filterlib$(EXE): passes/techmap/filterlib.o | ||||||
| 	$(Q) mkdir -p $(dir $@) | 	$(Q) mkdir -p $(dir $@) | ||||||
| 	$(P) $(LD) -o yosys-filterlib$(EXE) $(LDFLAGS) $^ $(LDLIBS) | 	$(P) $(LD) -o $(PROGRAM_PREFIX)yosys-filterlib$(EXE) $(LDFLAGS) $^ $(LDLIBS) | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | @ -702,7 +702,7 @@ void abc_module(RTLIL::Design *design, RTLIL::Module *current_module, std::strin | ||||||
| 	if (dff_mode && clk_sig.empty()) | 	if (dff_mode && clk_sig.empty()) | ||||||
| 		log_cmd_error("Clock domain %s not found.\n", clk_str.c_str()); | 		log_cmd_error("Clock domain %s not found.\n", clk_str.c_str()); | ||||||
| 
 | 
 | ||||||
| 	std::string tempdir_name = "/tmp/yosys-abc-XXXXXX"; | 	std::string tempdir_name = "/tmp/" + proc_program_prefix()+ "yosys-abc-XXXXXX"; | ||||||
| 	if (!cleanup) | 	if (!cleanup) | ||||||
| 		tempdir_name[0] = tempdir_name[4] = '_'; | 		tempdir_name[0] = tempdir_name[4] = '_'; | ||||||
| 	tempdir_name = make_temp_dir(tempdir_name); | 	tempdir_name = make_temp_dir(tempdir_name); | ||||||
|  | @ -1305,7 +1305,7 @@ struct AbcPass : public Pass { | ||||||
| #ifdef ABCEXTERNAL | #ifdef ABCEXTERNAL | ||||||
| 		log("        use the specified command instead of \"" ABCEXTERNAL "\" to execute ABC.\n"); | 		log("        use the specified command instead of \"" ABCEXTERNAL "\" to execute ABC.\n"); | ||||||
| #else | #else | ||||||
| 		log("        use the specified command instead of \"<yosys-bindir>/yosys-abc\" to execute ABC.\n"); | 		log("        use the specified command instead of \"<yosys-bindir>/%syosys-abc\" to execute ABC.\n", proc_program_prefix().c_str()); | ||||||
| #endif | #endif | ||||||
| 		log("        This can e.g. be used to call a specific version of ABC or a wrapper.\n"); | 		log("        This can e.g. be used to call a specific version of ABC or a wrapper.\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
|  | @ -1491,7 +1491,7 @@ struct AbcPass : public Pass { | ||||||
| #ifdef ABCEXTERNAL | #ifdef ABCEXTERNAL | ||||||
| 		std::string exe_file = ABCEXTERNAL; | 		std::string exe_file = ABCEXTERNAL; | ||||||
| #else | #else | ||||||
| 		std::string exe_file = proc_self_dirname() + "yosys-abc"; | 		std::string exe_file = proc_self_dirname() + proc_program_prefix() + "yosys-abc"; | ||||||
| #endif | #endif | ||||||
| 		std::string script_file, liberty_file, constr_file, clk_str; | 		std::string script_file, liberty_file, constr_file, clk_str; | ||||||
| 		std::string delay_target, sop_inputs, sop_products, lutin_shared = "-S 1"; | 		std::string delay_target, sop_inputs, sop_products, lutin_shared = "-S 1"; | ||||||
|  | @ -1509,8 +1509,8 @@ struct AbcPass : public Pass { | ||||||
| 
 | 
 | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| #ifndef ABCEXTERNAL | #ifndef ABCEXTERNAL | ||||||
| 		if (!check_file_exists(exe_file + ".exe") && check_file_exists(proc_self_dirname() + "..\\yosys-abc.exe")) | 		if (!check_file_exists(exe_file + ".exe") && check_file_exists(proc_self_dirname() + "..\\" + proc_program_prefix()+ "yosys-abc.exe")) | ||||||
| 			exe_file = proc_self_dirname() + "..\\yosys-abc"; | 			exe_file = proc_self_dirname() + "..\\" + proc_program_prefix() + "yosys-abc"; | ||||||
| #endif | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -100,7 +100,7 @@ struct Abc9Pass : public ScriptPass | ||||||
| #ifdef ABCEXTERNAL | #ifdef ABCEXTERNAL | ||||||
| 		log("        use the specified command instead of \"" ABCEXTERNAL "\" to execute ABC.\n"); | 		log("        use the specified command instead of \"" ABCEXTERNAL "\" to execute ABC.\n"); | ||||||
| #else | #else | ||||||
| 		log("        use the specified command instead of \"<yosys-bindir>/yosys-abc\" to execute ABC.\n"); | 		log("        use the specified command instead of \"<yosys-bindir>/%syosys-abc\" to execute ABC.\n", proc_program_prefix().c_str()); | ||||||
| #endif | #endif | ||||||
| 		log("        This can e.g. be used to call a specific version of ABC or a wrapper.\n"); | 		log("        This can e.g. be used to call a specific version of ABC or a wrapper.\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
|  | @ -326,7 +326,7 @@ struct Abc9Pass : public ScriptPass | ||||||
| 					if (!active_design->selected_whole_module(mod)) | 					if (!active_design->selected_whole_module(mod)) | ||||||
| 						log_error("Can't handle partially selected module %s!\n", log_id(mod)); | 						log_error("Can't handle partially selected module %s!\n", log_id(mod)); | ||||||
| 
 | 
 | ||||||
| 					std::string tempdir_name = "/tmp/yosys-abc-XXXXXX"; | 					std::string tempdir_name = "/tmp/" + proc_program_prefix() + "yosys-abc-XXXXXX"; | ||||||
| 					if (!cleanup) | 					if (!cleanup) | ||||||
| 						tempdir_name[0] = tempdir_name[4] = '_'; | 						tempdir_name[0] = tempdir_name[4] = '_'; | ||||||
| 					tempdir_name = make_temp_dir(tempdir_name); | 					tempdir_name = make_temp_dir(tempdir_name); | ||||||
|  |  | ||||||
|  | @ -293,7 +293,7 @@ struct Abc9ExePass : public Pass { | ||||||
| #ifdef ABCEXTERNAL | #ifdef ABCEXTERNAL | ||||||
| 		log("        use the specified command instead of \"" ABCEXTERNAL "\" to execute ABC.\n"); | 		log("        use the specified command instead of \"" ABCEXTERNAL "\" to execute ABC.\n"); | ||||||
| #else | #else | ||||||
| 		log("        use the specified command instead of \"<yosys-bindir>/yosys-abc\" to execute ABC.\n"); | 		log("        use the specified command instead of \"<yosys-bindir>/%syosys-abc\" to execute ABC.\n", proc_program_prefix().c_str()); | ||||||
| #endif | #endif | ||||||
| 		log("        This can e.g. be used to call a specific version of ABC or a wrapper.\n"); | 		log("        This can e.g. be used to call a specific version of ABC or a wrapper.\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
|  | @ -367,7 +367,7 @@ struct Abc9ExePass : public Pass { | ||||||
| #ifdef ABCEXTERNAL | #ifdef ABCEXTERNAL | ||||||
| 		std::string exe_file = ABCEXTERNAL; | 		std::string exe_file = ABCEXTERNAL; | ||||||
| #else | #else | ||||||
| 		std::string exe_file = proc_self_dirname() + "yosys-abc"; | 		std::string exe_file = proc_self_dirname() + proc_program_prefix()+ "yosys-abc"; | ||||||
| #endif | #endif | ||||||
| 		std::string script_file, clk_str, box_file, lut_file; | 		std::string script_file, clk_str, box_file, lut_file; | ||||||
| 		std::string delay_target, lutin_shared = "-S 1", wire_delay; | 		std::string delay_target, lutin_shared = "-S 1", wire_delay; | ||||||
|  | @ -383,8 +383,8 @@ struct Abc9ExePass : public Pass { | ||||||
| 
 | 
 | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| #ifndef ABCEXTERNAL | #ifndef ABCEXTERNAL | ||||||
| 		if (!check_file_exists(exe_file + ".exe") && check_file_exists(proc_self_dirname() + "..\\yosys-abc.exe")) | 		if (!check_file_exists(exe_file + ".exe") && check_file_exists(proc_self_dirname() + "..\\" + proc_program_prefix() + "yosys-abc.exe")) | ||||||
| 			exe_file = proc_self_dirname() + "..\\yosys-abc"; | 			exe_file = proc_self_dirname() + "..\\" + proc_program_prefix() + "yosys-abc"; | ||||||
| #endif | #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue