Commit graph

85 commits

Author SHA1 Message Date
Simon Glass
962a45ca03 Avoid installing pylibfdt when dependencies are missing
At present we have a build check that python-dev and swig are available.
If they are not, we print a message and skip building pylibfdt.

However this check is not currently present with 'make install'. The
install is attempted, and fails. See crbug.com/789189

Split the check out into a separate script and use it twice, once for the
build and once for the install. This corrects the error.

Reported-by: Mike Frysinger <vapier@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-01-08 17:55:05 +11:00
kevans@FreeBSD.org
cd6ea1b2be Makefile: Split INSTALL out into INSTALL_{PROGRAM,LIB,DATA,SCRIPT}
For adoption into systems that may have additional arguments to be passed into
install(1) upon install, split out INSTALL into the different types of files to
be installed and use them appropriately. This allows, for instance, passing -s
to strip binaries and libs while not botching directory installs or data/script
installations.

Signed-off-by: Kyle Evans <kevans@FreeBSD.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-01-04 18:24:49 +11:00
David Gibson
e54388015a dtc: Bump version to v1.4.6
We've accumulated a number of bugfixes since v1.4.5, so prepare for another
release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-01-03 17:04:32 +11:00
David Gibson
22a65c5331 dtc: Bump version to v1.4.5
Preparing for another release.  No particular trigger for this, just a
number of accumulated enhancements since v1.4.4.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-09-27 20:00:10 +10:00
David Gibson
8c1eb1526d pylibfdt: Use Python2 explicitly
The pylibfdt code is written for Python2, not Python3.  So, it's safer to
explicitly request Python2 in our scripts and when checking pkg-config.

On Arch Linux at least, there isn't actually a plain "python" link, just
"python2" and "python3", so the current setup won't work at all.

According to https://www.python.org/dev/peps/pep-0394/ using "python2"
should work, and is preferred.

Updating pylibfdt to work with Python3 would be nice, but is a problem for
another day.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-09-27 18:10:02 +10:00
Pantelis Antoniou
42409146f2 fdtoverlay: A tool that applies overlays
Since libfdt support overlay application on FDT blobs, provide
a command line tool that applies an arbitrary number of
overlays, one after another to a base fdt blob and output
the result in the given file.

Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-06-15 15:37:07 +08:00
Cufi, Carles
d990b80138 Makefile: Fix build on MSYS2 and Cygwin
The host compiler on MSYS2 and Cygwin does not allow the -fPIC option,
issuing a warning that is treated as an error and stops the build.
Detect whether we're running under MSYS2 or Cygwin and avoid adding
-fPIC to prevent the error from happening.

Tested on Linux, MSYS2 and Cygwin.

Signed-off-by: Carles Cufi <carles.cufi@gmail.com>
[dwg: Added explicit empty CFLAGS for clarity]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-05-20 16:17:41 +10:00
David Gibson
51f56dedf8 Clean up shared library compile/link options
- Allow overriding of shared library compile time flags for platforms whic
  need it
- Include -fPIC in the link flags variable instead of including it raw
  in the target rule
- Cosmetic formatting tweaks

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-05-19 16:11:48 +10:00
Simon Glass
896f1c1332 pylibfdt: Use Makefile constructs to implement NO_PYTHON
The current mechanism uses a shell construct, but it seems better to use
a Makefile approach.

Signed-off-by: Simon Glass <sjg@chromium.org>
Suggested-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-04-08 11:54:07 +10:00
Simon Glass
90db6d9989 pylibfdt: Allow setup.py to operate stand-alone
At present we require that setup.py is executed from the Makefile, which
sets up various important things like the list of files to build and the
version number.

However many installation systems expect to be able to change to the
directory containing setup.py and run it. This allows them to support (for
example) building/installing for multiple Python versions, varying
installation paths, particular C flags, etc.

The problem in implementing this is that we don't want to duplicate the
information in the Makefile. A common solution (so I am told) is to parse
the Makefile to obtain the required information.

Update the setup.py script to read a few Makefiles when it does not see
the required information in its environment. This allows installation
using:

   ./pylibfdt/setup.py install

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-04-08 11:54:07 +10:00
Simon Glass
e91c652af2 pylibfdt: Enable installation of Python module
Adjust the setup script to support installation, and call it from the
Makefile if enabled. It will be disabled if we were unable to build the
module (e.g. due to swig being missing), or the NO_PYTHON environment
variable is set.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-29 16:13:58 +11:00
Simon Glass
8a892fd85d pylibfdt: Allow building to be disabled
Some build systems want to build python libraries separately from the
rest of the build.

Add a NO_PYTHON option to enable this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-29 16:13:58 +11:00
Simon Glass
4e0e0d0497 pylibfdt: Allow pkg-config to be supplied in the environment
Some build systems have their own version of the pkg-config tool.
Use a variable for this instead of hard-coding it, to allow for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Suggested-by: Mike Frysinger <vapier@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-27 15:27:21 +11:00
David Gibson
6afd7d9688 Correct typo: s/pylibgfdt/pylibfdt/
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-22 16:34:39 +11:00
Simon Glass
756ffc4f52 Build pylibfdt as part of the normal build process
If swig and the Python are available, build pylibfdt automatically.
Adjust the tests to run Python tests too in this case.

Signed-off-by: Simon Glass <sjg@chromium.org>
[dwg: Make error message clearer that missing swig or python-dev isn't
 fatal to the whole build]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-21 16:31:13 +11:00
Simon Glass
50f2507016 Add an initial Python library for libfdt
Add Python bindings for a bare-bones set of libfdt functions. These allow
navigating the tree and reading node names and properties.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-21 16:21:58 +11:00
David Gibson
558cd81bdd dtc: Bump version to v1.4.4
Preparing for yet another release, due to a build bug in v1.4.3.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-10 11:17:23 +11:00
David Gibson
fa8bc7f928 dtc: Bump version to v1.4.3
Preparing for new release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-02-28 16:10:08 +11:00
Stephen Boyd
4baf15f7f1 Makefile: Add tags rule
It's useful to have some tags to jump around sources. We don't
include test sources in the toplevel Makefile because they
probably aren't useful to main program development.

Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-01-30 12:09:31 +11:00
David Gibson
ec02b34c05 dtc: Makefile improvements for release uploading
This has some fixes to the make dist target, and a new make kup target for
maintainer convenience uploading new releases.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-09-03 21:02:30 +10:00
David Gibson
1ed45d40a1 dtc: Bump version to 1.4.2
Bump version in preparation for a new release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-09-03 19:34:45 +10:00
David Gibson
af9f26d1e5 Remove duplicated -Werror in dtc Makefile
The "-Werror" compiler flag is currently declared twice in the
Makefile, one time in WARNINGS, and one time in CFLAGS. Let's
remove one of them.

Signed-off-by: Thomas Huth <thuth@redhat.com>
[Moved remaining -Werror from WARNINGS to CFLAGS --dwg]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2015-11-16 23:45:36 +11:00
David Gibson
302fca9f4c dtc: Bump version to 1.4.1
Bump version number in preparation for a release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-11-12 14:29:16 +11:00
David Gibson
656bd3b6b9 dtc: Add maintainer script for signing and upload to kernel.org
This patch adds scripts/kup-dtc which builds a tarball from a specified git
tag, signs it and uploads to kernel.org with kup.  This is useful only for
dtc maintainers.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-11-12 14:27:02 +11:00
Simon Glass
76a65b14d1 Add a basic test for fdtdump
We can test fdtdump by comparing its output with the source file that was
compiled by dtc. Add a simple test that should at least catch regressions
in basic functionality.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-06-18 21:24:48 +10:00
Florian Fainelli
4491ed9f87 Makefile: add a make "dist" target
make dist can be used to produce tarballs directly from the git
repository, which can be useful to automate the release process as well
as shipping custom releases.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-02-04 11:26:19 +11:00
Florian Fainelli
c231d94e0f Makefile: enable -Wshadow by default
Now that all -Wshadow build warnings/errors are fixed, turn on -Wshadow
by default to make sure we would catch new potential shadow warnings.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2014-01-25 15:11:20 +11:00
David Gibson
9476db68b6 Makefile: provide separate install targets
Currently `make install` will install the binaries, libraries and
includes.

This change separates the install target into install-bin, install-lib
and install-includes, so we have more flexibility, particularly when
we're just using libfdt.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-08-15 15:49:24 +10:00
Jon Loeliger
65cc4d2748 Tag Version 1.4.0
Signed-off-by: Jon Loeliger <jdl@jdl.com>
2013-06-22 12:54:28 -05:00
Jon Loeliger
1456da7e2d Introduce ${TESTS_BIN} in Makefiles to identify tested executables. 2012-01-21 15:24:51 -06:00
Simon Glass
1ede50c355 Add fdtput utility to write property values to a device tree
This simple utility allows writing of values into a device tree from the
command line. It aimes to be the opposite of fdtget.

What is it for:
- Updating fdt values when a binary blob already exists
   (even though source may be available it might be easier to use this
    utility rather than sed, etc.)
- Writing machine-specific fdt values within a build system

To use it, specify the fdt binary file on command line followed by the node
and property to set. Then, provide a list of values to put into that
property. Often there will be just one, but fdtput also supports arrays and
string lists.

fdtput does not try to guess the type of the property based on looking at
the arguments. Instead it always assumes that an integer is provided. To
indicate that you want to write a string, use -ts. You can also provide
hex values with -tx.

The command line arguments are joined together into a single value. For
strings, a nul terminator is placed between each string when it is packed
into the property. To avoid this, pass the string as a single argument.

Usage:
	fdtput <options> <dt file> <<node> <property> [<value>...]
Options:
	-t <type>	Type of data
	-v		Verbose: display each value decoded from command line
	-h		Print this help

<type>	s=string, i=int, u=unsigned, x=hex
	Optional modifier prefix:
		hh or b=byte, h=2 byte, l=4 byte (default)

To read from stdin and write to stdout, use - as the file. So you can do:

cat somefile.dtb | fdtput -ts - /node prop "My string value" > newfile.dtb

This commit also adds basic tests to verify the major features.

Signed-off-by: Simon Glass <sjg@chromium.org>
2012-01-21 15:08:39 -06:00
Simon Glass
68d057f20d Add fdtget utility to read property values from a device tree
This simply utility makes it easy for scripts to read values from the device
tree. It is written in C and uses the same libfdt as the rest of the dtc
package.

What is it for:
- Reading fdt values from scripts
- Extracting fdt information within build systems
- Looking at particular values without having to dump the entire tree

To use it, specify the fdt binary file on command line followed by a list of
node, property pairs. The utility then looks up each node, finds the property
and displays the value.

Each value is printed on a new line.

fdtget tries to guess the type of each property based on its contents. This
is not always reliable, so you can use the -t option to force fdtget to decode
the value as a string, or byte, etc.

To read from stdin, use - as the file.

Usage:
	fdtget <options> <dt file> [<node> <property>]...
Options:
	-t <type>	Type of data
	-h		Print this help

<type>	s=string, i=int, u=unsigned, x=hex
	Optional modifier prefix:
		hh or b=byte, h=2 byte, l=4 byte (default)

Signed-off-by: Simon Glass <sjg@chromium.org>
2012-01-21 15:08:36 -06:00
Mike Frysinger
8f459c5d72 fdtdump: rename from ftdump
The freetype package already installs a binary named "ftdump", so the dtc
package conflicts with that.  So rename the newer dtc tool to "fdtdump".
This even makes a bit more sense:
	ftdump: [F]lat device [T]ree [dump]
	fdtdump: [F]lat [D]evice [T]ree [dump]

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
2011-10-26 08:07:51 -05:00
Simon Glass
36204fdf74 Add fdt read/write utility functions
This adds higher-level libfdt operations for reading/writing an fdt
blob from/to a file, as well as a function to decode a data type string
as will be used by fdtget, fdtput.

This also adds a few tests for the simple type argument supported by
utilfdt_decode_type.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
2011-09-22 13:49:33 -05:00
Simon Glass
9ebd9b4a56 Create Makefile.utils and move ftdump into it
We want to avoid a separate Makefile include for each utility, so this sets
up a general one for utilities.

Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Simon Glass <sjg@chromium.org>
2011-09-22 10:16:28 -05:00
Jon Loeliger
bc895d6d09 Tag Version 1.3.0
Signed-off-by: Jon Loeliger <jdl@jdl.com>
2011-05-08 14:45:39 -05:00
Paolo Bonzini
99c1db78dc libfdt: include version number in soname
The libfdt shared library is only installed by its unversioned name.
Including it properly in a distribution requires installation of both
the versioned name (used in the binary-only package) and the unversioned
name (used in the development package).  The latter is just a symbolic
link, so you need to change the soname in turn to include the version.

While at it, use Makefile variables to shorten some lines and avoid
cut-and-paste typos; and clean up remnants of when shared libraries were
not supported on Darwin.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2011-04-29 08:40:31 -05:00
David Gibson
37c0b6a091 dtc: Add code to make diffing trees easier
This patch adds a "dtdiff" script to do a useful form diff of two
device trees.  This automatically converts the tree to dts form (if
it's not already) and uses a new "-s" option in dtc to "sort" the
tree.  That is, it sorts the reserve entries, it sorts the properties
within each node by name, and it sorts nodes by name within their
parent.

This gives a pretty sensible diff between the trees, which will ignore
semantically null internal rearrangements (directly diffing the dts
files can give a lot of noise due to the order changes).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2010-11-13 15:47:29 -06:00
David Gibson
341df2bdc3 dtc: Add -Wredundant-decls (resend)
We are almost clean already with the -Wredundant-decls warning.  The
only exception is a declaration for isatty() inside the flex-generated
code.  This can be removed by using flex's "never-interactive" option,
which we probably should be using anyway, since we never parse
interactively in the sense that this option implies.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2010-04-30 08:36:47 -05:00
David Gibson
74f6a51b1f dtc: Enable more warnings
This patch turns on a bunch of extra gcc warnings, most of which are
probably a good idea.  Of the new warnings -Wnested-externs and
-Wstrict-prototypes need no code changes, we're already warning-clean.
The remaining one, -Wmissing-prototypes requires trivial changes in
some of the tests (making functions local).

This patch also rearranges the warnings flags into a separate make
variable for convenience, and turns on -Werror, to really encourage
people to keep the code warning-clean.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2010-03-10 08:12:28 -06:00
Jean-Christophe PLAGNIOL-VILLARD
9c1a0df677 add Mac OS X support
use dylib shared lib extention
allow to specifiy os specific shared lib link option
Mac OS use -dynamiclib instead of -shared, -install_name instead of -soname
and does not support --version-script

add HOSTOS macro to detect the current os you are

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
2009-07-15 21:30:14 -05:00
Emil Medve
925bd8c054 Fix libraries (static and dynamic) installation
Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com>
2009-02-17 15:44:17 -06:00
David Gibson
26d93f6c92 dtc: Make asm output more portable and add testcases
This patch adds some testcases for dtc's -Oasm mode.  Specifically it
checks that building the asm will result in the same device tree blob
in memory as -Odtb mode would produce, for a variety of trees.  This
test uncovered two difficulties with our current -Oasm output, both of
which are addressed in this patch as well.

First, -Oasm output would only be correct if assembled for a
big-endian target.  Usually that would be the case, when building
device trees into a firmware or similar.  However this makes life
inconvenient for testing on a little-endian target, and one can think
up use cases where a program running on a little endian host might
want to embed a device tree for a big-endian target.  This patch
therefore changes -Oasm output to use .byte directives instead of
.long throughout in order to generate byte-for-byte identical trees
regardless of the endianness of the assembler target.

Second, -Oasm output emitted several #define statements which were
then used in the innards of the output - i.e. it assumed the output
would be processed by cpp before being assembled.  That may not be
convenient in all build environments, and in any case doesn't work
well with the above fix.  So, -Oasm output no longer needs to be
preprocessed before assembling.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2009-02-03 08:38:01 -06:00
Josh Boyer
6272182b41 libfdt: Introduce libfdt shared library
Build a libfdt shared library in addition to the existing .a that is
created.  Symbol versioning is used from the libfdt/version.lds script.

Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
2009-01-02 09:00:52 -06:00
Jon Loeliger
68f98d7b8a Rearrange ftdump and convert-dtsv0 into sub-Makefiles.
Follows the model of the existing sub-Makefiles for dtc.

Adjust $(BIN) definition to represent installable bin programs
and use it as the list of installed programs rather than using
an enumerated list in the install target.

Adjust the tests/Makefile to clean up properly still.

Signed-off-by: Jon Loeliger <jdl@freescale.com>
2008-10-03 10:50:28 -05:00
Niklaus Giger
3a90ce6d75 Install & document convert-dtsv0
Signed-off-by: Niklaus Giger <niklaus.giger@member.fsf.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
2008-10-03 09:24:05 -05:00
Jon Loeliger
52c356d81b Tag Version 1.2.0
Signed-off-by: Jon Loeliger <jdl@jdl.com>
2008-07-25 16:17:04 -05:00
Jon Loeliger
a653228522 libfdt: Fix 'make install' target handling of .h files.
The definition of LIBFDT_INCLUDES was accidentally dropped.
Put it back and add srcdir prefix handling for it.

Signed-off-by: Jon Loeliger <jdl@freescale.com>
2008-07-23 12:12:34 -05:00
Jon Loeliger
17773b0e51 Tag Version 1.2.0-rc2
Signed-off-by: Jon Loeliger <jdl@jdl.com>
2008-07-14 13:45:08 -05:00
David Gibson
1409097db8 dtc: Enable and fix -Wcast-qual warnings
Enabling -Wcast-qual warnings in dtc shows up a number of places where
we are incorrectly discarding a const qualification.  There are also
some places where we are intentionally discarding the 'const', and we
need an ugly cast through uintptr_t to suppress the warning.  However,
most of these are pretty well isolated with the *_w() functions.  So
in the interests of maximum safety with const qualifications, this
patch enables the warnings and fixes the existing complaints.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2008-07-14 12:36:08 -05:00