aboutsummaryrefslogtreecommitdiffstats
path: root/roms/u-boot/scripts/dtc/pylibfdt/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'roms/u-boot/scripts/dtc/pylibfdt/Makefile')
-rw-r--r--roms/u-boot/scripts/dtc/pylibfdt/Makefile41
1 files changed, 41 insertions, 0 deletions
diff --git a/roms/u-boot/scripts/dtc/pylibfdt/Makefile b/roms/u-boot/scripts/dtc/pylibfdt/Makefile
new file mode 100644
index 000000000..493995e30
--- /dev/null
+++ b/roms/u-boot/scripts/dtc/pylibfdt/Makefile
@@ -0,0 +1,41 @@
+# Unfortunately setup.py below cannot handle srctree being ".." which it often
+# is. It fails with an error like:
+# Fatal error: can't create build/temp.linux-x86_64-2.7/../lib/libfdt/fdt.o:
+# No such file or directory
+# To fix this, use an absolute path.
+LIBFDT_srcdir = $(abspath $(srctree)/$(src)/../libfdt)
+
+include $(LIBFDT_srcdir)/Makefile.libfdt
+
+# Unfortunately setup.py (or actually the Python distutil implementation) puts
+# files into the same directory as the .i file. We cannot touch the source
+# directory, so we "ship" .i file into the objtree.
+PYLIBFDT_srcs = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_SRCS)) \
+ $(obj)/libfdt.i
+
+quiet_cmd_pymod = PYMOD $@
+ cmd_pymod = unset CROSS_COMPILE; unset CFLAGS; \
+ CC="$(HOSTCC)" LDSHARED="$(HOSTCC) -shared " \
+ LDFLAGS="$(HOSTLDFLAGS)" \
+ VERSION="u-boot-$(UBOOTVERSION)" \
+ CPPFLAGS="$(HOSTCFLAGS) -I$(LIBFDT_srcdir)" OBJDIR=$(obj) \
+ SOURCES="$(PYLIBFDT_srcs)" \
+ SWIG_OPTS="-I$(LIBFDT_srcdir) -I$(LIBFDT_srcdir)/.." \
+ $(PYTHON3) $< --quiet build_ext --inplace
+
+rebuild: $(src)/setup.py $(PYLIBFDT_srcs)
+ @# Remove the library since otherwise Python doesn't seem to regenerate
+ @# the libfdt.py file if it is missing.
+ @rm -f $(obj)/_libfdt*.so
+ $(call if_changed,pymod)
+ @# Rename the file to _libfdt.so so this Makefile doesn't run every time
+ @if [ ! -e $(obj)/_libfdt.so ]; then \
+ mv $(obj)/_libfdt*.so $(obj)/_libfdt.so; \
+ fi
+
+$(obj)/_libfdt.so $(obj)/libfdt.py &: rebuild
+ @:
+
+always += _libfdt.so libfdt.py
+
+clean-files += libfdt.i _libfdt.so libfdt.py libfdt_wrap.c