1 2CONFIG := gcc 3# CONFIG := gcc 4# CONFIG := gcc-4.8 5# CONFIG := afl-gcc 6# CONFIG := emcc 7# CONFIG := wasi 8# CONFIG := mxe 9# CONFIG := msys2-32 10# CONFIG := msys2-64 11 12# features (the more the better) 13ENABLE_TCL := 1 14ENABLE_ABC := 1 15ENABLE_GLOB := 1 16ENABLE_PLUGINS := 1 17ENABLE_READLINE := 1 18ENABLE_EDITLINE := 0 19ENABLE_GHDL := 0 20ENABLE_VERIFIC := 0 21DISABLE_VERIFIC_EXTENSIONS := 0 22DISABLE_VERIFIC_VHDL := 0 23ENABLE_COVER := 1 24ENABLE_LIBYOSYS := 0 25ENABLE_PROTOBUF := 0 26ENABLE_ZLIB := 1 27 28# python wrappers 29ENABLE_PYOSYS := 0 30 31# other configuration flags 32ENABLE_GCOV := 0 33ENABLE_GPROF := 0 34ENABLE_DEBUG := 0 35ENABLE_NDEBUG := 0 36ENABLE_CCACHE := 0 37# sccache is not always a drop-in replacement for ccache in practice 38ENABLE_SCCACHE := 0 39LINK_CURSES := 0 40LINK_TERMCAP := 0 41LINK_ABC := 0 42# Needed for environments that can't run executables (i.e. emscripten, wasm) 43DISABLE_SPAWN := 0 44# Needed for environments that don't have proper thread support (i.e. emscripten, wasm--for now) 45DISABLE_ABC_THREADS := 0 46 47# clang sanitizers 48SANITIZER = 49# SANITIZER = address 50# SANITIZER = memory 51# SANITIZER = undefined 52# SANITIZER = cfi 53 54PROGRAM_PREFIX := 55 56OS := $(shell uname -s) 57PREFIX ?= /usr/local 58INSTALL_SUDO := 59 60ifneq ($(wildcard Makefile.conf),) 61include Makefile.conf 62endif 63 64ifeq ($(ENABLE_PYOSYS),1) 65ENABLE_LIBYOSYS := 1 66endif 67 68BINDIR := $(PREFIX)/bin 69LIBDIR := $(PREFIX)/lib/$(PROGRAM_PREFIX)yosys 70DATDIR := $(PREFIX)/share/$(PROGRAM_PREFIX)yosys 71 72EXE = 73OBJS = 74GENFILES = 75EXTRA_OBJS = 76EXTRA_TARGETS = 77TARGETS = $(PROGRAM_PREFIX)yosys$(EXE) $(PROGRAM_PREFIX)yosys-config 78 79PRETTY = 1 80SMALL = 0 81 82# Unit test 83UNITESTPATH := tests/unit 84 85all: top-all 86 87YOSYS_SRC := $(dir $(firstword $(MAKEFILE_LIST))) 88VPATH := $(YOSYS_SRC) 89 90CXXSTD ?= c++11 91CXXFLAGS := $(CXXFLAGS) -Wall -Wextra -ggdb -I. -I"$(YOSYS_SRC)" -MD -MP -D_YOSYS_ -fPIC -I$(PREFIX)/include 92LDLIBS := $(LDLIBS) -lstdc++ -lm 93PLUGIN_LDFLAGS := 94 95PKG_CONFIG ?= pkg-config 96SED ?= sed 97BISON ?= bison 98STRIP ?= strip 99AWK ?= awk 100 101ifeq ($(OS), Darwin) 102PLUGIN_LDFLAGS += -undefined dynamic_lookup 103 104# homebrew search paths 105ifneq ($(shell :; command -v brew),) 106BREW_PREFIX := $(shell brew --prefix)/opt 107$(info $$BREW_PREFIX is [${BREW_PREFIX}]) 108ifeq ($(ENABLE_PYOSYS),1) 109CXXFLAGS += -I$(BREW_PREFIX)/boost/include/boost 110LDFLAGS += -L$(BREW_PREFIX)/boost/lib 111endif 112CXXFLAGS += -I$(BREW_PREFIX)/readline/include 113LDFLAGS += -L$(BREW_PREFIX)/readline/lib 114PKG_CONFIG_PATH := $(BREW_PREFIX)/libffi/lib/pkgconfig:$(PKG_CONFIG_PATH) 115PKG_CONFIG_PATH := $(BREW_PREFIX)/tcl-tk/lib/pkgconfig:$(PKG_CONFIG_PATH) 116export PATH := $(BREW_PREFIX)/bison/bin:$(BREW_PREFIX)/gettext/bin:$(BREW_PREFIX)/flex/bin:$(PATH) 117 118# macports search paths 119else ifneq ($(shell :; command -v port),) 120PORT_PREFIX := $(patsubst %/bin/port,%,$(shell :; command -v port)) 121CXXFLAGS += -I$(PORT_PREFIX)/include 122LDFLAGS += -L$(PORT_PREFIX)/lib 123PKG_CONFIG_PATH := $(PORT_PREFIX)/lib/pkgconfig:$(PKG_CONFIG_PATH) 124export PATH := $(PORT_PREFIX)/bin:$(PATH) 125endif 126 127else 128LDFLAGS += -rdynamic 129LDLIBS += -lrt 130endif 131 132YOSYS_VER := 0.12 133GIT_REV := $(shell git -C $(YOSYS_SRC) rev-parse --short HEAD 2> /dev/null || echo UNKNOWN) 134OBJS = kernel/version_$(GIT_REV).o 135 136bumpversion: 137 # sed -i "/^YOSYS_VER := / s/+[0-9][0-9]*$$/+`git log --oneline 360fed8.. | wc -l`/;" Makefile 138 139# set 'ABCREV = default' to use abc/ as it is 140# 141# Note: If you do ABC development, make sure that 'abc' in this directory 142# is just a symlink to your actual ABC working directory, as 'make mrproper' 143# will remove the 'abc' directory and you do not want to accidentally 144# delete your work on ABC.. 145ABCREV = f6fa2dd 146ABCPULL = 1 147ABCURL ?= https://github.com/YosysHQ/abc 148ABCMKARGS = CC="$(CXX)" CXX="$(CXX)" ABC_USE_LIBSTDCXX=1 VERBOSE=$(Q) 149 150# set ABCEXTERNAL = <abc-command> to use an external ABC instance 151# Note: The in-tree ABC (yosys-abc) will not be installed when ABCEXTERNAL is set. 152ABCEXTERNAL ?= 153 154define newline 155 156 157endef 158 159ifneq ($(wildcard Makefile.conf),) 160# don't echo Makefile.conf contents when invoked to print source versions 161ifeq ($(findstring echo-,$(MAKECMDGOALS)),) 162$(info $(subst $$--$$,$(newline),$(shell sed 's,^,[Makefile.conf] ,; s,$$,$$--$$,;' < Makefile.conf | tr -d '\n' | sed 's,\$$--\$$$$,,'))) 163endif 164include Makefile.conf 165endif 166 167PYTHON_EXECUTABLE := $(shell if python3 -c ""; then echo "python3"; else echo "python"; fi) 168ifeq ($(ENABLE_PYOSYS),1) 169PYTHON_VERSION_TESTCODE := "import sys;t='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));print(t)" 170PYTHON_VERSION := $(shell $(PYTHON_EXECUTABLE) -c ""$(PYTHON_VERSION_TESTCODE)"") 171PYTHON_MAJOR_VERSION := $(shell echo $(PYTHON_VERSION) | cut -f1 -d.) 172 173ENABLE_PYTHON_CONFIG_EMBED ?= $(shell $(PYTHON_EXECUTABLE)-config --embed --libs > /dev/null && echo 1) 174ifeq ($(ENABLE_PYTHON_CONFIG_EMBED),1) 175PYTHON_CONFIG := $(PYTHON_EXECUTABLE)-config --embed 176else 177PYTHON_CONFIG := $(PYTHON_EXECUTABLE)-config 178endif 179 180PYTHON_DESTDIR := $(shell $(PYTHON_EXECUTABLE) -c "import site; print(site.getsitepackages()[-1]);") 181 182# Reload Makefile.conf to override python specific variables if defined 183ifneq ($(wildcard Makefile.conf),) 184include Makefile.conf 185endif 186 187endif 188 189ifeq ($(CONFIG),clang) 190LD = $(CXX) 191CXXFLAGS += -std=$(CXXSTD) -Os 192ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" 193 194ifneq ($(SANITIZER),) 195$(info [Clang Sanitizer] $(SANITIZER)) 196CXXFLAGS += -g -O1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize=$(SANITIZER) 197LDFLAGS += -g -fsanitize=$(SANITIZER) 198ifneq ($(findstring address,$(SANITIZER)),) 199ENABLE_COVER := 0 200endif 201ifneq ($(findstring memory,$(SANITIZER)),) 202CXXFLAGS += -fPIE -fsanitize-memory-track-origins 203LDFLAGS += -fPIE -fsanitize-memory-track-origins 204endif 205ifneq ($(findstring cfi,$(SANITIZER)),) 206CXXFLAGS += -flto 207LDFLAGS += -flto 208endif 209endif 210 211else ifeq ($(CONFIG),gcc) 212LD = $(CXX) 213CXXFLAGS += -std=$(CXXSTD) -Os 214ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" 215 216else ifeq ($(CONFIG),gcc-static) 217LD = $(CXX) 218LDFLAGS := $(filter-out -rdynamic,$(LDFLAGS)) -static 219LDLIBS := $(filter-out -lrt,$(LDLIBS)) 220CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) 221CXXFLAGS += -std=$(CXXSTD) -Os 222ABCMKARGS = CC="$(CC)" CXX="$(CXX)" LD="$(LD)" ABC_USE_LIBSTDCXX=1 LIBS="-lm -lpthread -static" OPTFLAGS="-O" \ 223 ARCHFLAGS="-DABC_USE_STDINT_H -DABC_NO_DYNAMIC_LINKING=1 -Wno-unused-but-set-variable $(ARCHFLAGS)" ABC_USE_NO_READLINE=1 224ifeq ($(DISABLE_ABC_THREADS),1) 225ABCMKARGS += "ABC_USE_NO_PTHREADS=1" 226endif 227 228else ifeq ($(CONFIG),gcc-4.8) 229LD = $(CXX) 230CXXFLAGS += -std=$(CXXSTD) -Os 231ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" 232 233else ifeq ($(CONFIG),afl-gcc) 234LD = $(CXX) 235CXXFLAGS += -std=$(CXXSTD) -Os 236ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" 237 238else ifeq ($(CONFIG),cygwin) 239LD = $(CXX) 240CXXFLAGS += -std=gnu++11 -Os 241ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" 242 243else ifeq ($(CONFIG),emcc) 244LD = $(CXX) 245CXXFLAGS := -std=$(CXXSTD) $(filter-out -fPIC -ggdb,$(CXXFLAGS)) 246ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H -DABC_MEMALIGN=8" 247EMCCFLAGS := -Os -Wno-warn-absolute-paths 248EMCCFLAGS += --memory-init-file 0 --embed-file share -s NO_EXIT_RUNTIME=1 249EMCCFLAGS += -s EXPORTED_FUNCTIONS="['_main','_run','_prompt','_errmsg','_memset']" 250EMCCFLAGS += -s TOTAL_MEMORY=134217728 251EMCCFLAGS += -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' 252# https://github.com/kripken/emscripten/blob/master/src/settings.js 253CXXFLAGS += $(EMCCFLAGS) 254LDFLAGS += $(EMCCFLAGS) 255LDLIBS = 256EXE = .js 257 258DISABLE_SPAWN := 1 259 260TARGETS := $(filter-out $(PROGRAM_PREFIX)yosys-config,$(TARGETS)) 261EXTRA_TARGETS += yosysjs-$(YOSYS_VER).zip 262 263ifeq ($(ENABLE_ABC),1) 264LINK_ABC := 1 265DISABLE_ABC_THREADS := 1 266endif 267 268viz.js: 269 wget -O viz.js.part https://github.com/mdaines/viz.js/releases/download/0.0.3/viz.js 270 mv viz.js.part viz.js 271 272yosysjs-$(YOSYS_VER).zip: yosys.js yosys.wasm viz.js misc/yosysjs/* 273 rm -rf yosysjs-$(YOSYS_VER) yosysjs-$(YOSYS_VER).zip 274 mkdir -p yosysjs-$(YOSYS_VER) 275 cp viz.js misc/yosysjs/* yosys.js yosys.wasm yosysjs-$(YOSYS_VER)/ 276 zip -r yosysjs-$(YOSYS_VER).zip yosysjs-$(YOSYS_VER) 277 278yosys.html: misc/yosys.html 279 $(P) cp misc/yosys.html yosys.html 280 281else ifeq ($(CONFIG),wasi) 282ifeq ($(WASI_SDK),) 283LD = $(CXX) 284AR = llvm-ar 285RANLIB = llvm-ranlib 286WASIFLAGS := -target wasm32-wasi --sysroot $(WASI_SYSROOT) $(WASIFLAGS) 287else 288LD = $(CXX) 289AR = $(WASI_SDK)/bin/ar 290RANLIB = $(WASI_SDK)/bin/ranlib 291WASIFLAGS := --sysroot $(WASI_SDK)/share/wasi-sysroot $(WASIFLAGS) 292endif 293CXXFLAGS := $(WASIFLAGS) -std=$(CXXSTD) -Os $(filter-out -fPIC,$(CXXFLAGS)) 294LDFLAGS := $(WASIFLAGS) -Wl,-z,stack-size=1048576 $(filter-out -rdynamic,$(LDFLAGS)) 295LDLIBS := $(filter-out -lrt,$(LDLIBS)) 296ABCMKARGS += AR="$(AR)" RANLIB="$(RANLIB)" 297ABCMKARGS += ARCHFLAGS="$(WASIFLAGS) -DABC_USE_STDINT_H -DABC_NO_DYNAMIC_LINKING" 298ABCMKARGS += OPTFLAGS="-Os" 299EXE = .wasm 300 301DISABLE_SPAWN := 1 302 303ifeq ($(ENABLE_ABC),1) 304LINK_ABC := 1 305DISABLE_ABC_THREADS := 1 306endif 307 308else ifeq ($(CONFIG),mxe) 309PKG_CONFIG = /usr/local/src/mxe/usr/bin/i686-w64-mingw32.static-pkg-config 310LD = $(CXX) 311CXXFLAGS += -std=$(CXXSTD) -Os -D_POSIX_SOURCE -DYOSYS_MXE_HACKS -Wno-attributes 312CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) 313LDFLAGS := $(filter-out -rdynamic,$(LDFLAGS)) -s 314LDLIBS := $(filter-out -lrt,$(LDLIBS)) 315ABCMKARGS += ARCHFLAGS="-DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w" 316# TODO: Try to solve pthread linking issue in more appropriate way 317ABCMKARGS += 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" 318EXE = .exe 319 320else ifeq ($(CONFIG),msys2-32) 321LD = $(CXX) 322CXXFLAGS += -std=$(CXXSTD) -Os -D_POSIX_SOURCE -DYOSYS_WIN32_UNIX_DIR 323CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) 324LDFLAGS := $(filter-out -rdynamic,$(LDFLAGS)) -s 325LDLIBS := $(filter-out -lrt,$(LDLIBS)) 326ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H -DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w" 327ABCMKARGS += LIBS="-lpthread -s" ABC_USE_NO_READLINE=0 CC="i686-w64-mingw32-gcc" CXX="$(CXX)" 328EXE = .exe 329 330else ifeq ($(CONFIG),msys2-64) 331LD = $(CXX) 332CXXFLAGS += -std=$(CXXSTD) -Os -D_POSIX_SOURCE -DYOSYS_WIN32_UNIX_DIR 333CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) 334LDFLAGS := $(filter-out -rdynamic,$(LDFLAGS)) -s 335LDLIBS := $(filter-out -lrt,$(LDLIBS)) 336ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H -DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w" 337ABCMKARGS += LIBS="-lpthread -s" ABC_USE_NO_READLINE=0 CC="x86_64-w64-mingw32-gcc" CXX="$(CXX)" 338EXE = .exe 339 340else ifneq ($(CONFIG),none) 341$(error Invalid CONFIG setting '$(CONFIG)'. Valid values: clang, gcc, gcc-4.8, emcc, mxe, msys2-32, msys2-64) 342endif 343 344ifeq ($(ENABLE_LIBYOSYS),1) 345TARGETS += libyosys.so 346endif 347 348ifeq ($(ENABLE_PYOSYS),1) 349# 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 350CHECK_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)") 351BOOST_PYTHON_LIB ?= $(shell \ 352 $(call CHECK_BOOST_PYTHON,boost_python-py$(subst .,,$(PYTHON_VERSION))) || \ 353 $(call CHECK_BOOST_PYTHON,boost_python-py$(PYTHON_MAJOR_VERSION)) || \ 354 $(call CHECK_BOOST_PYTHON,boost_python$(subst .,,$(PYTHON_VERSION))) || \ 355 $(call CHECK_BOOST_PYTHON,boost_python$(PYTHON_MAJOR_VERSION)) \ 356) 357 358ifeq ($(BOOST_PYTHON_LIB),) 359$(error BOOST_PYTHON_LIB could not be detected. Please define manually) 360endif 361 362LDLIBS += $(shell $(PYTHON_CONFIG) --libs) $(BOOST_PYTHON_LIB) -lboost_system -lboost_filesystem 363# python-config --ldflags includes LDLIBS for some reason 364LDFLAGS += $(filter-out -l%,$(shell $(PYTHON_CONFIG) --ldflags)) 365CXXFLAGS += $(shell $(PYTHON_CONFIG) --includes) -DWITH_PYTHON 366 367PY_WRAPPER_FILE = kernel/python_wrappers 368OBJS += $(PY_WRAPPER_FILE).o 369PY_GEN_SCRIPT= py_wrap_generator 370PY_WRAP_INCLUDES := $(shell python$(PYTHON_VERSION) -c "from misc import $(PY_GEN_SCRIPT); $(PY_GEN_SCRIPT).print_includes()") 371endif # ENABLE_PYOSYS 372 373ifeq ($(ENABLE_READLINE),1) 374CXXFLAGS += -DYOSYS_ENABLE_READLINE 375ifeq ($(OS), DragonFly) 376CXXFLAGS += -I/usr/local/include 377endif 378LDLIBS += -lreadline 379ifeq ($(LINK_CURSES),1) 380LDLIBS += -lcurses 381ABCMKARGS += "ABC_READLINE_LIBRARIES=-lcurses -lreadline" 382endif 383ifeq ($(LINK_TERMCAP),1) 384LDLIBS += -ltermcap 385ABCMKARGS += "ABC_READLINE_LIBRARIES=-lreadline -ltermcap" 386endif 387ifeq ($(CONFIG),mxe) 388LDLIBS += -ltermcap 389endif 390else 391ifeq ($(ENABLE_EDITLINE),1) 392CXXFLAGS += -DYOSYS_ENABLE_EDITLINE 393LDLIBS += -ledit -ltinfo -lbsd 394else 395ABCMKARGS += "ABC_USE_NO_READLINE=1" 396endif 397endif 398 399ifeq ($(DISABLE_ABC_THREADS),1) 400ABCMKARGS += "ABC_USE_NO_PTHREADS=1" 401endif 402 403ifeq ($(DISABLE_SPAWN),1) 404CXXFLAGS += -DYOSYS_DISABLE_SPAWN 405endif 406 407ifeq ($(ENABLE_PLUGINS),1) 408CXXFLAGS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --silence-errors --cflags libffi) -DYOSYS_ENABLE_PLUGINS 409LDLIBS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --silence-errors --libs libffi || echo -lffi) 410ifneq ($(OS), DragonFly) 411LDLIBS += -ldl 412endif 413endif 414 415ifeq ($(ENABLE_GLOB),1) 416CXXFLAGS += -DYOSYS_ENABLE_GLOB 417endif 418 419ifeq ($(ENABLE_ZLIB),1) 420CXXFLAGS += -DYOSYS_ENABLE_ZLIB 421LDLIBS += -lz 422endif 423 424 425ifeq ($(ENABLE_TCL),1) 426TCL_VERSION ?= tcl$(shell bash -c "tclsh <(echo 'puts [info tclversion]')") 427ifeq ($(OS), DragonFly) 428TCL_INCLUDE ?= /usr/local/include/$(TCL_VERSION) 429else 430TCL_INCLUDE ?= /usr/include/$(TCL_VERSION) 431endif 432 433ifeq ($(CONFIG),mxe) 434CXXFLAGS += -DYOSYS_ENABLE_TCL 435LDLIBS += -ltcl86 -lwsock32 -lws2_32 -lnetapi32 -lz -luserenv 436else 437CXXFLAGS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --silence-errors --cflags tcl || echo -I$(TCL_INCLUDE)) -DYOSYS_ENABLE_TCL 438ifeq ($(OS), DragonFly) 439# DragonFly uses tcl8.6, but lib is named "libtcl86" 440LDLIBS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --silence-errors --libs tcl || echo -l$(TCL_VERSION) | tr -d '.') 441else 442LDLIBS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --silence-errors --libs tcl || echo -l$(TCL_VERSION)) 443endif 444endif 445endif 446 447ifeq ($(ENABLE_GCOV),1) 448CXXFLAGS += --coverage 449LDFLAGS += --coverage 450endif 451 452ifeq ($(ENABLE_GPROF),1) 453CXXFLAGS += -pg 454LDFLAGS += -pg 455endif 456 457ifeq ($(ENABLE_NDEBUG),1) 458CXXFLAGS := -O3 -DNDEBUG $(filter-out -Os -ggdb,$(CXXFLAGS)) 459endif 460 461ifeq ($(ENABLE_DEBUG),1) 462ifeq ($(CONFIG),clang) 463CXXFLAGS := -O0 -DDEBUG $(filter-out -Os,$(CXXFLAGS)) 464else 465CXXFLAGS := -Og -DDEBUG $(filter-out -Os,$(CXXFLAGS)) 466endif 467endif 468 469ifeq ($(ENABLE_ABC),1) 470CXXFLAGS += -DYOSYS_ENABLE_ABC 471ifeq ($(LINK_ABC),1) 472CXXFLAGS += -DYOSYS_LINK_ABC 473ifeq ($(DISABLE_ABC_THREADS),0) 474LDLIBS += -lpthread 475endif 476else 477ifeq ($(ABCEXTERNAL),) 478TARGETS += $(PROGRAM_PREFIX)yosys-abc$(EXE) 479endif 480endif 481endif 482 483ifeq ($(ENABLE_GHDL),1) 484GHDL_PREFIX ?= $(PREFIX) 485GHDL_INCLUDE_DIR ?= $(GHDL_PREFIX)/include 486GHDL_LIB_DIR ?= $(GHDL_PREFIX)/lib 487CXXFLAGS += -I$(GHDL_INCLUDE_DIR) -DYOSYS_ENABLE_GHDL 488LDLIBS += $(GHDL_LIB_DIR)/libghdl.a $(file <$(GHDL_LIB_DIR)/libghdl.link) 489endif 490 491ifeq ($(ENABLE_VERIFIC),1) 492VERIFIC_DIR ?= /usr/local/src/verific_lib 493VERIFIC_COMPONENTS ?= verilog database util containers hier_tree 494ifneq ($(DISABLE_VERIFIC_VHDL),1) 495VERIFIC_COMPONENTS += vhdl 496CXXFLAGS += -DVERIFIC_VHDL_SUPPORT 497else 498ifneq ($(wildcard $(VERIFIC_DIR)/vhdl),) 499VERIFIC_COMPONENTS += vhdl 500endif 501endif 502ifneq ($(DISABLE_VERIFIC_EXTENSIONS),1) 503VERIFIC_COMPONENTS += extensions 504CXXFLAGS += -DYOSYSHQ_VERIFIC_EXTENSIONS 505endif 506CXXFLAGS += $(patsubst %,-I$(VERIFIC_DIR)/%,$(VERIFIC_COMPONENTS)) -DYOSYS_ENABLE_VERIFIC 507ifeq ($(OS), Darwin) 508LDLIBS += $(patsubst %,$(VERIFIC_DIR)/%/*-mac.a,$(VERIFIC_COMPONENTS)) -lz 509else 510LDLIBS += $(patsubst %,$(VERIFIC_DIR)/%/*-linux.a,$(VERIFIC_COMPONENTS)) -lz 511endif 512endif 513 514ifeq ($(ENABLE_PROTOBUF),1) 515LDLIBS += $(shell pkg-config --cflags --libs protobuf) 516endif 517 518ifeq ($(ENABLE_COVER),1) 519CXXFLAGS += -DYOSYS_ENABLE_COVER 520endif 521 522ifeq ($(ENABLE_CCACHE),1) 523CXX := ccache $(CXX) 524else 525ifeq ($(ENABLE_SCCACHE),1) 526CXX := sccache $(CXX) 527endif 528endif 529 530define add_share_file 531EXTRA_TARGETS += $(subst //,/,$(1)/$(notdir $(2))) 532$(subst //,/,$(1)/$(notdir $(2))): $(2) 533 $$(P) mkdir -p $(1) 534 $$(Q) cp "$(YOSYS_SRC)"/$(2) $(subst //,/,$(1)/$(notdir $(2))) 535endef 536 537define add_gen_share_file 538EXTRA_TARGETS += $(subst //,/,$(1)/$(notdir $(2))) 539$(subst //,/,$(1)/$(notdir $(2))): $(2) 540 $$(P) mkdir -p $(1) 541 $$(Q) cp $(2) $(subst //,/,$(1)/$(notdir $(2))) 542endef 543 544define add_include_file 545$(eval $(call add_share_file,$(dir share/include/$(1)),$(1))) 546endef 547 548define add_extra_objs 549EXTRA_OBJS += $(1) 550.SECONDARY: $(1) 551endef 552 553ifeq ($(PRETTY), 1) 554P_STATUS = 0 555P_OFFSET = 0 556P_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; }')) 557P_SHOW = [$(shell $(AWK) "BEGIN { N=$(words $(OBJS) $(PROGRAM_PREFIX)yosys$(EXE)); printf \"%3d\", $(P_OFFSET)+90*$(P_STATUS)/N; exit; }")%] 558P = @echo "$(if $(findstring $@,$(TARGETS) $(EXTRA_TARGETS)),$(eval P_OFFSET = 10))$(call P_UPDATE)$(call P_SHOW) Building $@"; 559Q = @ 560S = -s 561else 562P_SHOW = -> 563P = 564Q = 565S = 566endif 567 568$(eval $(call add_include_file,kernel/yosys.h)) 569$(eval $(call add_include_file,kernel/hashlib.h)) 570$(eval $(call add_include_file,kernel/log.h)) 571$(eval $(call add_include_file,kernel/rtlil.h)) 572$(eval $(call add_include_file,kernel/binding.h)) 573$(eval $(call add_include_file,kernel/register.h)) 574$(eval $(call add_include_file,kernel/celltypes.h)) 575$(eval $(call add_include_file,kernel/celledges.h)) 576$(eval $(call add_include_file,kernel/consteval.h)) 577$(eval $(call add_include_file,kernel/constids.inc)) 578$(eval $(call add_include_file,kernel/sigtools.h)) 579$(eval $(call add_include_file,kernel/modtools.h)) 580$(eval $(call add_include_file,kernel/macc.h)) 581$(eval $(call add_include_file,kernel/utils.h)) 582$(eval $(call add_include_file,kernel/satgen.h)) 583$(eval $(call add_include_file,kernel/qcsat.h)) 584$(eval $(call add_include_file,kernel/ff.h)) 585$(eval $(call add_include_file,kernel/ffinit.h)) 586$(eval $(call add_include_file,kernel/mem.h)) 587$(eval $(call add_include_file,libs/ezsat/ezsat.h)) 588$(eval $(call add_include_file,libs/ezsat/ezminisat.h)) 589$(eval $(call add_include_file,libs/sha1/sha1.h)) 590$(eval $(call add_include_file,libs/json11/json11.hpp)) 591$(eval $(call add_include_file,passes/fsm/fsmdata.h)) 592$(eval $(call add_include_file,frontends/ast/ast.h)) 593$(eval $(call add_include_file,frontends/ast/ast_binding.h)) 594$(eval $(call add_include_file,frontends/blif/blifparse.h)) 595$(eval $(call add_include_file,backends/rtlil/rtlil_backend.h)) 596$(eval $(call add_include_file,backends/cxxrtl/cxxrtl.h)) 597$(eval $(call add_include_file,backends/cxxrtl/cxxrtl_vcd.h)) 598$(eval $(call add_include_file,backends/cxxrtl/cxxrtl_capi.cc)) 599$(eval $(call add_include_file,backends/cxxrtl/cxxrtl_capi.h)) 600$(eval $(call add_include_file,backends/cxxrtl/cxxrtl_vcd_capi.cc)) 601$(eval $(call add_include_file,backends/cxxrtl/cxxrtl_vcd_capi.h)) 602 603OBJS += kernel/driver.o kernel/register.o kernel/rtlil.o kernel/log.o kernel/calc.o kernel/yosys.o 604OBJS += kernel/binding.o 605ifeq ($(ENABLE_ABC),1) 606ifneq ($(ABCEXTERNAL),) 607kernel/yosys.o: CXXFLAGS += -DABCEXTERNAL='"$(ABCEXTERNAL)"' 608endif 609endif 610OBJS += kernel/cellaigs.o kernel/celledges.o kernel/satgen.o kernel/qcsat.o kernel/mem.o kernel/ffmerge.o kernel/ff.o 611 612kernel/log.o: CXXFLAGS += -DYOSYS_SRC='"$(YOSYS_SRC)"' 613kernel/yosys.o: CXXFLAGS += -DYOSYS_DATDIR='"$(DATDIR)"' -DYOSYS_PROGRAM_PREFIX='"$(PROGRAM_PREFIX)"' 614 615OBJS += libs/bigint/BigIntegerAlgorithms.o libs/bigint/BigInteger.o libs/bigint/BigIntegerUtils.o 616OBJS += libs/bigint/BigUnsigned.o libs/bigint/BigUnsignedInABase.o 617 618OBJS += libs/sha1/sha1.o 619 620ifneq ($(SMALL),1) 621 622OBJS += libs/json11/json11.o 623 624OBJS += libs/subcircuit/subcircuit.o 625 626OBJS += libs/ezsat/ezsat.o 627OBJS += libs/ezsat/ezminisat.o 628 629OBJS += libs/minisat/Options.o 630OBJS += libs/minisat/SimpSolver.o 631OBJS += libs/minisat/Solver.o 632OBJS += libs/minisat/System.o 633 634include $(YOSYS_SRC)/frontends/*/Makefile.inc 635include $(YOSYS_SRC)/passes/*/Makefile.inc 636include $(YOSYS_SRC)/backends/*/Makefile.inc 637include $(YOSYS_SRC)/techlibs/*/Makefile.inc 638 639else 640 641include $(YOSYS_SRC)/frontends/verilog/Makefile.inc 642include $(YOSYS_SRC)/frontends/rtlil/Makefile.inc 643include $(YOSYS_SRC)/frontends/ast/Makefile.inc 644include $(YOSYS_SRC)/frontends/blif/Makefile.inc 645 646OBJS += passes/hierarchy/hierarchy.o 647OBJS += passes/cmds/select.o 648OBJS += passes/cmds/show.o 649OBJS += passes/cmds/stat.o 650OBJS += passes/cmds/cover.o 651OBJS += passes/cmds/design.o 652OBJS += passes/cmds/plugin.o 653 654include $(YOSYS_SRC)/passes/proc/Makefile.inc 655include $(YOSYS_SRC)/passes/opt/Makefile.inc 656include $(YOSYS_SRC)/passes/techmap/Makefile.inc 657 658include $(YOSYS_SRC)/backends/verilog/Makefile.inc 659include $(YOSYS_SRC)/backends/rtlil/Makefile.inc 660 661include $(YOSYS_SRC)/techlibs/common/Makefile.inc 662 663endif 664 665ifeq ($(LINK_ABC),1) 666OBJS += $(PROGRAM_PREFIX)yosys-libabc.a 667endif 668 669# prevent the CXXFLAGS set by this Makefile from reaching abc/Makefile, 670# especially the -MD flag which will break the build when CXX is clang 671unexport CXXFLAGS 672 673top-all: $(TARGETS) $(EXTRA_TARGETS) 674 @echo "" 675 @echo " Build successful." 676 @echo "" 677 678ifeq ($(CONFIG),emcc) 679yosys.js: $(filter-out yosysjs-$(YOSYS_VER).zip,$(EXTRA_TARGETS)) 680endif 681 682$(PROGRAM_PREFIX)yosys$(EXE): $(OBJS) 683 $(P) $(LD) -o $(PROGRAM_PREFIX)yosys$(EXE) $(LDFLAGS) $(OBJS) $(LDLIBS) 684 685libyosys.so: $(filter-out kernel/driver.o,$(OBJS)) 686ifeq ($(OS), Darwin) 687 $(P) $(LD) -o libyosys.so -shared -Wl,-install_name,$(LIBDIR)/libyosys.so $(LDFLAGS) $^ $(LDLIBS) 688else 689 $(P) $(LD) -o libyosys.so -shared -Wl,-soname,$(LIBDIR)/libyosys.so $(LDFLAGS) $^ $(LDLIBS) 690endif 691 692%.o: %.cc 693 $(Q) mkdir -p $(dir $@) 694 $(P) $(CXX) -o $@ -c $(CPPFLAGS) $(CXXFLAGS) $< 695 696%.pyh: %.h 697 $(Q) mkdir -p $(dir $@) 698 $(P) cat $< | grep -E -v "#[ ]*(include|error)" | $(LD) $(CXXFLAGS) -x c++ -o $@ -E -P - 699 700ifeq ($(ENABLE_PYOSYS),1) 701$(PY_WRAPPER_FILE).cc: misc/$(PY_GEN_SCRIPT).py $(PY_WRAP_INCLUDES) 702 $(Q) mkdir -p $(dir $@) 703 $(P) python$(PYTHON_VERSION) -c "from misc import $(PY_GEN_SCRIPT); $(PY_GEN_SCRIPT).gen_wrappers(\"$(PY_WRAPPER_FILE).cc\")" 704endif 705 706%.o: %.cpp 707 $(Q) mkdir -p $(dir $@) 708 $(P) $(CXX) -o $@ -c $(CPPFLAGS) $(CXXFLAGS) $< 709 710YOSYS_VER_STR := Yosys $(YOSYS_VER) (git sha1 $(GIT_REV), $(notdir $(CXX)) $(shell \ 711 $(CXX) --version | tr ' ()' '\n' | grep '^[0-9]' | head -n1) $(filter -f% -m% -O% -DNDEBUG,$(CXXFLAGS))) 712 713kernel/version_$(GIT_REV).cc: $(YOSYS_SRC)/Makefile 714 $(P) rm -f kernel/version_*.o kernel/version_*.d kernel/version_*.cc 715 $(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 716 717ifeq ($(ENABLE_VERIFIC),1) 718CXXFLAGS_NOVERIFIC = $(foreach v,$(CXXFLAGS),$(if $(findstring $(VERIFIC_DIR),$(v)),,$(v))) 719LDLIBS_NOVERIFIC = $(foreach v,$(LDLIBS),$(if $(findstring $(VERIFIC_DIR),$(v)),,$(v))) 720else 721CXXFLAGS_NOVERIFIC = $(CXXFLAGS) 722LDLIBS_NOVERIFIC = $(LDLIBS) 723endif 724 725$(PROGRAM_PREFIX)yosys-config: misc/yosys-config.in 726 $(P) $(SED) -e 's#@CXXFLAGS@#$(subst -I. -I"$(YOSYS_SRC)",-I"$(DATDIR)/include",$(strip $(CXXFLAGS_NOVERIFIC)))#;' \ 727 -e 's#@CXX@#$(strip $(CXX))#;' -e 's#@LDFLAGS@#$(strip $(LDFLAGS) $(PLUGIN_LDFLAGS))#;' -e 's#@LDLIBS@#$(strip $(LDLIBS_NOVERIFIC))#;' \ 728 -e 's#@BINDIR@#$(strip $(BINDIR))#;' -e 's#@DATDIR@#$(strip $(DATDIR))#;' < $< > $(PROGRAM_PREFIX)yosys-config 729 $(Q) chmod +x $(PROGRAM_PREFIX)yosys-config 730 731abc/abc-$(ABCREV)$(EXE) abc/libabc-$(ABCREV).a: 732 $(P) 733ifneq ($(ABCREV),default) 734 $(Q) if test -d abc/.hg; then \ 735 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; \ 736 fi 737 $(Q) if test -d abc && ! git -C abc diff-index --quiet HEAD; then \ 738 echo 'REEBE: NOP pbagnvaf ybpny zbqvsvpngvbaf! Frg NOPERI=qrsnhyg va Lbflf Znxrsvyr!' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; false; \ 739 fi 740# set a variable so the test fails if git fails to run - when comparing outputs directly, empty string would match empty string 741 $(Q) if ! (cd abc 2> /dev/null && rev="`git rev-parse $(ABCREV)`" && test "`git rev-parse HEAD`" == "$$rev"); then \ 742 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; }; \ 743 echo "Pulling ABC from $(ABCURL):"; set -x; \ 744 test -d abc || git clone $(ABCURL) abc; \ 745 cd abc && $(MAKE) DEP= clean && git fetch $(ABCURL) && git checkout $(ABCREV); \ 746 fi 747endif 748 $(Q) rm -f abc/abc-[0-9a-f]* 749 $(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) 750 751ifeq ($(ABCREV),default) 752.PHONY: abc/abc-$(ABCREV)$(EXE) 753.PHONY: abc/libabc-$(ABCREV).a 754endif 755 756$(PROGRAM_PREFIX)yosys-abc$(EXE): abc/abc-$(ABCREV)$(EXE) 757 $(P) cp abc/abc-$(ABCREV)$(EXE) $(PROGRAM_PREFIX)yosys-abc$(EXE) 758 759$(PROGRAM_PREFIX)yosys-libabc.a: abc/libabc-$(ABCREV).a 760 $(P) cp abc/libabc-$(ABCREV).a $(PROGRAM_PREFIX)yosys-libabc.a 761 762ifneq ($(SEED),) 763SEEDOPT="-S $(SEED)" 764else 765SEEDOPT="" 766endif 767 768ifneq ($(ABCEXTERNAL),) 769ABCOPT="-A $(ABCEXTERNAL)" 770else 771ABCOPT="" 772endif 773 774test: $(TARGETS) $(EXTRA_TARGETS) 775 +cd tests/simple && bash run-test.sh $(SEEDOPT) 776 +cd tests/simple_abc9 && bash run-test.sh $(SEEDOPT) 777 +cd tests/hana && bash run-test.sh $(SEEDOPT) 778 +cd tests/asicworld && bash run-test.sh $(SEEDOPT) 779 # +cd tests/realmath && bash run-test.sh $(SEEDOPT) 780 +cd tests/share && bash run-test.sh $(SEEDOPT) 781 +cd tests/opt_share && bash run-test.sh $(SEEDOPT) 782 +cd tests/fsm && bash run-test.sh $(SEEDOPT) 783 +cd tests/techmap && bash run-test.sh 784 +cd tests/memories && bash run-test.sh $(ABCOPT) $(SEEDOPT) 785 +cd tests/bram && bash run-test.sh $(SEEDOPT) 786 +cd tests/various && bash run-test.sh 787 +cd tests/select && bash run-test.sh 788 +cd tests/sat && bash run-test.sh 789 +cd tests/svinterfaces && bash run-test.sh $(SEEDOPT) 790 +cd tests/svtypes && bash run-test.sh $(SEEDOPT) 791 +cd tests/proc && bash run-test.sh 792 +cd tests/blif && bash run-test.sh 793 +cd tests/opt && bash run-test.sh 794 +cd tests/aiger && bash run-test.sh $(ABCOPT) 795 +cd tests/arch && bash run-test.sh 796 +cd tests/arch/ice40 && bash run-test.sh $(SEEDOPT) 797 +cd tests/arch/xilinx && bash run-test.sh $(SEEDOPT) 798 +cd tests/arch/ecp5 && bash run-test.sh $(SEEDOPT) 799 +cd tests/arch/machxo2 && bash run-test.sh $(SEEDOPT) 800 +cd tests/arch/efinix && bash run-test.sh $(SEEDOPT) 801 +cd tests/arch/anlogic && bash run-test.sh $(SEEDOPT) 802 +cd tests/arch/gowin && bash run-test.sh $(SEEDOPT) 803 +cd tests/arch/intel_alm && bash run-test.sh $(SEEDOPT) 804 +cd tests/arch/nexus && bash run-test.sh $(SEEDOPT) 805 +cd tests/arch/quicklogic && bash run-test.sh $(SEEDOPT) 806 +cd tests/arch/gatemate && bash run-test.sh $(SEEDOPT) 807 +cd tests/rpc && bash run-test.sh 808 +cd tests/memfile && bash run-test.sh 809 +cd tests/verilog && bash run-test.sh 810 @echo "" 811 @echo " Passed \"make test\"." 812 @echo "" 813 814VALGRIND ?= valgrind --error-exitcode=1 --leak-check=full --show-reachable=yes --errors-for-leak-kinds=all 815 816vgtest: $(TARGETS) $(EXTRA_TARGETS) 817 $(VALGRIND) ./yosys -p 'setattr -mod -unset top; synth' $$( ls tests/simple/*.v | grep -v repwhile.v ) 818 @echo "" 819 @echo " Passed \"make vgtest\"." 820 @echo "" 821 822vloghtb: $(TARGETS) $(EXTRA_TARGETS) 823 +cd tests/vloghtb && bash run-test.sh 824 @echo "" 825 @echo " Passed \"make vloghtb\"." 826 @echo "" 827 828ystests: $(TARGETS) $(EXTRA_TARGETS) 829 rm -rf tests/ystests 830 git clone https://github.com/YosysHQ/yosys-tests.git tests/ystests 831 +$(MAKE) PATH="$$PWD:$$PATH" -C tests/ystests 832 @echo "" 833 @echo " Finished \"make ystests\"." 834 @echo "" 835 836# Unit test 837unit-test: libyosys.so 838 @$(MAKE) -C $(UNITESTPATH) CXX="$(CXX)" CPPFLAGS="$(CPPFLAGS)" \ 839 CXXFLAGS="$(CXXFLAGS)" LDLIBS="$(LDLIBS)" ROOTPATH="$(CURDIR)" 840 841clean-unit-test: 842 @$(MAKE) -C $(UNITESTPATH) clean 843 844install: $(TARGETS) $(EXTRA_TARGETS) 845 $(INSTALL_SUDO) mkdir -p $(DESTDIR)$(BINDIR) 846 $(INSTALL_SUDO) cp $(filter-out libyosys.so,$(TARGETS)) $(DESTDIR)$(BINDIR) 847ifneq ($(filter $(PROGRAM_PREFIX)yosys,$(TARGETS)),) 848 $(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(BINDIR)/$(PROGRAM_PREFIX)yosys 849endif 850ifneq ($(filter $(PROGRAM_PREFIX)yosys-abc,$(TARGETS)),) 851 $(INSTALL_SUDO) $(STRIP) $(DESTDIR)$(BINDIR)/$(PROGRAM_PREFIX)yosys-abc 852endif 853ifneq ($(filter $(PROGRAM_PREFIX)yosys-filterlib,$(TARGETS)),) 854 $(INSTALL_SUDO) $(STRIP) $(DESTDIR)$(BINDIR)/$(PROGRAM_PREFIX)yosys-filterlib 855endif 856 $(INSTALL_SUDO) mkdir -p $(DESTDIR)$(DATDIR) 857 $(INSTALL_SUDO) cp -r share/. $(DESTDIR)$(DATDIR)/. 858ifeq ($(ENABLE_LIBYOSYS),1) 859 $(INSTALL_SUDO) mkdir -p $(DESTDIR)$(LIBDIR) 860 $(INSTALL_SUDO) cp libyosys.so $(DESTDIR)$(LIBDIR)/ 861 $(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(LIBDIR)/libyosys.so 862ifeq ($(ENABLE_PYOSYS),1) 863 $(INSTALL_SUDO) mkdir -p $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys 864 $(INSTALL_SUDO) cp libyosys.so $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/libyosys.so 865 $(INSTALL_SUDO) cp misc/__init__.py $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/ 866endif 867endif 868 869uninstall: 870 $(INSTALL_SUDO) rm -vf $(addprefix $(DESTDIR)$(BINDIR)/,$(notdir $(TARGETS))) 871 $(INSTALL_SUDO) rm -rvf $(DESTDIR)$(DATDIR) 872ifeq ($(ENABLE_LIBYOSYS),1) 873 $(INSTALL_SUDO) rm -vf $(DESTDIR)$(LIBDIR)/libyosys.so 874ifeq ($(ENABLE_PYOSYS),1) 875 $(INSTALL_SUDO) rm -vf $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/libyosys.so 876 $(INSTALL_SUDO) rm -vf $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/__init__.py 877 $(INSTALL_SUDO) rmdir $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys 878endif 879endif 880 881update-manual: $(TARGETS) $(EXTRA_TARGETS) 882 cd manual && ../$(PROGRAM_PREFIX)yosys -p 'help -write-tex-command-reference-manual' 883 884manual: $(TARGETS) $(EXTRA_TARGETS) 885 cd manual && bash appnotes.sh 886 cd manual && bash presentation.sh 887 cd manual && bash manual.sh 888 889clean: 890 rm -rf share 891 rm -rf kernel/*.pyh 892 if test -d manual; then cd manual && sh clean.sh; fi 893 rm -f $(OBJS) $(GENFILES) $(TARGETS) $(EXTRA_TARGETS) $(EXTRA_OBJS) $(PY_WRAP_INCLUDES) $(PY_WRAPPER_FILE).cc 894 rm -f kernel/version_*.o kernel/version_*.cc 895 rm -f libs/*/*.d frontends/*/*.d passes/*/*.d backends/*/*.d kernel/*.d techlibs/*/*.d 896 rm -rf tests/asicworld/*.out tests/asicworld/*.log 897 rm -rf tests/hana/*.out tests/hana/*.log 898 rm -rf tests/simple/*.out tests/simple/*.log 899 rm -rf tests/memories/*.out tests/memories/*.log tests/memories/*.dmp 900 rm -rf tests/sat/*.log tests/techmap/*.log tests/various/*.log 901 rm -rf tests/bram/temp tests/fsm/temp tests/realmath/temp tests/share/temp tests/smv/temp 902 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_* 903 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 904 rm -f tests/tools/cmp_tbdata 905 906clean-abc: 907 $(MAKE) -C abc DEP= clean 908 rm -f $(PROGRAM_PREFIX)yosys-abc$(EXE) $(PROGRAM_PREFIX)yosys-libabc.a abc/abc-[0-9a-f]* abc/libabc-[0-9a-f]*.a 909 910mrproper: clean 911 git clean -xdf 912 913coverage: 914 ./$(PROGRAM_PREFIX)yosys -qp 'help; help -all' 915 rm -rf coverage.info coverage_html 916 lcov --capture -d . --no-external -o coverage.info 917 genhtml coverage.info --output-directory coverage_html 918 919qtcreator: 920 { for file in $(basename $(OBJS)); do \ 921 for prefix in cc y l; do if [ -f $${file}.$${prefix} ]; then echo $$file.$${prefix}; fi; done \ 922 done; find backends frontends kernel libs passes -type f \( -name '*.h' -o -name '*.hh' \); } > qtcreator.files 923 { echo .; find backends frontends kernel libs passes -type f \( -name '*.h' -o -name '*.hh' \) -printf '%h\n' | sort -u; } > qtcreator.includes 924 touch qtcreator.config qtcreator.creator 925 926vcxsrc: $(GENFILES) $(EXTRA_TARGETS) 927 rm -rf yosys-win32-vcxsrc-$(YOSYS_VER){,.zip} 928 set -e; for f in `ls $(filter %.cc %.cpp,$(GENFILES)) $(addsuffix .cc,$(basename $(OBJS))) $(addsuffix .cpp,$(basename $(OBJS))) 2> /dev/null`; do \ 929 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 930 bash misc/create_vcxsrc.sh yosys-win32-vcxsrc $(YOSYS_VER) $(GIT_REV) 931 echo "namespace Yosys { extern const char *yosys_version_str; const char *yosys_version_str=\"Yosys (Version Information Unavailable)\"; }" > kernel/version.cc 932 zip yosys-win32-vcxsrc-$(YOSYS_VER)/genfiles.zip $(GENFILES) kernel/version.cc 933 zip -r yosys-win32-vcxsrc-$(YOSYS_VER).zip yosys-win32-vcxsrc-$(YOSYS_VER)/ 934 rm -f srcfiles.txt kernel/version.cc 935 936ifeq ($(CONFIG),mxe) 937mxebin: $(TARGETS) $(EXTRA_TARGETS) 938 rm -rf yosys-win32-mxebin-$(YOSYS_VER){,.zip} 939 mkdir -p yosys-win32-mxebin-$(YOSYS_VER) 940 cp -r $(PROGRAM_PREFIX)yosys.exe share/ yosys-win32-mxebin-$(YOSYS_VER)/ 941ifeq ($(ENABLE_ABC),1) 942 cp -r $(PROGRAM_PREFIX)yosys-abc.exe abc/lib/x86/pthreadVC2.dll yosys-win32-mxebin-$(YOSYS_VER)/ 943endif 944 echo -en 'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-mxebin-$(YOSYS_VER)/readme.txt 945 echo -en 'Documentation at https://yosyshq.net/yosys/.\r\n' >> yosys-win32-mxebin-$(YOSYS_VER)/readme.txt 946 zip -r yosys-win32-mxebin-$(YOSYS_VER).zip yosys-win32-mxebin-$(YOSYS_VER)/ 947endif 948 949config-clean: clean 950 rm -f Makefile.conf 951 952config-clang: clean 953 echo 'CONFIG := clang' > Makefile.conf 954 955config-gcc: clean 956 echo 'CONFIG := gcc' > Makefile.conf 957 958config-gcc-static: clean 959 echo 'CONFIG := gcc-static' > Makefile.conf 960 echo 'ENABLE_PLUGINS := 0' >> Makefile.conf 961 echo 'ENABLE_READLINE := 0' >> Makefile.conf 962 echo 'ENABLE_TCL := 0' >> Makefile.conf 963 964config-gcc-4.8: clean 965 echo 'CONFIG := gcc-4.8' > Makefile.conf 966 967config-afl-gcc: clean 968 echo 'CONFIG := afl-gcc' > Makefile.conf 969 970config-emcc: clean 971 echo 'CONFIG := emcc' > Makefile.conf 972 echo 'ENABLE_TCL := 0' >> Makefile.conf 973 echo 'ENABLE_ABC := 0' >> Makefile.conf 974 echo 'ENABLE_PLUGINS := 0' >> Makefile.conf 975 echo 'ENABLE_READLINE := 0' >> Makefile.conf 976 echo 'ENABLE_ZLIB := 0' >> Makefile.conf 977 978config-wasi: clean 979 echo 'CONFIG := wasi' > Makefile.conf 980 echo 'ENABLE_TCL := 0' >> Makefile.conf 981 echo 'ENABLE_ABC := 0' >> Makefile.conf 982 echo 'ENABLE_PLUGINS := 0' >> Makefile.conf 983 echo 'ENABLE_READLINE := 0' >> Makefile.conf 984 echo 'ENABLE_ZLIB := 0' >> Makefile.conf 985 986config-mxe: clean 987 echo 'CONFIG := mxe' > Makefile.conf 988 echo 'ENABLE_PLUGINS := 0' >> Makefile.conf 989 990config-msys2-32: clean 991 echo 'CONFIG := msys2-32' > Makefile.conf 992 echo 'ENABLE_PLUGINS := 0' >> Makefile.conf 993 echo "PREFIX := $(MINGW_PREFIX)" >> Makefile.conf 994 995config-msys2-64: clean 996 echo 'CONFIG := msys2-64' > Makefile.conf 997 echo 'ENABLE_PLUGINS := 0' >> Makefile.conf 998 echo "PREFIX := $(MINGW_PREFIX)" >> Makefile.conf 999 1000config-cygwin: clean 1001 echo 'CONFIG := cygwin' > Makefile.conf 1002 1003config-gcov: clean 1004 echo 'CONFIG := gcc' > Makefile.conf 1005 echo 'ENABLE_GCOV := 1' >> Makefile.conf 1006 echo 'ENABLE_DEBUG := 1' >> Makefile.conf 1007 1008config-gprof: clean 1009 echo 'CONFIG := gcc' > Makefile.conf 1010 echo 'ENABLE_GPROF := 1' >> Makefile.conf 1011 1012config-sudo: 1013 echo "INSTALL_SUDO := sudo" >> Makefile.conf 1014 1015echo-yosys-ver: 1016 @echo "$(YOSYS_VER)" 1017 1018echo-git-rev: 1019 @echo "$(GIT_REV)" 1020 1021echo-abc-rev: 1022 @echo "$(ABCREV)" 1023 1024-include libs/*/*.d 1025-include frontends/*/*.d 1026-include passes/*/*.d 1027-include backends/*/*.d 1028-include kernel/*.d 1029-include techlibs/*/*.d 1030 1031.PHONY: all top-all abc test install install-abc manual clean mrproper qtcreator coverage vcxsrc mxebin 1032.PHONY: config-clean config-clang config-gcc config-gcc-static config-gcc-4.8 config-afl-gcc config-gprof config-sudo 1033