| From 803b30be89232c191381cda4807e1fec0d90b0c0 Mon Sep 17 00:00:00 2001 |
| From: Sam Lunt <samueljlunt@gmail.com> |
| Date: Fri, 31 Jan 2020 12:11:23 -0600 |
| Subject: [PATCH] perf tools: Support Python 3.8+ in Makefile |
| |
| commit b9c9ce4e598e012ca7c1813fae2f4d02395807de upstream. |
| |
| Python 3.8 changed the output of 'python-config --ldflags' to no longer |
| include the '-lpythonX.Y' flag (this apparently fixed an issue loading |
| modules with a statically linked Python executable). The libpython |
| feature check in linux/build/feature fails if the Python library is not |
| included in FEATURE_CHECK_LDFLAGS-libpython variable. |
| |
| This adds a check in the Makefile to determine if PYTHON_CONFIG accepts |
| the '--embed' flag and passes that flag alongside '--ldflags' if so. |
| |
| tools/perf is the only place the libpython feature check is used. |
| |
| Signed-off-by: Sam Lunt <samuel.j.lunt@gmail.com> |
| Tested-by: He Zhe <zhe.he@windriver.com> |
| Link: http://lore.kernel.org/lkml/c56be2e1-8111-9dfe-8298-f7d0f9ab7431@windriver.com |
| Acked-by: Jiri Olsa <jolsa@redhat.com> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: trivial@kernel.org |
| Cc: stable@kernel.org |
| Link: http://lore.kernel.org/lkml/20200131181123.tmamivhq4b7uqasr@gmail.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config |
| index f7115501435f..6718dc74ad64 100644 |
| --- a/tools/perf/Makefile.config |
| +++ b/tools/perf/Makefile.config |
| @@ -224,8 +224,17 @@ strip-libs = $(filter-out -l%,$(1)) |
| |
| PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) |
| |
| +# Python 3.8 changed the output of `python-config --ldflags` to not include the |
| +# '-lpythonX.Y' flag unless '--embed' is also passed. The feature check for |
| +# libpython fails if that flag is not included in LDFLAGS |
| +ifeq ($(shell $(PYTHON_CONFIG_SQ) --ldflags --embed 2>&1 1>/dev/null; echo $$?), 0) |
| + PYTHON_CONFIG_LDFLAGS := --ldflags --embed |
| +else |
| + PYTHON_CONFIG_LDFLAGS := --ldflags |
| +endif |
| + |
| ifdef PYTHON_CONFIG |
| - PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) |
| + PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) $(PYTHON_CONFIG_LDFLAGS) 2>/dev/null) |
| PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) |
| PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil |
| PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --includes 2>/dev/null) |
| -- |
| 2.7.4 |
| |