mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Merge pull request #4502 from YosysHQ/emil/build-opt-levels
Release build configuration improvements
This commit is contained in:
		
						commit
						e21dd292fc
					
				
					 7 changed files with 39 additions and 26 deletions
				
			
		
							
								
								
									
										3
									
								
								.github/actions/setup-build-env/action.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/actions/setup-build-env/action.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -14,7 +14,7 @@ runs: | |||
|       if: runner.os == 'macOS' | ||||
|       shell: bash | ||||
|       run: | | ||||
|         HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install bison flex gawk libffi pkg-config bash autoconf | ||||
|         HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install bison flex gawk libffi pkg-config bash autoconf llvm | ||||
| 
 | ||||
|     - name: Linux runtime environment | ||||
|       if: runner.os == 'Linux' | ||||
|  | @ -28,6 +28,7 @@ runs: | |||
|       shell: bash | ||||
|       run: | | ||||
|         echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH | ||||
|         echo "$(brew --prefix llvm)/bin" >> $GITHUB_PATH | ||||
|         echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH | ||||
|         echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH | ||||
|         echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV | ||||
|  |  | |||
							
								
								
									
										3
									
								
								Brewfile
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								Brewfile
									
										
									
									
									
								
							|  | @ -9,4 +9,5 @@ brew "python3" | |||
| brew "tcl-tk" | ||||
| brew "xdot" | ||||
| brew "bash" | ||||
| brew 'boost-python3' | ||||
| brew "boost-python3" | ||||
| brew "llvm" | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ RUN apt-get update -qq \ | |||
|  && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ | ||||
|     ca-certificates \ | ||||
|     clang \ | ||||
|     lld \ | ||||
|     curl \ | ||||
|     libffi-dev \ | ||||
|     libreadline-dev \ | ||||
|  |  | |||
							
								
								
									
										50
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										50
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -34,7 +34,7 @@ ENABLE_PYOSYS := 0 | |||
| ENABLE_GCOV := 0 | ||||
| ENABLE_GPROF := 0 | ||||
| ENABLE_DEBUG := 0 | ||||
| ENABLE_NDEBUG := 0 | ||||
| ENABLE_LTO := 1 | ||||
| ENABLE_CCACHE := 0 | ||||
| # sccache is not always a drop-in replacement for ccache in practice
 | ||||
| ENABLE_SCCACHE := 0 | ||||
|  | @ -53,6 +53,11 @@ SANITIZER = | |||
| # SANITIZER = undefined
 | ||||
| # SANITIZER = cfi
 | ||||
| 
 | ||||
| # Prefer using ENABLE_DEBUG over setting these
 | ||||
| OPT_LEVEL := -O3 | ||||
| GCC_LTO := | ||||
| CLANG_LTO := -flto=thin | ||||
| 
 | ||||
| PROGRAM_PREFIX := | ||||
| 
 | ||||
| OS := $(shell uname -s) | ||||
|  | @ -212,10 +217,15 @@ ifeq ($(OS), OpenBSD) | |||
| ABC_ARCHFLAGS += "-DABC_NO_RLIMIT" | ||||
| endif | ||||
| 
 | ||||
| # This gets overridden later.
 | ||||
| LTOFLAGS := $(GCC_LTO) | ||||
| 
 | ||||
| ifeq ($(CONFIG),clang) | ||||
| CXX = clang++ | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) | ||||
| LINKFLAGS += -fuse-ld=lld | ||||
| ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H $(ABC_ARCHFLAGS)" | ||||
| LTOFLAGS := $(CLANG_LTO) | ||||
| 
 | ||||
| ifneq ($(SANITIZER),) | ||||
| $(info [Clang Sanitizer] $(SANITIZER)) | ||||
|  | @ -231,19 +241,20 @@ endif | |||
| ifneq ($(findstring cfi,$(SANITIZER)),) | ||||
| CXXFLAGS += -flto | ||||
| LINKFLAGS += -flto | ||||
| LTOFLAGS = | ||||
| endif | ||||
| endif | ||||
| 
 | ||||
| else ifeq ($(CONFIG),gcc) | ||||
| CXX = g++ | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) | ||||
| ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H $(ABC_ARCHFLAGS)" | ||||
| 
 | ||||
| else ifeq ($(CONFIG),gcc-static) | ||||
| LINKFLAGS := $(filter-out -rdynamic,$(LINKFLAGS)) -static | ||||
| LIBS := $(filter-out -lrt,$(LIBS)) | ||||
| CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) | ||||
| ABCMKARGS = CC="$(CC)" CXX="$(CXX)" LD="$(CXX)" ABC_USE_LIBSTDCXX=1 LIBS="-lm -lpthread -static" OPTFLAGS="-O" \
 | ||||
