1# Unfortunately setup.py below cannot handle srctree being ".." which it often 2# is. It fails with an error like: 3# Fatal error: can't create build/temp.linux-x86_64-2.7/../lib/libfdt/fdt.o: 4# No such file or directory 5# To fix this, use an absolute path. 6LIBFDT_srcdir = $(abspath $(srctree)/$(src)/../libfdt) 7 8include $(LIBFDT_srcdir)/Makefile.libfdt 9 10# Unfortunately setup.py (or actually the Python distutil implementation) puts 11# files into the same directory as the .i file. We cannot touch the source 12# directory, so we "ship" .i file into the objtree. 13PYLIBFDT_srcs = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_SRCS)) \ 14 $(obj)/libfdt.i 15 16# create a version string compliant with PEP 440 17PEP_VERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(subst -,,$(EXTRAVERSION)) 18 19quiet_cmd_pymod = PYMOD $@ 20 cmd_pymod = unset CROSS_COMPILE; unset CFLAGS; \ 21 CC="$(HOSTCC)" LDSHARED="$(HOSTCC) -shared " \ 22 LDFLAGS="$(HOSTLDFLAGS)" \ 23 VERSION="$(PEP_VERSION)" \ 24 CPPFLAGS="$(HOSTCFLAGS) -I$(LIBFDT_srcdir)" OBJDIR=$(obj) \ 25 SOURCES="$(PYLIBFDT_srcs)" \ 26 SWIG_OPTS="-I$(LIBFDT_srcdir) -I$(LIBFDT_srcdir)/.." \ 27 $(PYTHON3) $< --quiet build_ext --inplace 28 29rebuild: $(src)/setup.py $(PYLIBFDT_srcs) 30 @# Remove the library since otherwise Python doesn't seem to regenerate 31 @# the libfdt.py file if it is missing. 32 @rm -f $(obj)/_libfdt*.so 33 $(call if_changed,pymod) 34 @# Rename the file to _libfdt.so so this Makefile doesn't run every time 35 @if [ ! -e $(obj)/_libfdt.so ]; then \ 36 mv $(obj)/_libfdt*.so $(obj)/_libfdt.so; \ 37 fi 38 39$(obj)/_libfdt.so $(obj)/libfdt.py &: rebuild 40 @: 41 42always += _libfdt.so libfdt.py 43 44clean-files += libfdt.i _libfdt.so libfdt.py libfdt_wrap.c 45