12 # features (the more the better)
21 DISABLE_VERIFIC_EXTENSIONS
:= 0
22 DISABLE_VERIFIC_VHDL
:= 0
31 # other configuration flags
37 # sccache is not always a drop-in replacement for ccache in practice
42 # Needed for environments that can't run executables (i.e. emscripten, wasm)
44 # Needed for environments that don't have proper thread support (i.e. emscripten, wasm--for now)
45 DISABLE_ABC_THREADS
:= 0
51 # SANITIZER = undefined
56 OS
:= $(shell uname
-s
)
60 ifneq ($(wildcard Makefile.conf
),)
64 ifeq ($(ENABLE_PYOSYS
),1)
68 BINDIR
:= $(PREFIX
)/bin
69 LIBDIR
:= $(PREFIX
)/lib
/$(PROGRAM_PREFIX
)yosys
70 DATDIR
:= $(PREFIX
)/share
/$(PROGRAM_PREFIX
)yosys
77 TARGETS
= $(PROGRAM_PREFIX
)yosys
$(EXE
) $(PROGRAM_PREFIX
)yosys-config
83 UNITESTPATH
:= tests
/unit
87 YOSYS_SRC
:= $(dir $(firstword $(MAKEFILE_LIST
)))
91 CXXFLAGS
:= $(CXXFLAGS
) -Wall
-Wextra
-ggdb
-I.
-I
"$(YOSYS_SRC)" -MD
-MP
-D_YOSYS_
-fPIC
-I
$(PREFIX
)/include
92 LDLIBS
:= $(LDLIBS
) -lstdc
++ -lm
95 PKG_CONFIG ?
= pkg-config
102 PLUGIN_LDFLAGS
+= -undefined dynamic_lookup
104 # homebrew search paths
105 ifneq ($(shell :; command
-v brew
),)
106 BREW_PREFIX
:= $(shell brew
--prefix)/opt
107 $(info $$BREW_PREFIX is
[${BREW_PREFIX}])
108 ifeq ($(ENABLE_PYOSYS
),1)
109 CXXFLAGS
+= -I
$(BREW_PREFIX
)/boost
/include/boost
110 LDFLAGS
+= -L
$(BREW_PREFIX
)/boost
/lib
112 CXXFLAGS
+= -I
$(BREW_PREFIX
)/readline
/include
113 LDFLAGS
+= -L
$(BREW_PREFIX
)/readline
/lib
114 PKG_CONFIG_PATH
:= $(BREW_PREFIX
)/libffi
/lib
/pkgconfig
:$(PKG_CONFIG_PATH
)
115 PKG_CONFIG_PATH
:= $(BREW_PREFIX
)/tcl-tk
/lib
/pkgconfig
:$(PKG_CONFIG_PATH
)
116 export PATH
:= $(BREW_PREFIX
)/bison
/bin
:$(BREW_PREFIX
)/gettext
/bin
:$(BREW_PREFIX
)/flex
/bin
:$(PATH
)
118 # macports search paths
119 else ifneq ($(shell :; command
-v port
),)
120 PORT_PREFIX
:= $(patsubst %/bin
/port
,%,$(shell :; command
-v port
))
121 CXXFLAGS
+= -I
$(PORT_PREFIX
)/include
122 LDFLAGS
+= -L
$(PORT_PREFIX
)/lib
123 PKG_CONFIG_PATH
:= $(PORT_PREFIX
)/lib
/pkgconfig
:$(PKG_CONFIG_PATH
)
124 export PATH
:= $(PORT_PREFIX
)/bin
:$(PATH
)
134 # Note: We arrange for .gitcommit to contain the (short) commit hash in
135 # tarballs generated with git-archive(1) using .gitattributes. The git repo
136 # will have this file in its unexpanded form tough, in which case we fall
137 # back to calling git directly.
138 TARBALL_GIT_REV
:= $(shell cat
$(YOSYS_SRC
)/.gitcommit
)
139 ifeq ($(TARBALL_GIT_REV
),$$Format:%h
$$)
140 GIT_REV
:= $(shell git ls-remote
$(YOSYS_SRC
) HEAD
-q |
$(AWK
) 'BEGIN {R = "UNKNOWN"}; ($$2 == "HEAD") {R = substr($$1, 1, 9); exit} END {print R}')
142 GIT_REV
:= $(TARBALL_GIT_REV
)
145 OBJS
= kernel
/version_
$(GIT_REV
).o
148 sed
-i
"/^YOSYS_VER := / s/+[0-9][0-9]*$$/+`git log --oneline 6f9602b.. | wc -l`/;" Makefile
150 # set 'ABCREV = default' to use abc/ as it is
152 # Note: If you do ABC development, make sure that 'abc' in this directory
153 # is just a symlink to your actual ABC working directory, as 'make mrproper'
154 # will remove the 'abc' directory and you do not want to accidentally
155 # delete your work on ABC..
158 ABCURL ?
= https
://github.com
/YosysHQ
/abc
159 ABCMKARGS
= CC
="$(CXX)" CXX
="$(CXX)" ABC_USE_LIBSTDCXX
=1 VERBOSE
=$(Q
)
161 # set ABCEXTERNAL = <abc-command> to use an external ABC instance
162 # Note: The in-tree ABC (yosys-abc) will not be installed when ABCEXTERNAL is set.
170 ifneq ($(wildcard Makefile.conf
),)
171 # don't echo Makefile.conf contents when invoked to print source versions
172 ifeq ($(findstring echo-
,$(MAKECMDGOALS
)),)
173 $(info $(subst $$--$$,$(newline
),$(shell sed
's,^,[Makefile.conf] ,; s,$$,$$--$$,;' < Makefile.conf | tr
-d
'\n' | sed
's,\$$--\$$$$,,')))
175 include Makefile.conf
178 PYTHON_EXECUTABLE
:= $(shell if python3
-c
""; then echo
"python3"; else echo
"python"; fi
)
179 ifeq ($(ENABLE_PYOSYS
),1)
180 PYTHON_VERSION_TESTCODE
:= "import sys;t='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));print(t)"
181 PYTHON_VERSION
:= $(shell $(PYTHON_EXECUTABLE
) -c
""$(PYTHON_VERSION_TESTCODE
)"")
182 PYTHON_MAJOR_VERSION
:= $(shell echo
$(PYTHON_VERSION
) | cut
-f1
-d.
)
184 ENABLE_PYTHON_CONFIG_EMBED ?
= $(shell $(PYTHON_EXECUTABLE
)-config
--embed
--libs
> /dev
/null
&& echo
1)
185 ifeq ($(ENABLE_PYTHON_CONFIG_EMBED
),1)
186 PYTHON_CONFIG
:= $(PYTHON_EXECUTABLE
)-config
--embed
188 PYTHON_CONFIG
:= $(PYTHON_EXECUTABLE
)-config
191 PYTHON_DESTDIR
:= $(shell $(PYTHON_EXECUTABLE
) -c
"import site; print(site.getsitepackages()[-1]);")
193 # Reload Makefile.conf to override python specific variables if defined
194 ifneq ($(wildcard Makefile.conf
),)
195 include Makefile.conf
200 ifeq ($(CONFIG
),clang
)
203 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
204 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H"
206 ifneq ($(SANITIZER
),)
207 $(info [Clang Sanitizer
] $(SANITIZER
))
208 CXXFLAGS
+= -g
-O1
-fno-omit-frame-pointer
-fno-optimize-sibling-calls
-fsanitize
=$(SANITIZER
)
209 LDFLAGS
+= -g
-fsanitize
=$(SANITIZER
)
210 ifneq ($(findstring address
,$(SANITIZER
)),)
213 ifneq ($(findstring memory
,$(SANITIZER
)),)
214 CXXFLAGS
+= -fPIE
-fsanitize-memory-track-origins
215 LDFLAGS
+= -fPIE
-fsanitize-memory-track-origins
217 ifneq ($(findstring cfi
,$(SANITIZER
)),)
223 else ifeq ($(CONFIG
),gcc
)
226 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
227 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H"
229 else ifeq ($(CONFIG
),gcc-static
)
231 LDFLAGS
:= $(filter-out -rdynamic
,$(LDFLAGS
)) -static
232 LDLIBS
:= $(filter-out -lrt
,$(LDLIBS
))
233 CXXFLAGS
:= $(filter-out -fPIC
,$(CXXFLAGS
))
234 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
235 ABCMKARGS
= CC
="$(CC)" CXX
="$(CXX)" LD
="$(LD)" ABC_USE_LIBSTDCXX
=1 LIBS
="-lm -lpthread -static" OPTFLAGS
="-O" \
236 ARCHFLAGS
="-DABC_USE_STDINT_H -DABC_NO_DYNAMIC_LINKING=1 -Wno-unused-but-set-variable $(ARCHFLAGS)" ABC_USE_NO_READLINE
=1
237 ifeq ($(DISABLE_ABC_THREADS
),1)
238 ABCMKARGS
+= "ABC_USE_NO_PTHREADS=1"
241 else ifeq ($(CONFIG
),gcc-4.8
)
244 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
245 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H"
247 else ifeq ($(CONFIG
),afl-gcc
)
248 CXX
= AFL_QUIET
=1 AFL_HARDEN
=1 afl-gcc
249 LD
= AFL_QUIET
=1 AFL_HARDEN
=1 afl-gcc
250 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
251 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H"
253 else ifeq ($(CONFIG
),cygwin
)
256 CXXFLAGS
+= -std
=gnu
++11 -Os
257 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H"
259 else ifeq ($(CONFIG
),emcc
)
262 CXXFLAGS
:= -std
=$(CXXSTD
) $(filter-out -fPIC
-ggdb
,$(CXXFLAGS
))
263 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H -DABC_MEMALIGN=8"
264 EMCC_CXXFLAGS
:= -Os
-Wno-warn-absolute-paths
265 EMCC_LDFLAGS
:= --memory-init-file
0 --embed-file share
266 EMCC_LDFLAGS
+= -s NO_EXIT_RUNTIME
=1
267 EMCC_LDFLAGS
+= -s EXPORTED_FUNCTIONS
="['_main','_run','_prompt','_errmsg','_memset']"
268 EMCC_LDFLAGS
+= -s TOTAL_MEMORY
=134217728
269 EMCC_LDFLAGS
+= -s EXPORTED_RUNTIME_METHODS
='["ccall", "cwrap"]'
270 # https://github.com/kripken/emscripten/blob/master/src/settings.js
271 CXXFLAGS
+= $(EMCC_CXXFLAGS
)
272 LDFLAGS
+= $(EMCC_LDFLAGS
)
278 TARGETS
:= $(filter-out $(PROGRAM_PREFIX
)yosys-config
,$(TARGETS
))
279 EXTRA_TARGETS
+= yosysjs-
$(YOSYS_VER
).zip
281 ifeq ($(ENABLE_ABC
),1)
283 DISABLE_ABC_THREADS
:= 1
287 wget
-O viz.js.part https
://github.com
/mdaines
/viz.js
/releases
/download
/0.0.3/viz.js
288 mv viz.js.part viz.js
290 yosysjs-
$(YOSYS_VER
).zip
: yosys.js viz.js misc
/yosysjs
/*
291 rm -rf yosysjs-
$(YOSYS_VER
) yosysjs-
$(YOSYS_VER
).zip
292 mkdir
-p yosysjs-
$(YOSYS_VER
)
293 cp viz.js misc
/yosysjs
/* yosys.js yosys.wasm yosysjs-
$(YOSYS_VER
)/
294 zip
-r yosysjs-
$(YOSYS_VER
).zip yosysjs-
$(YOSYS_VER
)
296 yosys.html
: misc
/yosys.html
297 $(P
) cp misc
/yosys.html yosys.html
299 else ifeq ($(CONFIG
),wasi
)
305 WASIFLAGS
:= -target wasm32-wasi
--sysroot
$(WASI_SYSROOT
) $(WASIFLAGS
)
307 CXX
= $(WASI_SDK
)/bin
/clang
308 LD
= $(WASI_SDK
)/bin
/clang
++
309 AR
= $(WASI_SDK
)/bin
/ar
310 RANLIB
= $(WASI_SDK
)/bin
/ranlib
311 WASIFLAGS
:= --sysroot
$(WASI_SDK
)/share
/wasi-sysroot
$(WASIFLAGS
)
313 CXXFLAGS
:= $(WASIFLAGS
) -std
=$(CXXSTD
) -Os
$(filter-out -fPIC
,$(CXXFLAGS
))
314 LDFLAGS
:= $(WASIFLAGS
) -Wl
,-z
,stack-size
=1048576 $(filter-out -rdynamic
,$(LDFLAGS
))
315 LDLIBS
:= $(filter-out -lrt
,$(LDLIBS
))
316 ABCMKARGS
+= AR
="$(AR)" RANLIB
="$(RANLIB)"
317 ABCMKARGS
+= ARCHFLAGS
="$(WASIFLAGS) -DABC_USE_STDINT_H -DABC_NO_DYNAMIC_LINKING"
318 ABCMKARGS
+= OPTFLAGS
="-Os"
323 ifeq ($(ENABLE_ABC
),1)
325 DISABLE_ABC_THREADS
:= 1
328 else ifeq ($(CONFIG
),mxe
)
329 PKG_CONFIG
= /usr
/local
/src
/mxe
/usr
/bin
/i686-w64-mingw32.static-pkg-config
330 CXX
= /usr
/local
/src
/mxe
/usr
/bin
/i686-w64-mingw32.static-g
++
331 LD
= /usr
/local
/src
/mxe
/usr
/bin
/i686-w64-mingw32.static-g
++
332 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
-D_POSIX_SOURCE
-DYOSYS_MXE_HACKS
-Wno-attributes
333 CXXFLAGS
:= $(filter-out -fPIC
,$(CXXFLAGS
))
334 LDFLAGS
:= $(filter-out -rdynamic
,$(LDFLAGS
)) -s
335 LDLIBS
:= $(filter-out -lrt
,$(LDLIBS
))
336 ABCMKARGS
+= ARCHFLAGS
="-DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w"
337 # TODO: Try to solve pthread linking issue in more appropriate way
338 ABCMKARGS
+= LIBS
="lib/x86/pthreadVC2.lib -s" LDFLAGS
="-Wl,--allow-multiple-definition" ABC_USE_NO_READLINE
=1 CC
="/usr/local/src/mxe/usr/bin/i686-w64-mingw32.static-gcc"
341 else ifeq ($(CONFIG
),msys2-32
)
342 CXX
= i686-w64-mingw32-g
++
343 LD
= i686-w64-mingw32-g
++
344 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
-D_POSIX_SOURCE
-DYOSYS_WIN32_UNIX_DIR
345 CXXFLAGS
:= $(filter-out -fPIC
,$(CXXFLAGS
))
346 LDFLAGS
:= $(filter-out -rdynamic
,$(LDFLAGS
)) -s
347 LDLIBS
:= $(filter-out -lrt
,$(LDLIBS
))
348 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H -DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w"
349 ABCMKARGS
+= LIBS
="-lpthread -s" ABC_USE_NO_READLINE
=0 CC
="i686-w64-mingw32-gcc" CXX
="$(CXX)"
352 else ifeq ($(CONFIG
),msys2-64
)
353 CXX
= x86_64-w64-mingw32-g
++
354 LD
= x86_64-w64-mingw32-g
++
355 CXXFLAGS
+= -std
=$(CXXSTD
) -Os
-D_POSIX_SOURCE
-DYOSYS_WIN32_UNIX_DIR
356 CXXFLAGS
:= $(filter-out -fPIC
,$(CXXFLAGS
))
357 LDFLAGS
:= $(filter-out -rdynamic
,$(LDFLAGS
)) -s
358 LDLIBS
:= $(filter-out -lrt
,$(LDLIBS
))
359 ABCMKARGS
+= ARCHFLAGS
="-DABC_USE_STDINT_H -DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w"
360 ABCMKARGS
+= LIBS
="-lpthread -s" ABC_USE_NO_READLINE
=0 CC
="x86_64-w64-mingw32-gcc" CXX
="$(CXX)"
363 else ifneq ($(CONFIG
),none
)
364 $(error Invalid CONFIG setting
'$(CONFIG)'. Valid values
: clang
, gcc
, gcc-4.8
, emcc
, mxe
, msys2-32
, msys2-64
)
367 ifeq ($(ENABLE_LIBYOSYS
),1)
368 TARGETS
+= libyosys.so
371 ifeq ($(ENABLE_PYOSYS
),1)
372 # Detect name of boost_python library. Some distros use boost_python-py<version>, other boost_python<version>, some only use the major version number, some a concatenation of major and minor version numbers
373 CHECK_BOOST_PYTHON
= (echo
"int main(int argc, char ** argv) {return 0;}" |
$(CXX
) -xc
-o
/dev
/null
$(shell $(PYTHON_CONFIG
) --ldflags) -l
$(1) - > /dev
/null
2>&1 && echo
"-l$(1)")
374 BOOST_PYTHON_LIB ?
= $(shell \
375 $(call CHECK_BOOST_PYTHON
,boost_python-py
$(subst .
,,$(PYTHON_VERSION
))) || \
376 $(call CHECK_BOOST_PYTHON
,boost_python-py
$(PYTHON_MAJOR_VERSION
)) || \
377 $(call CHECK_BOOST_PYTHON
,boost_python
$(subst .
,,$(PYTHON_VERSION
))) || \
378 $(call CHECK_BOOST_PYTHON
,boost_python
$(PYTHON_MAJOR_VERSION
)) \
381 ifeq ($(BOOST_PYTHON_LIB
),)
382 $(error BOOST_PYTHON_LIB could not be detected. Please
define manually
)
385 LDLIBS
+= $(shell $(PYTHON_CONFIG
) --libs
) $(BOOST_PYTHON_LIB
) -lboost_system
-lboost_filesystem
386 # python-config --ldflags includes LDLIBS for some reason
387 LDFLAGS
+= $(filter-out -l
%,$(shell $(PYTHON_CONFIG
) --ldflags))
388 CXXFLAGS
+= $(shell $(PYTHON_CONFIG
) --includes
) -DWITH_PYTHON
390 PY_WRAPPER_FILE
= kernel
/python_wrappers
391 OBJS
+= $(PY_WRAPPER_FILE
).o
392 PY_GEN_SCRIPT
= py_wrap_generator
393 PY_WRAP_INCLUDES
:= $(shell python
$(PYTHON_VERSION
) -c
"from misc import $(PY_GEN_SCRIPT); $(PY_GEN_SCRIPT).print_includes()")
394 endif # ENABLE_PYOSYS
396 ifeq ($(ENABLE_READLINE
),1)
397 CXXFLAGS
+= -DYOSYS_ENABLE_READLINE
398 ifeq ($(OS
), FreeBSD
)
399 CXXFLAGS
+= -I
/usr
/local
/include
402 ifeq ($(LINK_CURSES
),1)
404 ABCMKARGS
+= "ABC_READLINE_LIBRARIES=-lcurses -lreadline"
406 ifeq ($(LINK_TERMCAP
),1)
408 ABCMKARGS
+= "ABC_READLINE_LIBRARIES=-lreadline -ltermcap"
414 ifeq ($(ENABLE_EDITLINE
),1)
415 CXXFLAGS
+= -DYOSYS_ENABLE_EDITLINE
416 LDLIBS
+= -ledit
-ltinfo
-lbsd
418 ABCMKARGS
+= "ABC_USE_NO_READLINE=1"
422 ifeq ($(DISABLE_ABC_THREADS
),1)
423 ABCMKARGS
+= "ABC_USE_NO_PTHREADS=1"
426 ifeq ($(DISABLE_SPAWN
),1)
427 CXXFLAGS
+= -DYOSYS_DISABLE_SPAWN
430 ifeq ($(ENABLE_PLUGINS
),1)
431 CXXFLAGS
+= $(shell PKG_CONFIG_PATH
=$(PKG_CONFIG_PATH
) $(PKG_CONFIG
) --silence-errors
--cflags libffi
) -DYOSYS_ENABLE_PLUGINS
432 LDLIBS
+= $(shell PKG_CONFIG_PATH
=$(PKG_CONFIG_PATH
) $(PKG_CONFIG
) --silence-errors
--libs libffi || echo
-lffi
)
433 ifneq ($(OS
), FreeBSD
)
438 ifeq ($(ENABLE_GLOB
),1)
439 CXXFLAGS
+= -DYOSYS_ENABLE_GLOB
442 ifeq ($(ENABLE_ZLIB
),1)
443 CXXFLAGS
+= -DYOSYS_ENABLE_ZLIB
448 ifeq ($(ENABLE_TCL
),1)
449 TCL_VERSION ?
= tcl
$(shell bash
-c
"tclsh <(echo 'puts [info tclversion]')")
450 ifeq ($(OS
), FreeBSD
)
451 TCL_INCLUDE ?
= /usr
/local
/include/$(TCL_VERSION
)
453 TCL_INCLUDE ?
= /usr
/include/$(TCL_VERSION
)
457 CXXFLAGS
+= -DYOSYS_ENABLE_TCL
458 LDLIBS
+= -ltcl86
-lwsock32
-lws2_32
-lnetapi32
-lz
-luserenv
460 CXXFLAGS
+= $(shell PKG_CONFIG_PATH
=$(PKG_CONFIG_PATH
) $(PKG_CONFIG
) --silence-errors
--cflags tcl || echo
-I
$(TCL_INCLUDE
)) -DYOSYS_ENABLE_TCL
461 ifeq ($(OS
), FreeBSD
)
462 # FreeBSD uses tcl8.6, but lib is named "libtcl86"
463 LDLIBS
+= $(shell PKG_CONFIG_PATH
=$(PKG_CONFIG_PATH
) $(PKG_CONFIG
) --silence-errors
--libs tcl || echo
-l
$(TCL_VERSION
) | tr
-d
'.')
465 LDLIBS
+= $(shell PKG_CONFIG_PATH
=$(PKG_CONFIG_PATH
) $(PKG_CONFIG
) --silence-errors
--libs tcl || echo
-l
$(TCL_VERSION
))
470 ifeq ($(ENABLE_GCOV
),1)
471 CXXFLAGS
+= --coverage
472 LDFLAGS
+= --coverage
475 ifeq ($(ENABLE_GPROF
),1)
480 ifeq ($(ENABLE_NDEBUG
),1)
481 CXXFLAGS
:= -O3
-DNDEBUG
$(filter-out -Os
-ggdb
,$(CXXFLAGS
))
484 ifeq ($(ENABLE_DEBUG
),1)
485 ifeq ($(CONFIG
),clang
)
486 CXXFLAGS
:= -O0
-DDEBUG
$(filter-out -Os
,$(CXXFLAGS
))
488 CXXFLAGS
:= -Og
-DDEBUG
$(filter-out -Os
,$(CXXFLAGS
))
492 ifeq ($(ENABLE_ABC
),1)
493 CXXFLAGS
+= -DYOSYS_ENABLE_ABC
495 CXXFLAGS
+= -DYOSYS_LINK_ABC
496 ifeq ($(DISABLE_ABC_THREADS
),0)
500 ifeq ($(ABCEXTERNAL
),)
501 TARGETS
+= $(PROGRAM_PREFIX
)yosys-abc
$(EXE
)
506 ifeq ($(ENABLE_GHDL
),1)
507 GHDL_PREFIX ?
= $(PREFIX
)
508 GHDL_INCLUDE_DIR ?
= $(GHDL_PREFIX
)/include
509 GHDL_LIB_DIR ?
= $(GHDL_PREFIX
)/lib
510 CXXFLAGS
+= -I
$(GHDL_INCLUDE_DIR
) -DYOSYS_ENABLE_GHDL
511 LDLIBS
+= $(GHDL_LIB_DIR
)/libghdl.a
$(file
<$(GHDL_LIB_DIR
)/libghdl.link
)
514 ifeq ($(ENABLE_VERIFIC
),1)
515 VERIFIC_DIR ?
= /usr
/local
/src
/verific_lib
516 VERIFIC_COMPONENTS ?
= verilog database util containers hier_tree
517 ifneq ($(DISABLE_VERIFIC_VHDL
),1)
518 VERIFIC_COMPONENTS
+= vhdl
519 CXXFLAGS
+= -DVERIFIC_VHDL_SUPPORT
521 ifneq ($(wildcard $(VERIFIC_DIR
)/vhdl
),)
522 VERIFIC_COMPONENTS
+= vhdl
525 ifneq ($(DISABLE_VERIFIC_EXTENSIONS
),1)
526 VERIFIC_COMPONENTS
+= extensions
527 CXXFLAGS
+= -DYOSYSHQ_VERIFIC_EXTENSIONS
529 CXXFLAGS
+= $(patsubst %,-I
$(VERIFIC_DIR
)/%,$(VERIFIC_COMPONENTS
)) -DYOSYS_ENABLE_VERIFIC
531 LDLIBS
+= $(patsubst %,$(VERIFIC_DIR
)/%/*-mac.a
,$(VERIFIC_COMPONENTS
)) -lz
533 LDLIBS
+= $(patsubst %,$(VERIFIC_DIR
)/%/*-linux.a
,$(VERIFIC_COMPONENTS
)) -lz
537 ifeq ($(ENABLE_PROTOBUF
),1)
538 LDLIBS
+= $(shell pkg-config
--cflags --libs protobuf
)
541 ifeq ($(ENABLE_COVER
),1)
542 CXXFLAGS
+= -DYOSYS_ENABLE_COVER
545 ifeq ($(ENABLE_CCACHE
),1)
548 ifeq ($(ENABLE_SCCACHE
),1)
549 CXX
:= sccache
$(CXX
)
553 define add_share_file
554 EXTRA_TARGETS
+= $(subst //,/,$(1)/$(notdir $(2)))
555 $(subst //,/,$(1)/$(notdir $(2))): $(2)
557 $$(Q
) cp
"$(YOSYS_SRC)"/$(2) $(subst //,/,$(1)/$(notdir $(2)))
560 define add_gen_share_file
561 EXTRA_TARGETS
+= $(subst //,/,$(1)/$(notdir $(2)))
562 $(subst //,/,$(1)/$(notdir $(2))): $(2)
564 $$(Q
) cp
$(2) $(subst //,/,$(1)/$(notdir $(2)))
567 define add_include_file
568 $(eval
$(call add_share_file
,$(dir share
/include/$(1)),$(1)))
571 define add_extra_objs
579 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; }'))
580 P_SHOW
= [$(shell $(AWK
) "BEGIN { N=$(words $(OBJS) $(PROGRAM_PREFIX)yosys$(EXE)); printf \"%3d\", $(P_OFFSET)+90*$(P_STATUS)/N; exit; }")%]
581 P
= @echo
"$(if $(findstring $@,$(TARGETS) $(EXTRA_TARGETS)),$(eval P_OFFSET = 10))$(call P_UPDATE)$(call P_SHOW) Building $@";
591 $(eval
$(call add_include_file
,kernel
/yosys.h
))
592 $(eval
$(call add_include_file
,kernel
/hashlib.h
))
593 $(eval
$(call add_include_file
,kernel
/log.h
))
594 $(eval
$(call add_include_file
,kernel
/rtlil.h
))
595 $(eval
$(call add_include_file
,kernel
/binding.h
))
596 $(eval
$(call add_include_file
,kernel
/register.h
))
597 $(eval
$(call add_include_file
,kernel
/celltypes.h
))
598 $(eval
$(call add_include_file
,kernel
/celledges.h
))
599 $(eval
$(call add_include_file
,kernel
/consteval.h
))
600 $(eval
$(call add_include_file
,kernel
/constids.inc
))
601 $(eval
$(call add_include_file
,kernel
/sigtools.h
))
602 $(eval
$(call add_include_file
,kernel
/modtools.h
))
603 $(eval
$(call add_include_file
,kernel
/macc.h
))
604 $(eval
$(call add_include_file
,kernel
/utils.h
))
605 $(eval
$(call add_include_file
,kernel
/satgen.h
))
606 $(eval
$(call add_include_file
,kernel
/qcsat.h
))
607 $(eval
$(call add_include_file
,kernel
/ff.h
))
608 $(eval
$(call add_include_file
,kernel
/ffinit.h
))
609 ifeq ($(ENABLE_ZLIB
),1)
610 $(eval
$(call add_include_file
,kernel
/fstdata.h
))
612 $(eval
$(call add_include_file
,kernel
/mem.h
))
613 $(eval
$(call add_include_file
,libs
/ezsat
/ezsat.h
))
614 $(eval
$(call add_include_file
,libs
/ezsat
/ezminisat.h
))
615 ifeq ($(ENABLE_ZLIB
),1)
616 $(eval
$(call add_include_file
,libs
/fst
/fstapi.h
))
618 $(eval
$(call add_include_file
,libs
/sha1
/sha1.h
))
619 $(eval
$(call add_include_file
,libs
/json11
/json11.hpp
))
620 $(eval
$(call add_include_file
,passes
/fsm
/fsmdata.h
))
621 $(eval
$(call add_include_file
,frontends
/ast
/ast.h
))
622 $(eval
$(call add_include_file
,frontends
/ast
/ast_binding.h
))
623 $(eval
$(call add_include_file
,frontends
/blif
/blifparse.h
))
624 $(eval
$(call add_include_file
,backends
/rtlil
/rtlil_backend.h
))
625 $(eval
$(call add_include_file
,backends
/cxxrtl
/cxxrtl.h
))
626 $(eval
$(call add_include_file
,backends
/cxxrtl
/cxxrtl_vcd.h
))
627 $(eval
$(call add_include_file
,backends
/cxxrtl
/cxxrtl_capi.
cc))
628 $(eval
$(call add_include_file
,backends
/cxxrtl
/cxxrtl_capi.h
))
629 $(eval
$(call add_include_file
,backends
/cxxrtl
/cxxrtl_vcd_capi.
cc))
630 $(eval
$(call add_include_file
,backends
/cxxrtl
/cxxrtl_vcd_capi.h
))
632 OBJS
+= kernel
/driver.o kernel
/register.o kernel
/rtlil.o kernel
/log.o kernel
/calc.o kernel
/yosys.o
633 OBJS
+= kernel
/binding.o
634 ifeq ($(ENABLE_ABC
),1)
635 ifneq ($(ABCEXTERNAL
),)
636 kernel
/yosys.o
: CXXFLAGS
+= -DABCEXTERNAL
='"$(ABCEXTERNAL)"'
639 OBJS
+= kernel
/cellaigs.o kernel
/celledges.o kernel
/satgen.o kernel
/qcsat.o kernel
/mem.o kernel
/ffmerge.o kernel
/ff.o
640 ifeq ($(ENABLE_ZLIB
),1)
641 OBJS
+= kernel
/fstdata.o
644 kernel
/log.o
: CXXFLAGS
+= -DYOSYS_SRC
='"$(YOSYS_SRC)"'
645 kernel
/yosys.o
: CXXFLAGS
+= -DYOSYS_DATDIR
='"$(DATDIR)"' -DYOSYS_PROGRAM_PREFIX
='"$(PROGRAM_PREFIX)"'
647 OBJS
+= libs
/bigint
/BigIntegerAlgorithms.o libs
/bigint
/BigInteger.o libs
/bigint
/BigIntegerUtils.o
648 OBJS
+= libs
/bigint
/BigUnsigned.o libs
/bigint
/BigUnsignedInABase.o
650 OBJS
+= libs
/sha1
/sha1.o
654 OBJS
+= libs
/json11
/json11.o
656 OBJS
+= libs
/subcircuit
/subcircuit.o
658 OBJS
+= libs
/ezsat
/ezsat.o
659 OBJS
+= libs
/ezsat
/ezminisat.o
661 OBJS
+= libs
/minisat
/Options.o
662 OBJS
+= libs
/minisat
/SimpSolver.o
663 OBJS
+= libs
/minisat
/Solver.o
664 OBJS
+= libs
/minisat
/System.o
666 ifeq ($(ENABLE_ZLIB
),1)
667 OBJS
+= libs
/fst
/fstapi.o
668 OBJS
+= libs
/fst
/fastlz.o
669 OBJS
+= libs
/fst
/lz4.o
672 include $(YOSYS_SRC
)/frontends
/*/Makefile.inc
673 include $(YOSYS_SRC
)/passes
/*/Makefile.inc
674 include $(YOSYS_SRC
)/backends
/*/Makefile.inc
675 include $(YOSYS_SRC
)/techlibs
/*/Makefile.inc
679 include $(YOSYS_SRC
)/frontends
/verilog
/Makefile.inc
680 include $(YOSYS_SRC
)/frontends
/rtlil
/Makefile.inc
681 include $(YOSYS_SRC
)/frontends
/ast
/Makefile.inc
682 include $(YOSYS_SRC
)/frontends
/blif
/Makefile.inc
684 OBJS
+= passes
/hierarchy
/hierarchy.o
685 OBJS
+= passes
/cmds
/select.o
686 OBJS
+= passes
/cmds
/show.o
687 OBJS
+= passes
/cmds
/stat.o
688 OBJS
+= passes
/cmds
/cover.o
689 OBJS
+= passes
/cmds
/design.o
690 OBJS
+= passes
/cmds
/plugin.o
692 include $(YOSYS_SRC
)/passes
/proc
/Makefile.inc
693 include $(YOSYS_SRC
)/passes
/opt
/Makefile.inc
694 include $(YOSYS_SRC
)/passes
/techmap
/Makefile.inc
696 include $(YOSYS_SRC
)/backends
/verilog
/Makefile.inc
697 include $(YOSYS_SRC
)/backends
/rtlil
/Makefile.inc
699 include $(YOSYS_SRC
)/techlibs
/common
/Makefile.inc
704 OBJS
+= $(PROGRAM_PREFIX
)yosys-libabc.a
707 # prevent the CXXFLAGS set by this Makefile from reaching abc/Makefile,
708 # especially the -MD flag which will break the build when CXX is clang
711 top-all
: $(TARGETS
) $(EXTRA_TARGETS
)
713 @echo
" Build successful."
716 ifeq ($(CONFIG
),emcc
)
717 yosys.js
: $(filter-out yosysjs-
$(YOSYS_VER
).zip
,$(EXTRA_TARGETS
))
720 $(PROGRAM_PREFIX
)yosys
$(EXE
): $(OBJS
)
721 $(P
) $(LD
) -o
$(PROGRAM_PREFIX
)yosys
$(EXE
) $(LDFLAGS
) $(OBJS
) $(LDLIBS
)
723 libyosys.so
: $(filter-out kernel
/driver.o
,$(OBJS
))
725 $(P
) $(LD
) -o libyosys.so
-shared
-Wl
,-install_name
,$(LIBDIR
)/libyosys.so
$(LDFLAGS
) $^
$(LDLIBS
)
727 $(P
) $(LD
) -o libyosys.so
-shared
-Wl
,-soname
,$(LIBDIR
)/libyosys.so
$(LDFLAGS
) $^
$(LDLIBS
)
731 $(Q
) mkdir
-p
$(dir $@
)
732 $(P
) $(CXX
) -o
$@
-c
$(CPPFLAGS
) $(CXXFLAGS
) $<
735 $(Q
) mkdir
-p
$(dir $@
)
736 $(P
) cat
$< | grep
-E
-v
"#[ ]*(include|error)" |
$(LD
) $(CXXFLAGS
) -x c
++ -o
$@
-E
-P
-
738 ifeq ($(ENABLE_PYOSYS
),1)
739 $(PY_WRAPPER_FILE
).
cc: misc
/$(PY_GEN_SCRIPT
).py
$(PY_WRAP_INCLUDES
)
740 $(Q
) mkdir
-p
$(dir $@
)
741 $(P
) python
$(PYTHON_VERSION
) -c
"from misc import $(PY_GEN_SCRIPT); $(PY_GEN_SCRIPT).gen_wrappers(\"$(PY_WRAPPER_FILE).cc\")"
745 $(Q
) mkdir
-p
$(dir $@
)
746 $(P
) $(CXX
) -o
$@
-c
$(CPPFLAGS
) $(CXXFLAGS
) $<
748 YOSYS_VER_STR
:= Yosys
$(YOSYS_VER
) (git sha1
$(GIT_REV
), $(notdir $(CXX
)) $(shell \
749 $(CXX
) --version | tr
' ()' '\n' | grep
'^[0-9]' | head
-n1
) $(filter -f
% -m
% -O
% -DNDEBUG
,$(CXXFLAGS
)))
751 kernel
/version_
$(GIT_REV
).
cc: $(YOSYS_SRC
)/Makefile
752 $(P
) rm -f kernel
/version_
*.o kernel
/version_
*.d kernel
/version_
*.
cc
753 $(Q
) mkdir
-p kernel
&& echo
"namespace Yosys { extern const char *yosys_version_str; const char *yosys_version_str=\"$(YOSYS_VER_STR)\"; }" > kernel
/version_
$(GIT_REV
).
cc
755 ifeq ($(ENABLE_VERIFIC
),1)
756 CXXFLAGS_NOVERIFIC
= $(foreach v
,$(CXXFLAGS
),$(if
$(findstring $(VERIFIC_DIR
),$(v
)),,$(v
)))
757 LDLIBS_NOVERIFIC
= $(foreach v
,$(LDLIBS
),$(if
$(findstring $(VERIFIC_DIR
),$(v
)),,$(v
)))
759 CXXFLAGS_NOVERIFIC
= $(CXXFLAGS
)
760 LDLIBS_NOVERIFIC
= $(LDLIBS
)
763 $(PROGRAM_PREFIX
)yosys-config
: misc
/yosys-config.in
764 $(P
) $(SED
) -e
's#@CXXFLAGS@#$(subst -I. -I"$(YOSYS_SRC)",-I"$(DATDIR)/include",$(strip $(CXXFLAGS_NOVERIFIC)))#;' \
765 -e
's#@CXX@#$(strip $(CXX))#;' -e
's#@LDFLAGS@#$(strip $(LDFLAGS) $(PLUGIN_LDFLAGS))#;' -e
's#@LDLIBS@#$(strip $(LDLIBS_NOVERIFIC))#;' \
766 -e
's#@BINDIR@#$(strip $(BINDIR))#;' -e
's#@DATDIR@#$(strip $(DATDIR))#;' < $< > $(PROGRAM_PREFIX
)yosys-config
767 $(Q
) chmod
+x
$(PROGRAM_PREFIX
)yosys-config
769 abc
/abc-
$(ABCREV
)$(EXE
) abc
/libabc-
$(ABCREV
).a
:
771 ifneq ($(ABCREV
),default
)
772 $(Q
) if
test -d abc
/.hg
; then \
773 echo
'REEBE: NOP qverpgbel vf n ut jbexvat pbcl! Erzbir nop/ naq er-eha "znxr".' | tr
'A-Za-z' 'N-ZA-Mn-za-m'; false
; \
775 $(Q
) if
test -d abc
&& ! git
-C abc diff-index
--quiet HEAD
; then \
776 echo
'REEBE: NOP pbagnvaf ybpny zbqvsvpngvbaf! Frg NOPERI=qrsnhyg va Lbflf Znxrsvyr!' | tr
'A-Za-z' 'N-ZA-Mn-za-m'; false
; \
778 # set a variable so the test fails if git fails to run - when comparing outputs directly, empty string would match empty string
779 $(Q
) if
! (cd abc
2> /dev
/null
&& rev
="`git rev-parse $(ABCREV)`" && test "`git rev-parse HEAD`" == "$$rev"); then \
780 test $(ABCPULL
) -ne
0 ||
{ echo
'REEBE: NOP abg hc gb qngr naq NOPCHYY frg gb 0 va Znxrsvyr!' | tr
'A-Za-z' 'N-ZA-Mn-za-m'; exit
1; }; \
781 echo
"Pulling ABC from $(ABCURL):"; set
-x
; \
782 test -d abc || git clone
$(ABCURL
) abc
; \
783 cd abc
&& $(MAKE
) DEP
= clean && git fetch
$(ABCURL
) && git checkout
$(ABCREV
); \
786 $(Q
) rm -f abc
/abc-
[0-9a-f
]*
787 $(Q
) $(MAKE
) -C abc
$(S
) $(ABCMKARGS
) $(if
$(filter %.a
,$@
),PROG
="abc-$(ABCREV)",PROG
="abc-$(ABCREV)$(EXE)") MSG_PREFIX
="$(eval P_OFFSET = 5)$(call P_SHOW)$(eval P_OFFSET = 10) ABC: " $(if
$(filter %.a
,$@
),libabc-
$(ABCREV
).a
)
789 ifeq ($(ABCREV
),default
)
790 .PHONY
: abc
/abc-
$(ABCREV
)$(EXE
)
791 .PHONY
: abc
/libabc-
$(ABCREV
).a
794 $(PROGRAM_PREFIX
)yosys-abc
$(EXE
): abc
/abc-
$(ABCREV
)$(EXE
)
795 $(P
) cp abc
/abc-
$(ABCREV
)$(EXE
) $(PROGRAM_PREFIX
)yosys-abc
$(EXE
)
797 $(PROGRAM_PREFIX
)yosys-libabc.a
: abc
/libabc-
$(ABCREV
).a
798 $(P
) cp abc
/libabc-
$(ABCREV
).a
$(PROGRAM_PREFIX
)yosys-libabc.a
806 ifneq ($(ABCEXTERNAL
),)
807 ABCOPT
="-A $(ABCEXTERNAL)"
812 test: $(TARGETS
) $(EXTRA_TARGETS
)
813 +cd tests
/simple
&& bash run-test.sh
$(SEEDOPT
)
814 +cd tests
/simple_abc9
&& bash run-test.sh
$(SEEDOPT
)
815 +cd tests
/hana
&& bash run-test.sh
$(SEEDOPT
)
816 +cd tests
/asicworld
&& bash run-test.sh
$(SEEDOPT
)
817 # +cd tests/realmath && bash run-test.sh $(SEEDOPT)
818 +cd tests
/share
&& bash run-test.sh
$(SEEDOPT
)
819 +cd tests
/opt_share
&& bash run-test.sh
$(SEEDOPT
)
820 +cd tests
/fsm
&& bash run-test.sh
$(SEEDOPT
)
821 +cd tests
/techmap
&& bash run-test.sh
822 +cd tests
/memories
&& bash run-test.sh
$(ABCOPT
) $(SEEDOPT
)
823 +cd tests
/memlib
&& bash run-test.sh
$(SEEDOPT
)
824 +cd tests
/bram
&& bash run-test.sh
$(SEEDOPT
)
825 +cd tests
/various
&& bash run-test.sh
826 +cd tests
/select
&& bash run-test.sh
827 +cd tests
/sat
&& bash run-test.sh
828 +cd tests
/sim
&& bash run-test.sh
829 +cd tests
/svinterfaces
&& bash run-test.sh
$(SEEDOPT
)
830 +cd tests
/svtypes
&& bash run-test.sh
$(SEEDOPT
)
831 +cd tests
/proc
&& bash run-test.sh
832 +cd tests
/blif
&& bash run-test.sh
833 +cd tests
/opt
&& bash run-test.sh
834 +cd tests
/aiger
&& bash run-test.sh
$(ABCOPT
)
835 +cd tests
/arch
&& bash run-test.sh
836 +cd tests
/arch
/ice40
&& bash run-test.sh
$(SEEDOPT
)
837 +cd tests
/arch
/xilinx
&& bash run-test.sh
$(SEEDOPT
)
838 +cd tests
/arch
/ecp5
&& bash run-test.sh
$(SEEDOPT
)
839 +cd tests
/arch
/machxo2
&& bash run-test.sh
$(SEEDOPT
)
840 +cd tests
/arch
/efinix
&& bash run-test.sh
$(SEEDOPT
)
841 +cd tests
/arch
/anlogic
&& bash run-test.sh
$(SEEDOPT
)
842 +cd tests
/arch
/gowin
&& bash run-test.sh
$(SEEDOPT
)
843 +cd tests
/arch
/intel_alm
&& bash run-test.sh
$(SEEDOPT
)
844 +cd tests
/arch
/nexus
&& bash run-test.sh
$(SEEDOPT
)
845 +cd tests
/arch
/quicklogic
&& bash run-test.sh
$(SEEDOPT
)
846 +cd tests
/arch
/gatemate
&& bash run-test.sh
$(SEEDOPT
)
847 +cd tests
/rpc
&& bash run-test.sh
848 +cd tests
/memfile
&& bash run-test.sh
849 +cd tests
/verilog
&& bash run-test.sh
851 @echo
" Passed \"make test\"."
854 VALGRIND ?
= valgrind
--error-exitcode
=1 --leak-check
=full
--show-reachable
=yes
--errors-for-leak-kinds
=all
856 vgtest
: $(TARGETS
) $(EXTRA_TARGETS
)
857 $(VALGRIND
) .
/yosys
-p
'setattr -mod -unset top; synth' $$( ls tests
/simple
/*.v | grep
-v repwhile.v
)
859 @echo
" Passed \"make vgtest\"."
862 vloghtb
: $(TARGETS
) $(EXTRA_TARGETS
)
863 +cd tests
/vloghtb
&& bash run-test.sh
865 @echo
" Passed \"make vloghtb\"."
868 ystests
: $(TARGETS
) $(EXTRA_TARGETS
)
870 git clone https
://github.com
/YosysHQ
/yosys-tests.git tests
/ystests
871 +$(MAKE
) PATH
="$$PWD:$$PATH" -C tests
/ystests
873 @echo
" Finished \"make ystests\"."
877 unit-test
: libyosys.so
878 @
$(MAKE
) -C
$(UNITESTPATH
) CXX
="$(CXX)" CPPFLAGS
="$(CPPFLAGS)" \
879 CXXFLAGS
="$(CXXFLAGS)" LDLIBS
="$(LDLIBS)" ROOTPATH
="$(CURDIR)"
882 @
$(MAKE
) -C
$(UNITESTPATH
) clean
884 install: $(TARGETS
) $(EXTRA_TARGETS
)
885 $(INSTALL_SUDO
) mkdir
-p
$(DESTDIR
)$(BINDIR
)
886 $(INSTALL_SUDO
) cp
$(filter-out libyosys.so
,$(TARGETS
)) $(DESTDIR
)$(BINDIR
)
887 ifneq ($(filter $(PROGRAM_PREFIX
)yosys
,$(TARGETS
)),)
888 $(INSTALL_SUDO
) $(STRIP
) -S
$(DESTDIR
)$(BINDIR
)/$(PROGRAM_PREFIX
)yosys
890 ifneq ($(filter $(PROGRAM_PREFIX
)yosys-abc
,$(TARGETS
)),)
891 $(INSTALL_SUDO
) $(STRIP
) $(DESTDIR
)$(BINDIR
)/$(PROGRAM_PREFIX
)yosys-abc
893 ifneq ($(filter $(PROGRAM_PREFIX
)yosys-filterlib
,$(TARGETS
)),)
894 $(INSTALL_SUDO
) $(STRIP
) $(DESTDIR
)$(BINDIR
)/$(PROGRAM_PREFIX
)yosys-filterlib
896 $(INSTALL_SUDO
) mkdir
-p
$(DESTDIR
)$(DATDIR
)
897 $(INSTALL_SUDO
) cp
-r share
/.
$(DESTDIR
)$(DATDIR
)/.
898 ifeq ($(ENABLE_LIBYOSYS
),1)
899 $(INSTALL_SUDO
) mkdir
-p
$(DESTDIR
)$(LIBDIR
)
900 $(INSTALL_SUDO
) cp libyosys.so
$(DESTDIR
)$(LIBDIR
)/
901 $(INSTALL_SUDO
) $(STRIP
) -S
$(DESTDIR
)$(LIBDIR
)/libyosys.so
902 ifeq ($(ENABLE_PYOSYS
),1)
903 $(INSTALL_SUDO
) mkdir
-p
$(DESTDIR
)$(PYTHON_DESTDIR
)/$(subst -,_
,$(PROGRAM_PREFIX
))pyosys
904 $(INSTALL_SUDO
) cp libyosys.so
$(DESTDIR
)$(PYTHON_DESTDIR
)/$(subst -,_
,$(PROGRAM_PREFIX
))pyosys
/libyosys.so
905 $(INSTALL_SUDO
) cp misc
/__init__.py
$(DESTDIR
)$(PYTHON_DESTDIR
)/$(subst -,_
,$(PROGRAM_PREFIX
))pyosys
/
910 $(INSTALL_SUDO
) rm -vf
$(addprefix $(DESTDIR
)$(BINDIR
)/,$(notdir $(TARGETS
)))
911 $(INSTALL_SUDO
) rm -rvf
$(DESTDIR
)$(DATDIR
)
912 ifeq ($(ENABLE_LIBYOSYS
),1)
913 $(INSTALL_SUDO
) rm -vf
$(DESTDIR
)$(LIBDIR
)/libyosys.so
914 ifeq ($(ENABLE_PYOSYS
),1)
915 $(INSTALL_SUDO
) rm -vf
$(DESTDIR
)$(PYTHON_DESTDIR
)/$(subst -,_
,$(PROGRAM_PREFIX
))pyosys
/libyosys.so
916 $(INSTALL_SUDO
) rm -vf
$(DESTDIR
)$(PYTHON_DESTDIR
)/$(subst -,_
,$(PROGRAM_PREFIX
))pyosys
/__init__.py
917 $(INSTALL_SUDO
) rmdir
$(DESTDIR
)$(PYTHON_DESTDIR
)/$(subst -,_
,$(PROGRAM_PREFIX
))pyosys
921 update-manual
: $(TARGETS
) $(EXTRA_TARGETS
)
922 cd manual
&& ..
/$(PROGRAM_PREFIX
)yosys
-p
'help -write-tex-command-reference-manual'
924 manual
: $(TARGETS
) $(EXTRA_TARGETS
)
925 cd manual
&& bash appnotes.sh
926 cd manual
&& bash presentation.sh
927 cd manual
&& bash manual.sh
932 if
test -d manual
; then cd manual
&& sh
clean.sh
; fi
933 rm -f
$(OBJS
) $(GENFILES
) $(TARGETS
) $(EXTRA_TARGETS
) $(EXTRA_OBJS
) $(PY_WRAP_INCLUDES
) $(PY_WRAPPER_FILE
).
cc
934 rm -f kernel
/version_
*.o kernel
/version_
*.
cc
935 rm -f libs
/*/*.d frontends
/*/*.d passes
/*/*.d backends
/*/*.d kernel
/*.d techlibs
/*/*.d
936 rm -rf tests
/asicworld
/*.out tests
/asicworld
/*.log
937 rm -rf tests
/hana
/*.out tests
/hana
/*.log
938 rm -rf tests
/simple
/*.out tests
/simple
/*.log
939 rm -rf tests
/memories
/*.out tests
/memories
/*.log tests
/memories
/*.dmp
940 rm -rf tests
/sat
/*.log tests
/techmap
/*.log tests
/various
/*.log
941 rm -rf tests
/bram
/temp tests
/fsm
/temp tests
/realmath
/temp tests
/share
/temp tests
/smv
/temp tests
/various
/temp
942 rm -rf vloghtb
/Makefile vloghtb
/refdat vloghtb
/rtl vloghtb
/scripts vloghtb
/spec vloghtb
/check_yosys vloghtb
/vloghammer_tb.
tar.bz2 vloghtb
/temp vloghtb
/log_test_
*
943 rm -f tests
/svinterfaces
/*.log_stdout tests
/svinterfaces
/*.log_stderr tests
/svinterfaces
/dut_result.txt tests
/svinterfaces
/reference_result.txt tests
/svinterfaces
/a.out tests
/svinterfaces
/*_syn.v tests
/svinterfaces
/*.diff
944 rm -f tests
/tools
/cmp_tbdata
947 $(MAKE
) -C abc DEP
= clean
948 rm -f
$(PROGRAM_PREFIX
)yosys-abc
$(EXE
) $(PROGRAM_PREFIX
)yosys-libabc.a abc
/abc-
[0-9a-f
]* abc
/libabc-
[0-9a-f
]*.a
954 .
/$(PROGRAM_PREFIX
)yosys
-qp
'help; help -all'
955 rm -rf coverage.
info coverage_html
956 lcov
--capture
-d .
--no-external
-o coverage.
info
957 genhtml coverage.
info --output-directory coverage_html
960 { for file in
$(basename $(OBJS
)); do \
961 for
prefix in
cc y l
; do if
[ -f
$${file}.
$${prefix} ]; then echo
$$file.
$${prefix}; fi
; done \
962 done
; find backends frontends kernel libs passes
-type f \
( -name
'*.h' -o
-name
'*.hh' \
); } > qtcreator.files
963 { echo .
; find backends frontends kernel libs passes
-type f \
( -name
'*.h' -o
-name
'*.hh' \
) -printf
'%h\n' |
sort -u
; } > qtcreator.includes
964 touch qtcreator.config qtcreator.creator
966 vcxsrc
: $(GENFILES
) $(EXTRA_TARGETS
)
967 rm -rf yosys-win32-vcxsrc-
$(YOSYS_VER
){,.zip
}
968 set
-e
; for f in
`ls $(filter %.cc %.cpp,$(GENFILES)) $(addsuffix .cc,$(basename $(OBJS))) $(addsuffix .cpp,$(basename $(OBJS))) 2> /dev/null`; do \
969 echo
"Analyse: $$f" >&2; cpp -std
=c
++11 -MM
-I.
-D_YOSYS_
$$f; done | sed
's,.*:,,; s,//*,/,g; s,/[^/]*/\.\./,/,g; y, \\,\n\n,;' | grep
'^[^/]' |
sort -u | grep
-v kernel
/version_
> srcfiles.txt
970 bash misc
/create_vcxsrc.sh yosys-win32-vcxsrc
$(YOSYS_VER
) $(GIT_REV
)
971 echo
"namespace Yosys { extern const char *yosys_version_str; const char *yosys_version_str=\"Yosys (Version Information Unavailable)\"; }" > kernel
/version.
cc
972 zip yosys-win32-vcxsrc-
$(YOSYS_VER
)/genfiles.zip
$(GENFILES
) kernel
/version.
cc
973 zip
-r yosys-win32-vcxsrc-
$(YOSYS_VER
).zip yosys-win32-vcxsrc-
$(YOSYS_VER
)/
974 rm -f srcfiles.txt kernel
/version.
cc
977 mxebin
: $(TARGETS
) $(EXTRA_TARGETS
)
978 rm -rf yosys-win32-mxebin-
$(YOSYS_VER
){,.zip
}
979 mkdir
-p yosys-win32-mxebin-
$(YOSYS_VER
)
980 cp
-r
$(PROGRAM_PREFIX
)yosys.exe share
/ yosys-win32-mxebin-
$(YOSYS_VER
)/
981 ifeq ($(ENABLE_ABC
),1)
982 cp
-r
$(PROGRAM_PREFIX
)yosys-abc.exe abc
/lib
/x86
/pthreadVC2.dll yosys-win32-mxebin-
$(YOSYS_VER
)/
984 echo
-en
'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-mxebin-
$(YOSYS_VER
)/readme.txt
985 echo
-en
'Documentation at https://yosyshq.net/yosys/.\r\n' >> yosys-win32-mxebin-
$(YOSYS_VER
)/readme.txt
986 zip
-r yosys-win32-mxebin-
$(YOSYS_VER
).zip yosys-win32-mxebin-
$(YOSYS_VER
)/
993 echo
'CONFIG := clang' > Makefile.conf
996 echo
'CONFIG := gcc' > Makefile.conf
998 config-gcc-static
: clean
999 echo
'CONFIG := gcc-static' > Makefile.conf
1000 echo
'ENABLE_PLUGINS := 0' >> Makefile.conf
1001 echo
'ENABLE_READLINE := 0' >> Makefile.conf
1002 echo
'ENABLE_TCL := 0' >> Makefile.conf
1004 config-gcc-4.8
: clean
1005 echo
'CONFIG := gcc-4.8' > Makefile.conf
1007 config-afl-gcc
: clean
1008 echo
'CONFIG := afl-gcc' > Makefile.conf
1011 echo
'CONFIG := emcc' > Makefile.conf
1012 echo
'ENABLE_TCL := 0' >> Makefile.conf
1013 echo
'ENABLE_ABC := 0' >> Makefile.conf
1014 echo
'ENABLE_PLUGINS := 0' >> Makefile.conf
1015 echo
'ENABLE_READLINE := 0' >> Makefile.conf
1016 echo
'ENABLE_ZLIB := 0' >> Makefile.conf
1019 echo
'CONFIG := wasi' > Makefile.conf
1020 echo
'ENABLE_TCL := 0' >> Makefile.conf
1021 echo
'ENABLE_ABC := 0' >> Makefile.conf
1022 echo
'ENABLE_PLUGINS := 0' >> Makefile.conf
1023 echo
'ENABLE_READLINE := 0' >> Makefile.conf
1024 echo
'ENABLE_ZLIB := 0' >> Makefile.conf
1027 echo
'CONFIG := mxe' > Makefile.conf
1028 echo
'ENABLE_PLUGINS := 0' >> Makefile.conf
1030 config-msys2-32
: clean
1031 echo
'CONFIG := msys2-32' > Makefile.conf
1032 echo
'ENABLE_PLUGINS := 0' >> Makefile.conf
1033 echo
"PREFIX := $(MINGW_PREFIX)" >> Makefile.conf
1035 config-msys2-64
: clean
1036 echo
'CONFIG := msys2-64' > Makefile.conf
1037 echo
'ENABLE_PLUGINS := 0' >> Makefile.conf
1038 echo
"PREFIX := $(MINGW_PREFIX)" >> Makefile.conf
1040 config-cygwin
: clean
1041 echo
'CONFIG := cygwin' > Makefile.conf
1044 echo
'CONFIG := gcc' > Makefile.conf
1045 echo
'ENABLE_GCOV := 1' >> Makefile.conf
1046 echo
'ENABLE_DEBUG := 1' >> Makefile.conf
1049 echo
'CONFIG := gcc' > Makefile.conf
1050 echo
'ENABLE_GPROF := 1' >> Makefile.conf
1053 echo
"INSTALL_SUDO := sudo" >> Makefile.conf
1056 @echo
"$(YOSYS_VER)"
1065 -include frontends
/*/*.d
1066 -include passes
/*/*.d
1067 -include backends
/*/*.d
1069 -include techlibs
/*/*.d
1071 .PHONY
: all top-all abc
test install install-abc manual
clean mrproper qtcreator coverage vcxsrc mxebin
1072 .PHONY
: config-clean config-clang config-gcc config-gcc-static config-gcc-4.8 config-afl-gcc config-gprof config-sudo