From eeecb54532291d3e14d2fa943f17aef5e03ce49a Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Mon, 5 Aug 2024 19:28:09 +0200 Subject: [PATCH 1/3] Makefile: no LTO and lld by default --- .github/workflows/test-build.yml | 2 +- .github/workflows/test-verific.yml | 2 +- Makefile | 4 +++- README.md | 11 +++++++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index bf95688a1..0eb2c65c5 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -56,7 +56,7 @@ jobs: mkdir build cd build make -f ../Makefile config-$CC - make -f ../Makefile -j$procs + make -f ../Makefile -j$procs ENABLE_LTO=1 - name: Log yosys-config output run: | diff --git a/.github/workflows/test-verific.yml b/.github/workflows/test-verific.yml index 5b6268a2e..e08f7bd2e 100644 --- a/.github/workflows/test-verific.yml +++ b/.github/workflows/test-verific.yml @@ -41,7 +41,7 @@ jobs: echo "ENABLE_VERIFIC_LIBERTY := 1" >> Makefile.conf echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf echo "ENABLE_CCACHE := 1" >> Makefile.conf - make -j${{ env.procs }} + make -j${{ env.procs }} ENABLE_LTO=1 - name: Install Yosys run: | diff --git a/Makefile b/Makefile index bc9633db5..4b9cd97da 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ ENABLE_PYOSYS := 0 ENABLE_GCOV := 0 ENABLE_GPROF := 0 ENABLE_DEBUG := 0 -ENABLE_LTO := 1 +ENABLE_LTO := 0 ENABLE_CCACHE := 0 # sccache is not always a drop-in replacement for ccache in practice ENABLE_SCCACHE := 0 @@ -223,7 +223,9 @@ LTOFLAGS := $(GCC_LTO) ifeq ($(CONFIG),clang) CXX = clang++ CXXFLAGS += -std=$(CXXSTD) $(OPT_LEVEL) +ifeq ($(ENABLE_LTO),1) LINKFLAGS += -fuse-ld=lld +endif ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H $(ABC_ARCHFLAGS)" LTOFLAGS := $(CLANG_LTO) diff --git a/README.md b/README.md index 59637b9bb..7437bb283 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,17 @@ unless `CXX` is assigned in the call to make, e.g. $ make CXX=$CXX +The Makefile has many variables influencing the build process. These can be +adjusted by modifying the Makefile.conf file which is created at the +`make config-...` step (see above), or they can be set by passing an option +to the make command directly. + +For example, if you have clang, and (a compatible version of) `ld.lld` +available in PATH, it's recommended to speed up incremental builds with +lld by enabling LTO: + + $ make ENABLE_LTO=1 + For other compilers and build configurations it might be necessary to make some changes to the config section of the Makefile. From d2b57886745c6d838f0ebbfa38f8f6b47fa31d6e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 00:18:14 +0000 Subject: [PATCH 2/3] Bump version --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index bc9633db5..2aa080aca 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,7 @@ ifeq ($(OS), Haiku) CXXFLAGS += -D_DEFAULT_SOURCE endif -YOSYS_VER := 0.43+86 +YOSYS_VER := 0.43+89 # Note: We arrange for .gitcommit to contain the (short) commit hash in # tarballs generated with git-archive(1) using .gitattributes. The git repo From 80ba43d26264738c93900129dc0aab7fab36c53f Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Tue, 6 Aug 2024 09:42:28 +0200 Subject: [PATCH 3/3] Release version 0.44 --- CHANGELOG | 15 ++++++++++++++- Makefile | 4 ++-- docs/source/conf.py | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 160f480e7..7f2f14cf2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,8 +2,21 @@ List of major changes and improvements between releases ======================================================= -Yosys 0.43 .. Yosys 0.44-dev +Yosys 0.43 .. Yosys 0.44 -------------------------- + * Various + - Added ENABLE_LTO compile option to enable link time + optimizations. + - Build support for Haiku OS. + + * New commands and options + - Added "keep_hierarchy" pass to add attribute with + same name to modules based on cost. + - Added options "-noopt","-bloat" and "-check_cost" to + "test_cell" pass. + + * New back-ends + - Added initial PolarFire support. ( synth_microchip ) Yosys 0.42 .. Yosys 0.43 -------------------------- diff --git a/Makefile b/Makefile index 617a79c98..ac0e0507c 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,7 @@ ifeq ($(OS), Haiku) CXXFLAGS += -D_DEFAULT_SOURCE endif -YOSYS_VER := 0.43+89 +YOSYS_VER := 0.44 # Note: We arrange for .gitcommit to contain the (short) commit hash in # tarballs generated with git-archive(1) using .gitattributes. The git repo @@ -169,7 +169,7 @@ endif OBJS = kernel/version_$(GIT_REV).o bumpversion: - sed -i "/^YOSYS_VER := / s/+[0-9][0-9]*$$/+`git log --oneline ead4718.. | wc -l`/;" Makefile +# sed -i "/^YOSYS_VER := / s/+[0-9][0-9]*$$/+`git log --oneline ead4718.. | wc -l`/;" Makefile ABCMKARGS = CC="$(CXX)" CXX="$(CXX)" ABC_USE_LIBSTDCXX=1 ABC_USE_NAMESPACE=abc VERBOSE=$(Q) diff --git a/docs/source/conf.py b/docs/source/conf.py index 1dd53e954..2fdd43a31 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -5,7 +5,7 @@ import os project = 'YosysHQ Yosys' author = 'YosysHQ GmbH' copyright ='2024 YosysHQ GmbH' -yosys_ver = "0.43" +yosys_ver = "0.44" # select HTML theme html_theme = 'furo'