@@ -96,7 +96,11 @@ ifndef PERF_DEBUG
endif
CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
-EXTLIBS = -lpthread -lrt -lelf -lm
+ifeq ($(findstring -static,$(LDFLAGS)),-static)
+ EXTLIBS = -Wl,-Bdynamic -lpthread -lrt -lelf -lm
+else
+ EXTLIBS = -lpthread -lrt -lelf -lm
+endif
ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
ALL_LDFLAGS = $(LDFLAGS)
STRIP ?= strip
@@ -569,20 +573,25 @@ else
EXTLIBS += -liberty
BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE
else
- FLAGS_BFD=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd
+ ifeq ($(findstring -static,$(LDFLAGS)),-static)
+ LDFLAGS_BFD = -Wl,-Bstatic -lbfd -Wl,-Bdynamic -ldl
+ else
+ LDFLAGS_BFD = -lbfd
+ endif
+ FLAGS_BFD=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(LDFLAGS_BFD)
has_bfd := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD))
ifeq ($(has_bfd),y)
- EXTLIBS += -lbfd
+ EXTLIBS += $(LDGLAGS_BFD)
else
- FLAGS_BFD_IBERTY=$(FLAGS_BFD) -liberty
+ FLAGS_BFD_IBERTY=$(LDFLAGS_BFD) -liberty
has_bfd_iberty := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY))
ifeq ($(has_bfd_iberty),y)
- EXTLIBS += -lbfd -liberty
+ EXTLIBS += $(LDFLAGS_BFD) -liberty
else
FLAGS_BFD_IBERTY_Z=$(FLAGS_BFD_IBERTY) -lz
has_bfd_iberty_z := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY_Z))
ifeq ($(has_bfd_iberty_z),y)
- EXTLIBS += -lbfd -liberty -lz
+ EXTLIBS += $(LDFLAGS_BFD) -liberty -lz
else
FLAGS_CPLUS_DEMANGLE=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -liberty
has_cplus_demangle := $(call try-cc,$(SOURCE_CPLUS_DEMANGLE),$(FLAGS_CPLUS_DEMANGLE))
@@ -638,6 +647,9 @@ prefix_SQ = $(subst ','\'',$(prefix))
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
+ifeq ($(findstring -static,$(LDFLAGS)),-static)
+ EXTLIBS += -lbz2 -llzma
+endif
LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group
ALL_CFLAGS += $(BASIC_CFLAGS)