# 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
