lkml.org 
[lkml]   [2022]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/4] tools, build: Retry detection of bfd-related features
    Date
    While separate features have been defined to determine which linking flags
    are required to use libbfd depending on the distribution (libbfd,
    libbfd-liberty and libbfd-liberty-z), the same has not been done for other
    features requiring linking to libbfd.

    For example, disassembler-four-args requires linking to libbfd too, but it
    should use the right linking flags. If not all the required ones are
    specified, e.g. -liberty, detection will always fail even if the feature is
    available.

    Instead of creating new features, similarly to libbfd, simply retry
    detection with the different set of flags until detection succeeds (or
    fails, if the libraries are missing). In this way, feature detection is
    transparent for the users of this building mechanism (e.g. perf), and those
    users don't have for example to set an appropriate value for the
    FEATURE_CHECK_LDFLAGS-disassembler-four-args variable.

    The number of retries and features for which the retry mechanism is
    implemented is low enough to make the increase in the complexity of
    Makefile negligible.

    Tested with perf and bpftool on Ubuntu 20.04.4 LTS, Fedora 36 and openSUSE
    Tumbleweed.

    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    ---
    tools/build/feature/Makefile | 11 +++++++----
    1 file changed, 7 insertions(+), 4 deletions(-)

    diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
    index 7c2a17e23c30..063dab19148c 100644
    --- a/tools/build/feature/Makefile
    +++ b/tools/build/feature/Makefile
    @@ -89,6 +89,8 @@ all: $(FILES)

    __BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS)
    BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1
    + BUILD_BFD = $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
    + BUILD_ALL = $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -lslang $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -lzstd -lcap

    __BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS)
    BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1
    @@ -96,7 +98,7 @@ __BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(
    ###############################

    $(OUTPUT)test-all.bin:
    - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -lslang $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -lzstd -lcap
    + $(BUILD_ALL) || $(BUILD_ALL) -lopcodes -liberty

    $(OUTPUT)test-hello.bin:
    $(BUILD)
    @@ -240,13 +242,14 @@ $(OUTPUT)test-libpython.bin:
    $(BUILD) $(FLAGS_PYTHON_EMBED)

    $(OUTPUT)test-libbfd.bin:
    - $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
    + $(BUILD_BFD)

    $(OUTPUT)test-libbfd-buildid.bin:
    - $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
    + $(BUILD_BFD) || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz

    $(OUTPUT)test-disassembler-four-args.bin:
    - $(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
    + $(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \
    + $(BUILD_BFD) -lopcodes -liberty -lz

    $(OUTPUT)test-reallocarray.bin:
    $(BUILD)
    --
    2.25.1
    \
     
     \ /
      Last update: 2022-07-19 19:09    [W:6.798 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site