| From a828954ba820707d9d776c426d4728a5916b3fd6 Mon Sep 17 00:00:00 2001 |
| From: David Gibson <david@gibson.dropbear.id.au> |
| Date: Wed, 8 Aug 2018 23:34:11 +1000 |
| Subject: [PATCH 3/9] pylibfdt: Link extension module with libfdt rather than |
| rebuilding |
| |
| Currently we build the Python extension module from all the libfdt source |
| files as well as the swig wrapper file. This is a bit silly, since we've |
| already compiled libfdt itself. |
| |
| This changes the build to instead build the extension module from just the |
| swig wrapper, linking it against the libfdt.a we've already build. |
| |
| Signed-off-by: David Gibson <david@gibson.dropbear.id.au> |
| Signed-off-by: Simon Glass <sjg@chromium.org> |
| --- |
| |
| pylibfdt/Makefile.pylibfdt | 14 ++++++-------- |
| pylibfdt/setup.py | 17 ++++++----------- |
| 2 files changed, 12 insertions(+), 19 deletions(-) |
| |
| diff --git a/pylibfdt/Makefile.pylibfdt b/pylibfdt/Makefile.pylibfdt |
| index 0b5364e..6b34b01 100644 |
| --- a/pylibfdt/Makefile.pylibfdt |
| +++ b/pylibfdt/Makefile.pylibfdt |
| @@ -1,22 +1,20 @@ |
| # Makefile.pylibfdt |
| # |
| |
| -PYLIBFDT_srcs = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_SRCS)) \ |
| - $(PYLIBFDT_srcdir)/libfdt.i |
| +PYLIBFDT_srcs = $(PYLIBFDT_srcdir)/libfdt.i |
| PYMODULE = $(PYLIBFDT_objdir)/_libfdt.so |
| |
| define run_setup |
| - SOURCES="$(1)" CPPFLAGS="$(CPPFLAGS)" VERSION="$(dtc_version)" |
| - $(PYLIBFDT_objdir)/setup.py --quiet $(2) |
| + CPPFLAGS="$(CPPFLAGS)" VERSION="$(dtc_version)" |
| + $(PYLIBFDT_objdir)/setup.py --quiet $(1) |
| endef |
| |
| -$(PYMODULE): $(PYLIBFDT_srcs) |
| +$(PYMODULE): $(PYLIBFDT_srcs) $(LIBFDT_archive) |
| @$(VECHO) PYMOD $@ |
| - $(call run_setup, $^, build_ext --build-lib=$(PYLIBFDT_objdir)) |
| + $(call run_setup, build_ext --build-lib=$(PYLIBFDT_objdir)) |
| |
| install_pylibfdt: $(PYMODULE) |
| $(VECHO) INSTALL-PYLIB; \ |
| - $(call run_setup, $(PYLIBFDT_srcs), \ |
| - install $(if $(SETUP_PREFIX),--prefix=$(SETUP_PREFIX))) |
| + $(call run_setup, install $(if $(SETUP_PREFIX),--prefix=$(SETUP_PREFIX))) |
| |
| PYLIBFDT_cleanfiles = libfdt_wrap.c libfdt.py libfdt.pyc _libfdt.so |
| diff --git a/pylibfdt/setup.py b/pylibfdt/setup.py |
| index a9e8051..aafe70d 100755 |
| --- a/pylibfdt/setup.py |
| +++ b/pylibfdt/setup.py |
| @@ -5,7 +5,6 @@ setup.py file for SWIG libfdt |
| Copyright (C) 2017 Google, Inc. |
| Written by Simon Glass <sjg@chromium.org> |
| |
| -Files to be built into the extension are provided in SOURCES |
| C flags to use are provided in CPPFLAGS |
| Version is provided in VERSION |
| |
| @@ -70,35 +69,31 @@ def GetEnvFromMakefiles(): |
| Returns: |
| Tuple with: |
| Version string |
| - List of files to build |
| List of extra C preprocessor flags needed |
| """ |
| basedir = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0]))) |
| makevars = ParseMakefile(os.path.join(basedir, 'Makefile')) |
| version = '%s.%s.%s' % (makevars['VERSION'], makevars['PATCHLEVEL'], |
| makevars['SUBLEVEL']) |
| - makevars = ParseMakefile(os.path.join(basedir, 'libfdt', 'Makefile.libfdt')) |
| - files = makevars['LIBFDT_SRCS'].split() |
| - files = [os.path.join(basedir, 'libfdt', fname) for fname in files] |
| - files.append('pylibfdt/libfdt.i') |
| cflags = ['-I%s/libfdt' % basedir] |
| - return version, files, cflags |
| + return version, cflags |
| |
| |
| progname = sys.argv[0] |
| -files = os.environ.get('SOURCES', '').split() |
| cflags = os.environ.get('CPPFLAGS', '').split() |
| version = os.environ.get('VERSION') |
| |
| # If we were called directly rather than through our Makefile (which is often |
| # the case with Python module installation), read the settings from the |
| # Makefile. |
| -if not all((version, files, cflags)): |
| - version, files, cflags= GetEnvFromMakefiles() |
| +if not all((version, cflags)): |
| + version, cflags= GetEnvFromMakefiles() |
| |
| libfdt_module = Extension( |
| '_libfdt', |
| - sources = files, |
| + sources = ['pylibfdt/libfdt.i'], |
| + libraries = ['fdt'], |
| + library_dirs = ['libfdt'], |
| extra_compile_args = cflags, |
| ) |
| |
| -- |
| 2.19.0.444.g18242da7ef-goog |
| |