|                        ARCHFLAGS="-DABC_USE_STDINT_H -DABC_NO_DYNAMIC_LINKING=1 -Wno-unused-but-set-variable $(ARCHFLAGS)" ABC_USE_NO_READLINE=1 | ||||
| ifeq ($(DISABLE_ABC_THREADS),1) | ||||
|  | @ -252,12 +263,12 @@ endif | |||
| 
 | ||||
| else ifeq ($(CONFIG),afl-gcc) | ||||
| CXX = AFL_QUIET=1 AFL_HARDEN=1 afl-gcc | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) | ||||
| ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" | ||||
| 
 | ||||
| else ifeq ($(CONFIG),cygwin) | ||||
| CXX = g++ | ||||
| CXXFLAGS += -std=gnu++11 -Os | ||||
| CXXFLAGS += -std=gnu++11 $(OPT_LEVEL) | ||||
| ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H" | ||||
| 
 | ||||
| else ifeq ($(CONFIG),wasi) | ||||
|  | @ -272,7 +283,7 @@ AR = $(WASI_SDK)/bin/ar | |||
| RANLIB = $(WASI_SDK)/bin/ranlib | ||||
| WASIFLAGS := --sysroot $(WASI_SDK)/share/wasi-sysroot $(WASIFLAGS) | ||||
| endif | ||||
| CXXFLAGS := $(WASIFLAGS) -std=$(CXXSTD) -Os -D_WASI_EMULATED_PROCESS_CLOCKS $(filter-out -fPIC,$(CXXFLAGS)) | ||||
| CXXFLAGS := $(WASIFLAGS) -std=$(CXXSTD) $(OPT_LEVEL) -D_WASI_EMULATED_PROCESS_CLOCKS $(filter-out -fPIC,$(CXXFLAGS)) | ||||
| LINKFLAGS := $(WASIFLAGS) -Wl,-z,stack-size=1048576 $(filter-out -rdynamic,$(LINKFLAGS)) | ||||
| LIBS := -lwasi-emulated-process-clocks $(filter-out -lrt,$(LIBS)) | ||||
| ABCMKARGS += AR="$(AR)" RANLIB="$(RANLIB)" | ||||
|  | @ -290,7 +301,7 @@ endif | |||
| else ifeq ($(CONFIG),mxe) | ||||
| PKG_CONFIG = /usr/local/src/mxe/usr/bin/i686-w64-mingw32.static-pkg-config | ||||
| CXX = /usr/local/src/mxe/usr/bin/i686-w64-mingw32.static-g++ | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os -D_POSIX_SOURCE -DYOSYS_MXE_HACKS -Wno-attributes | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) -D_POSIX_SOURCE -DYOSYS_MXE_HACKS -Wno-attributes | ||||
| CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) | ||||
| LINKFLAGS := $(filter-out -rdynamic,$(LINKFLAGS)) -s | ||||
| LIBS := $(filter-out -lrt,$(LIBS)) | ||||
|  | @ -301,7 +312,7 @@ EXE = .exe | |||
| 
 | ||||
| else ifeq ($(CONFIG),msys2-32) | ||||
| CXX = i686-w64-mingw32-g++ | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os -D_POSIX_SOURCE -DYOSYS_WIN32_UNIX_DIR | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) -D_POSIX_SOURCE -DYOSYS_WIN32_UNIX_DIR | ||||
| CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) | ||||
| LINKFLAGS := $(filter-out -rdynamic,$(LINKFLAGS)) -s | ||||
| LIBS := $(filter-out -lrt,$(LIBS)) | ||||
|  | @ -311,7 +322,7 @@ EXE = .exe | |||
| 
 | ||||
| else ifeq ($(CONFIG),msys2-64) | ||||
| CXX = x86_64-w64-mingw32-g++ | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os -D_POSIX_SOURCE -DYOSYS_WIN32_UNIX_DIR | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) -D_POSIX_SOURCE -DYOSYS_WIN32_UNIX_DIR | ||||
| CXXFLAGS := $(filter-out -fPIC,$(CXXFLAGS)) | ||||
| LINKFLAGS := $(filter-out -rdynamic,$(LINKFLAGS)) -s | ||||
| LIBS := $(filter-out -lrt,$(LIBS)) | ||||
|  | @ -320,13 +331,20 @@ ABCMKARGS += LIBS="-lpthread -lshlwapi -s" ABC_USE_NO_READLINE=0 CC="x86_64-w64- | |||
| EXE = .exe | ||||
| 
 | ||||
