From 5d7ebf3d19187978754ac8d7e60c9c0d69a9370f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Sun, 28 Nov 2021 18:06:37 +0100 Subject: [PATCH] Fix -flto[=full] -Wl,--as-needed not working on sid anymore(?) --- Makefile | 13 ++++++++----- configMakefile | 9 ++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index a3e1aa2..a5fb0c0 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ include configMakefile -LDDLLS := rt tspi crypto $(OS_LD_LIBS) +LDDLLS := rt tspi crypto PKGS := libzfs libzfs_core tss2-esys tss2-rc LDAR := $(LNCXXAR) $(foreach l,,-L$(BLDDIR)$(l)) $(foreach dll,$(LDDLLS),-l$(dll)) $(shell pkg-config --libs $(PKGS)) INCAR := $(foreach l,$(foreach l,,$(l)/include),-isystemext/$(l)) $(foreach l,,-isystem$(BLDDIR)$(l)/include) $(shell pkg-config --cflags $(PKGS)) @@ -55,7 +55,7 @@ shellcheck : i-t dracut clean : rm -rf $(OUTDIR) -build : $(subst $(SRCDIR)bin/,$(OUTDIR),$(subst .cpp,$(EXE),$(BINARY_SOURCES))) +build : $(subst $(SRCDIR)bin/,$(OUTDIR),$(subst .cpp,,$(BINARY_SOURCES))) manpages : $(patsubst $(MANDIR)%.pp,$(OUTDIR)man/%,$(MANPAGE_SOURCES)) htmlpages : $(patsubst $(MANDIR)%.pp,$(OUTDIR)man/%.html,$(MANPAGE_SOURCES)) $(OUTDIR)man/style.css i-t : $(OUTDIR)initramfs-tools/usr/share/initramfs-tools/hooks/tzpfms $(OUTDIR)initramfs-tools/usr/share/tzpfms/initramfs-tools-zfs-patch.sh @@ -90,12 +90,15 @@ $(OUTDIR)man/style.css : man/style.css @mkdir -p $(dir $@) cp $^ $@ +$(BLDDIR)libtzpfms.a : $(subst $(SRCDIR),$(OBJDIR),$(subst .cpp,.o,$(COMMON_SOURCES))) + $(AR) crs $@ $^ -$(OUTDIR)%$(EXE) : $(subst $(SRCDIR),$(OBJDIR),$(subst .cpp,$(OBJ),$(SRCDIR)bin/%.cpp $(COMMON_SOURCES))) + +$(OUTDIR)% : $(OBJDIR)bin/%.o $(BLDDIR)libtzpfms.a @mkdir -p $(dir $@) - $(CXX) $(CXXAR) -o$@ $^ -Wl,--as-needed $(LDAR) + $(CXX) $(CXXAR) -Wl,--as-needed -o$@ $^ $(LDAR) -$(OBJDIR)%$(OBJ) : $(SRCDIR)%.cpp +$(OBJDIR)%.o : $(SRCDIR)%.cpp @mkdir -p $(dir $@) $(CXX) $(CXXAR) $(INCAR) $(VERAR) $(DEF_TPH) -c -o$@ $^ diff --git a/configMakefile b/configMakefile index e5779d6..5eedb9e 100644 --- a/configMakefile +++ b/configMakefile @@ -20,14 +20,14 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -EXE := -DLL := .so -OS_LD_LIBS := - CXXVER := $(shell $(CXX) --version) ifneq "$(findstring clang,$(CXXVER))" "" # GCC doesn't have this granularity CXXSPECIFIC := -flto=full -pedantic -Wno-gnu-statement-expression -Wno-gnu-include-next -Wno-gnu-conditional-omitted-operand -Wno-c++20-designator + ifeq "$(AR)" "ar" + # Need this because -flto=full produces objects FSF ranlib (ar s) can't index + override AR := llvm-ar + endif else CXXSPECIFIC := -flto endif @@ -55,7 +55,6 @@ AWK ?= awk SED ?= sed MANDOC ?= mandoc SHELLCHECK ?= shellcheck -OBJ := .o CXXAR := -g -O3 -std=c++17 -fno-exceptions -Wall -Wextra $(CXXSPECIFIC) -pipe $(INCCXXAR) -fPIC OUTDIR := out/