Hi Ladis,
On 1/4/24 10:12 AM, Ladislav Michl wrote:
Hi,
On Wed, Jan 03, 2024 at 08:23:52PM +0100, Christian Melki wrote:
Add the device-tree-compiler source as libfdt.
I guess the package could have been named dtc as a target
variant with libfdt, but I don't know of any uses of the
dtc on target environments.
Appended my version created about two years ago... Those DTC tools
were used to patch devicetree during on field board upgrade when
moving from ancient kernel. Flash repartioning was part of that
upgrade as well as use of RAUC. Basically all userspace was moved
to ramdisk, detached from flash, new image was prepared and flashed
at once - single point of failure, board was dead when this failed,
but as far as I know, it never happened. So yes, dtc on target
environment is very usefull :)
Oh. Didn't know you already had a version.
I would probably have written my own tool using libfdt,
integrated into something else. :)
But that isn't saying there is no need for anyone.
So the only use I can think of is libfdt. I think the name is more
accurate towards usage, but it isn't as symmetrical as the
typical host-* and normal variants.
In case you reconsider, I'll merge your and my variant (I didn't
bother with licenses as it was part of local BSP).
I'll gladly reconsider. It's perfectly fine if there are usecases.
Please go ahead and do a merge if you like.
But keep binaries as optional. I prefer it that way.
Either way, libfdt needs to happen on target because of qemu afaict.
The use of libfdt is separate from the host-dtc usage too,
so whatever version you'd use for external device trees are probably
not the same as target lifdt. There you'd typically want the latest
version.
This work is prepping for qemu 8.2.0+, as it requires libfdt
as a separate library. It has stopped providing one internally.
Signed-off-by: Christian Melki <[email protected]>
---
rules/libfdt.in | 9 +++++++
rules/libfdt.make | 69 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 78 insertions(+)
create mode 100644 rules/libfdt.in
create mode 100644 rules/libfdt.make
diff --git a/rules/libfdt.in b/rules/libfdt.in
new file mode 100644
index 000000000..3e30062e9
--- /dev/null
+++ b/rules/libfdt.in
@@ -0,0 +1,9 @@
+## SECTION=system_libraries
+
+menuconfig LIBFDT
+ tristate
+ prompt "libfdt "
+ help
+ libfdt is the flattend device tree library.
+ It's technically a part of the device tree compiler code,
+ but for target uses, libfdt is sometimes required.
\ No newline at end of file
diff --git a/rules/libfdt.make b/rules/libfdt.make
new file mode 100644
index 000000000..a7f5cc566
--- /dev/null
+++ b/rules/libfdt.make
@@ -0,0 +1,69 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2023 Christian Melki <[email protected]>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_LIBFDT) += libfdt
+
+#
+# Paths and names
+#
+LIBFDT_VERSION := 1.7.0
+LIBFDT_MD5 := f8b4469ad89f4b882091895ec60dde6b
+LIBFDT := dtc-$(LIBFDT_VERSION)
+LIBFDT_SUFFIX := tar.gz
+LIBFDT_URL :=
https://git.kernel.org/pub/scm/utils/dtc/dtc.git/snapshot/$(LIBFDT).$(LIBFDT_SUFFIX)
+LIBFDT_SOURCE := $(SRCDIR)/$(LIBFDT).$(LIBFDT_SUFFIX)
+LIBFDT_DIR := $(BUILDDIR)/$(LIBFDT)
+LIBFDT_LICENSE := BSD-2-Clause OR GPL-2.0
+LIBFDT_LICENSE_FILES := \
+ file://README.license;md5=a1eb22e37f09df5b5511b8a278992d0e \
+ file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+LIBFDT_CONF_TOOL := NO
+
+LIBFDT_MAKE_ENV := \
+ $(CROSS_ENV)
+
+LIBFDT_MAKE_OPT := \
+ PREFIX=/usr \
+ NO_PYTHON=1 \
+ NO_VALGRIND=1 \
+ NO_YAML=1
+
+LIBFDT_INSTALL_OPT := \
+ $(LIBFDT_MAKE_OPT) \
+ install-includes \
+ install-lib
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/libfdt.targetinstall:
+ @$(call targetinfo)
+
+ @$(call install_init, libfdt)
+ @$(call install_fixup, libfdt,PRIORITY,optional)
+ @$(call install_fixup, libfdt,SECTION,base)
+ @$(call install_fixup, libfdt,AUTHOR,"Christian Melki
<[email protected]>")
+ @$(call install_fixup, libfdt,DESCRIPTION,missing)
+
+ @$(call install_lib, libfdt, 0, 0, 0644, libfdt-$(LIBFDT_VERSION))
+
+ @$(call install_finish, libfdt)
+
+ @$(call touch)
+
+# vim: syntax=make
--
2.34.1
PACKAGES-$(PTXCONF_DTC) += dtc
#
# Paths and names
#
DTC_VERSION := 1.6.0
DTC_MD5 := cd36ac756290597f3cf1c5b6cfe12e77
DTC := dtc-v$(DTC_VERSION)
DTC_SUFFIX := tar.gz
DTC_URL :=
https://git.kernel.org/pub/scm/utils/dtc/dtc.git/snapshot/$(DTC).$(DTC_SUFFIX)
DTC_SOURCE := $(SRCDIR)/$(DTC).$(DTC_SUFFIX)
DTC_DIR := $(BUILDDIR)/$(DTC)
DTC_LICENSE := GPL-2.0-only
# ----------------------------------------------------------------------------
# Prepare
# ----------------------------------------------------------------------------
DTC_CONF_TOOL := NO
DTC_MAKE_OPT := \
PREFIX=/usr \
NO_PYTHON=1 \
NO_VALGRIND=1 \
NO_YAML=1 \
$(CROSS_ENV_CC)
DTC_INSTALL_OPT := \
$(DTC_MAKE_OPT) \
install-bin \
install-lib
# ----------------------------------------------------------------------------
# Target-Install
# ----------------------------------------------------------------------------
DTC_BIN-y :=
DTC_BIN-$(PTXCONF_DTC_DTC) += dtc
DTC_BIN-$(PTXCONF_DTC_DTDIFF) += dtdiff
DTC_BIN-$(PTXCONF_DTC_FDTDUMP) += fdtdump
DTC_BIN-$(PTXCONF_DTC_FDTGET) += fdtget
DTC_BIN-$(PTXCONF_DTC_FDTOVERLAY) += fdtoverlay
DTC_BIN-$(PTXCONF_DTC_FDTPUT) += fdtput
$(STATEDIR)/dtc.targetinstall:
@$(call targetinfo)
@$(call install_init, dtc)
@$(call install_fixup, dtc,PRIORITY,optional)
@$(call install_fixup, dtc,SECTION,base)
@$(call install_fixup, dtc,AUTHOR,"Ladislav Michl
<[email protected]>")
@$(call install_fixup, dtc,DESCRIPTION,missing)
@$(call install_lib, dtc, 0, 0, 0644, libfdt-$(DTC_VERSION))
@$(foreach tool, $(DTC_BIN-y), \
$(call install_copy, dtc, 0, 0, 0755, -, \
/usr/bin/$(tool));)
@$(call install_finish, dtc)
@$(call touch)
# vim: syntax=make