| else ifeq ($(CONFIG),none) | ||||
| CXXFLAGS += -std=$(CXXSTD) -Os | ||||
| CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) | ||||
| ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H $(ABC_ARCHFLAGS)" | ||||
| LTOFLAGS = | ||||
| 
 | ||||
| else | ||||
| $(error Invalid CONFIG setting '$(CONFIG)'. Valid values: clang, gcc, mxe, msys2-32, msys2-64, none) | ||||
| endif | ||||
| 
 | ||||
| 
 | ||||
| ifeq ($(ENABLE_LTO),1) | ||||
| CXXFLAGS += $(LTOFLAGS) | ||||
| LINKFLAGS += $(LTOFLAGS) | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(ENABLE_LIBYOSYS),1) | ||||
| TARGETS += libyosys.so | ||||
| endif | ||||
|  | @ -441,16 +459,8 @@ CXXFLAGS += -pg | |||
| LINKFLAGS += -pg | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(ENABLE_NDEBUG),1) | ||||
| CXXFLAGS := -O3 -DNDEBUG $(filter-out -Os -ggdb,$(CXXFLAGS)) | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(ENABLE_DEBUG),1) | ||||
| ifeq ($(CONFIG),clang) | ||||
| CXXFLAGS := -O0 -DDEBUG $(filter-out -Os,$(CXXFLAGS)) | ||||
| else | ||||
| CXXFLAGS := -Og -DDEBUG $(filter-out -Os,$(CXXFLAGS)) | ||||
| endif | ||||
| CXXFLAGS := -Og -DDEBUG $(filter-out $(OPT_LEVEL),$(CXXFLAGS)) | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(ENABLE_ABC),1) | ||||
|  |  | |||
|  | @ -79,7 +79,7 @@ Xdot (graphviz) is used by the ``show`` command in yosys to display schematics. | |||
| For example on Ubuntu Linux 16.04 LTS the following commands will install all | ||||
| prerequisites for building yosys: | ||||
| 
 | ||||
| 	$ sudo apt-get install build-essential clang bison flex \ | ||||
| 	$ sudo apt-get install build-essential clang lld bison flex \ | ||||
| 		libreadline-dev gawk tcl-dev libffi-dev git \ | ||||
| 		graphviz xdot pkg-config python3 libboost-system-dev \ | ||||
| 		libboost-python-dev libboost-filesystem-dev zlib1g-dev | ||||
|  |  | |||
|  | @ -94,7 +94,7 @@ Installing all prerequisites for Ubuntu 20.04: | |||
| 
 | ||||
| .. code:: console | ||||
| 
 | ||||
|    sudo sudo apt-get install build-essential clang bison flex \ | ||||
|    sudo sudo apt-get install build-essential clang lld bison flex \ | ||||
|       libreadline-dev gawk tcl-dev libffi-dev git make \ | ||||
|       graphviz xdot pkg-config python3 libboost-system-dev \ | ||||
|       libboost-python-dev libboost-filesystem-dev zlib1g-dev | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ | |||
|         yosys = pkgs.clangStdenv.mkDerivation { | ||||
|           name = "yosys"; | ||||
|           src = ./. ; | ||||
|           buildInputs = with pkgs; [ clang bison flex libffi tcl readline python3 llvmPackages.libcxxClang zlib git pkg-configUpstream ]; | ||||
|           buildInputs = with pkgs; [ clang bison flex libffi tcl readline python3 llvmPackages.libcxxClang zlib git pkg-configUpstream llvmPackages.bintools ]; | ||||
|           checkInputs = with pkgs; [ gtest ]; | ||||
|           propagatedBuildInputs = [ abc-verifier ]; | ||||
|           preConfigure = "make config-clang"; | ||||
|  | @ -41,7 +41,7 @@ | |||
|         packages.default = yosys; | ||||
|         defaultPackage = yosys; | ||||
|         devShell = pkgs.mkShell { | ||||
|           buildInputs = with pkgs; [ clang bison flex libffi tcl readline python3 llvmPackages.libcxxClang zlib git gtest abc-verifier ]; | ||||
|           buildInputs = with pkgs; [ clang llvmPackages.bintools bison flex libffi tcl readline python3 llvmPackages.libcxxClang zlib git gtest abc-verifier ]; | ||||
|         }; | ||||
|       } | ||||
|     ); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue