Commit graph

108 commits

Author SHA1 Message Date
Emmanuel Vadot
ca19c3db2b Makefile: Specify cflags for libyaml
Some systems don't install third party software includes in a default
path (like FreeBSD), add yaml cflags to fix compilation.

Signed-off-by: Emmanuel Vadot <manu@FreeBSD.org>
2020-08-25 12:34:18 +02:00
Claudio Fontana
85e5d83984 Makefile: when building libfdt only, do not add unneeded deps
implemented originally for the QEMU consumer of libfdt.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Message-Id: <20200512103315.1926-1-cfontana@suse.de>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-05-14 17:11:53 +10:00
David Gibson
2525da3dba Bump version to v1.6.0
We've accumulated some new features and a bunch of fixes.  Also the
versioning on v1.5.1 was messed up :(.  Prepare for another release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-04 17:14:58 +11:00
David Gibson
6c253afd07 Encode $(NO_PYTHON) consistently with other variables
We have several $(NO_*) variables used to disable optional features.
$(NO_PYTHON) is encoded as empty for "include Python support" and anything
else for "disable Python support".

However the other variables - $(NO_YAML) and $(NO_VALGRIND) - use 0 for
"include" and 1 for "disable".  Change $(NO_PYTHON) to work consistently
with the others.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-04 15:44:00 +11:00
Simon Glass
464962489d Add a way to control the level of checks in the code
Add a new ASSUME_MASK option, which allows for some control over the
checks used in libfdt. With all assumptions enabled, libfdt assumes that
the input data and parameters are all correct and that internal errors
cannot happen.

By default no assumptions are made and all checks are enabled.

Signed-off-by: Simon Glass <sjg@chromium.org>
Message-Id: <20200220214557.176528-3-sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-02-24 13:38:44 +11:00
David Gibson
cab09eedd6 Move -DNO_VALGRIND into CPPFLAGS
Since -D sets preprocessor directives, it applies for the preprocessor not
just the C compiler proper and so belongs in CPPFLAGS rather than CFLAGS.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-12-19 13:14:45 +11:00
Ed Maste
0eb1cb0b53 Makefile: pass $(CFLAGS) also during dependency generation
When Valgrind is not available NO_VALGRIND is set in CFLAGS, and this
is needed during dependency generation as well as compilation.
Message-Id: <20191210163033.9888-1-emaste@freefall.freebsd.org>

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-12-17 12:34:46 +11:00
Ethan Sommer
7150286225 support byacc in addition to bison
Use -b to explicitly set file prefix, so that byacc generates files with
the same names as bison.

Add %locations to dtc-parser.y to explicitly enable location tracking
for byacc, and define YYERROR_CALL to prevent byacc from defining it to
call yyerror with 2 parameters because of the locations directive,
because dtc-parser.y defines yyerror to accept one parameter.

Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com>
Message-Id: <20191029162619.32561-1-e5ten.arch@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-11-03 20:20:22 +01:00
Joel Stanley
184f510994 Makefile: Add EXTRA_CFLAGS variable
Distributions packaging dtc may need to set extra flags. Currently when
they do that it overrides the ones set by the makefile. This is
particularly problematic when compiling without yaml, as the yaml
detection is ignored.

 ld: dtc.o: in function `main':
 dtc.c:(.text.startup+0x718): undefined reference to `dt_to_yaml'

This patch provides a EXTRA_CFLAGS variable that is added to the list of
CFLAGS, and can be set on the command line when packaging.

Signed-off-by: Joel Stanley <joel@jms.id.au>
Message-Id: <20190722030244.9580-1-joel@jms.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-07-22 13:13:24 +10:00
Rob Herring
4097bbffcf dtc: Add GPLv2 SPDX tags to files missing license text
A couple of dtc files are missing licenses. Add GPL-2.0-or-later SPDX
tag to them.

Signed-off-by: Rob Herring <robh@kernel.org>
Message-Id: <20190620211944.9378-7-robh@kernel.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-06-21 21:06:10 +10:00
David Gibson
243176c4ce Fix bogus error on rebuild
Currently if a file is touched requiring libfdt.so rebuild, it will fail
because the ln -s command will attempt to replace an already existing link
an error.  Correct this by using ln -sf.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-05-10 11:57:19 +10:00
David Gibson
5c3513f689 Link tools and tests against libfdt shared library
Currently the libfdt based tools (fdtput, fdtget, etc.) and all the
test binaries using libfdt are linked against the static version of libfdt.
That's made it very easy in the past to forget to properly update the
version.lds file which is needed to make functions publicaly accessible
from the shared library.

To avoid problems like that in future, alter the build so that we link and
run the tests against the shared library version of libfdt.

That immediately points out several important symbols that are still
missing from the version.lds, so fix those as well.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-03-29 17:20:16 +11:00
David Gibson
c5d45188f9 Clean up LDLIBS handling
We currently set LDLIBS to include libyaml globally if we're using it.
However only dtc itself actually needs to link with libyaml - the other
tool binaries don't.  Avoid that unnecessary inclusion by making LDLIBS
handling per-target.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-03-29 16:15:08 +11:00
David Gibson
6ef8fcd05b Rebuild libfdt shared object if versioning linker script changes
The usable content of the shared library varies depending on the symbol
versions given in the version.lds linker script, however it's not currently
in the make dependencies.  Correct that, and move the libfdt rules together
for consistency while we're at it.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-03-29 15:43:24 +11:00
David Gibson
26ee65a16c Use Python3 by default
Python2 is deprecated upstream, lets try to move forwards. Along with it
generalize the .gitignore file so we ignore the .pyc files in the new
location that Python3 uses.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-03-29 15:43:24 +11:00
David Gibson
d37f6b2010 Bump version to v1.5.0
We've accumulated several new features as well as a number of bugfixes,
so prepare for another release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-03-06 15:51:37 +11:00
David Gibson
f9c0a425b6 Remove broken objdir / srcdir support
The dtc makefiles have support for building into a separate directory from
the sources... except that it's broken and probably always has been.

Remove the pretense.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-11-23 21:58:42 +11:00
David Gibson
99284c4db9 Refine pylibfdt_clean target
Move it to the subdir Makefile, generalize some of the patterns, remove
the 'build' directory made by setup.py and __pycache__ directory made by
Python3.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-11-23 21:24:44 +11:00
David Gibson
a4629cfaed Refine libfdt_clean target
Move it to the libfdt Makefile piece, use neater make syntax, and remove
redundant command (already included in STD_CLEANFILES).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-11-23 21:11:47 +11:00
Lumir Balhar
8113c00b99 pylibfdt: Allow switch to Python 3 via environment variable PYTHON
Python 2 is still the default but it can be changed by
setting environment variable PYTHON before build/test.

Signed-off-by: Lumir Balhar <lbalhar@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-11-23 17:37:56 +11:00
Grant Likely
c86da84d30 Add support for YAML encoded output
YAML encoded DT is useful for validation of DTs using binding schemas.

The YAML encoding is an intermediate format used for validation and
is therefore subject to change as needed. The YAML output is dependent
on DTS input with type information preserved.

Signed-off-by: Grant Likely <grant.likely@arm.com>
[robh: make YAML support optional, build fixes, Travis CI test,
 preserve type information in paths and phandles]
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-09-13 11:39:03 +10:00
David Gibson
b94c056b13 Make valgrind optional
Some platforms don't have valgrind support, and sometimes you simply might
not want to use valgrind.  But at present, dtc, or more specifically its
testsuite, won't compile without valgrind because we use the valgrind
client interface in some places to improve our testing and suppress false
positives.

This adds some Makefile detection to correctly handle the case where
valgrind is not available.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-09-10 16:46:59 +10:00
David Gibson
88f18909db dtc: Bump version to v1.4.7
We've accumulated a bunch of bugfixes, including considerable improvements
to libfdt's memory safety, so get ready for another release.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-07-23 13:00:50 +10:00
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