[Buildroot] [PATCH 03/36] package/libfdt: new package

Yann E. MORIN yann.morin.1998 at free.fr
Sun Aug 12 23:53:51 UTC 2012


libfdt allows one to manipulate a Flat Device Tree.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
---
 package/Config.in                                  |    1 +
 package/libfdt/Config.in                           |    6 ++
 .../libfdt/libfdt-install-missing-headers.patch    |   22 ++++++++
 package/libfdt/libfdt-separate-lib-install.patch   |   22 ++++++++
 package/libfdt/libfdt.mk                           |   56 ++++++++++++++++++++
 5 files changed, 107 insertions(+), 0 deletions(-)
 create mode 100644 package/libfdt/Config.in
 create mode 100644 package/libfdt/libfdt-install-missing-headers.patch
 create mode 100644 package/libfdt/libfdt-separate-lib-install.patch
 create mode 100644 package/libfdt/libfdt.mk

diff --git a/package/Config.in b/package/Config.in
index f308de7..f139e29 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -375,6 +375,7 @@ source "package/libaio/Config.in"
 source "package/libraw1394/Config.in"
 source "package/tslib/Config.in"
 source "package/libfreefare/Config.in"
+source "package/libfdt/Config.in"
 source "package/libftdi/Config.in"
 source "package/libhid/Config.in"
 source "package/libiqrf/Config.in"
diff --git a/package/libfdt/Config.in b/package/libfdt/Config.in
new file mode 100644
index 0000000..fe215b3
--- /dev/null
+++ b/package/libfdt/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_LIBFDT
+	bool "libfdt"
+	help
+	  libfdt if a library to manipulate Flat Device Trees.
+	  
+	  http://git.jdl.com/gitweb/?p=dtc.git  (no home page)
diff --git a/package/libfdt/libfdt-install-missing-headers.patch b/package/libfdt/libfdt-install-missing-headers.patch
new file mode 100644
index 0000000..b15d376
--- /dev/null
+++ b/package/libfdt/libfdt-install-missing-headers.patch
@@ -0,0 +1,22 @@
+libfdt: install missing header
+
+Previously, only two headers were installed: libfdt.h and fdt.h.
+But libfdt.h also #includes libfdt_env.h, which was not installed.
+
+Install this missing header too.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
+
+diff --git a/libfdt/Makefile.libfdt b/libfdt/Makefile.libfdt
+index d55a6f8..94c1e35 100644
+--- a/libfdt/Makefile.libfdt
++++ b/libfdt/Makefile.libfdt
+@@ -4,7 +4,7 @@
+ # be easily embeddable into other systems of Makefiles.
+ #
+ LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
+-LIBFDT_INCLUDES = fdt.h libfdt.h
++LIBFDT_INCLUDES = fdt.h libfdt.h libfdt_env.h
+ LIBFDT_VERSION = version.lds
+ LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+ LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
diff --git a/package/libfdt/libfdt-separate-lib-install.patch b/package/libfdt/libfdt-separate-lib-install.patch
new file mode 100644
index 0000000..5a0157d
--- /dev/null
+++ b/package/libfdt/libfdt-separate-lib-install.patch
@@ -0,0 +1,22 @@
+Makefile: add a rule to only install libfdt
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
+
+diff --git a/Makefile b/Makefile
+index 1169e6c..39e7190 100644
+--- a/Makefile
++++ b/Makefile
+@@ -156,10 +156,12 @@ endif
+ # intermediate target and building them again "for real"
+ .SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
+ 
+-install: all $(SCRIPTS)
++install: all $(SCRIPTS) libfdt_install
+ 	@$(VECHO) INSTALL
+ 	$(INSTALL) -d $(DESTDIR)$(BINDIR)
+ 	$(INSTALL) $(BIN) $(SCRIPTS) $(DESTDIR)$(BINDIR)
++
++libfdt_install: libfdt
+ 	$(INSTALL) -d $(DESTDIR)$(LIBDIR)
+ 	$(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
+ 	ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
diff --git a/package/libfdt/libfdt.mk b/package/libfdt/libfdt.mk
new file mode 100644
index 0000000..6824576
--- /dev/null
+++ b/package/libfdt/libfdt.mk
@@ -0,0 +1,56 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+LIBFDT_VERSION         = v1.3.0
+LIBFDT_SITE            = git://git.jdl.com/software/dtc.git
+LIBFDT_LICENSE         = GPLv2+/BSD-2c
+LIBFDT_LICENSE_FILES   = README.license GPL
+# Note: the dual-license only applies to the library.
+#       The DT compiler (dtc) is GPLv2+, but we do not install it (yet?).
+LIBFDT_INSTALL_STAGING = YES
+
+#----------------------------------------------------------------------------
+# Package build process
+
+define LIBFDT_BUILD_CMDS
+	$(MAKE) -C $(@D) CC="$(TARGET_CC)" \
+	                 AR="$(TARGET_AR)" \
+	                 PREFIX=/usr       \
+	                 libfdt
+endef
+
+# libfdt_install is our own install rule added by our patch
+define LIBFDT_INSTALL_STAGING_CMDS
+	$(MAKE) CC="$(TARGET_CC)" AR="$(TARGET_AR)" -C $(@D) \
+	        DESTDIR=$(STAGING_DIR) PREFIX=/usr           \
+	        libfdt_install
+endef
+
+# libfdt does not have any uninstall rule
+define LIBFDT_UNINSTALL_STAGING_CMDS
+	rm -f $(STAGING_DIR)/usr/lib/libfdt.a
+	rm -f $(STAGING_DIR)/usr/lib/libfdt*.so*
+	rm -f $(STAGING_DIR)/usr/include/libfdt*.h
+	rm -f $(STAGING_DIR)/usr/include/fdt.h
+endef
+
+# Usually, mode 0644 is enough for libraries (shared or static), but the
+# buildroot documentation dsays 0755, so be dumb and follow the docs. ;-p
+# And on target, we only require the SONAME-named library, not all the
+# symlinks, but:
+#   - libfdt's Makefile does not offer such a rule,
+#   - other buildroot packages do install lib symlinks,
+# so do as all others do.
+define LIBFDT_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/libfdt/libfdt*.so* $(TARGET_DIR)/usr/lib
+endef
+
+define LIBFDT_UNINSTALL_TARGET_CMDS
+	rm -f $(TARGET_DIR)/usr/lib/libfdt*.so*
+endef
+
+define LIBFDT_CLEAN_CMDS
+	$(MAKE) -C $(@D) libfdt_clean
+endef
+
+$(eval $(generic-package))
-- 
1.7.2.5



More information about the buildroot mailing list