04 Feb, 2020

1 commit

  • In old days, the "host-progs" syntax was used for specifying host
    programs. It was renamed to the current "hostprogs-y" in 2004.

    It is typically useful in scripts/Makefile because it allows Kbuild to
    selectively compile host programs based on the kernel configuration.

    This commit renames like follows:

    always -> always-y
    hostprogs-y -> hostprogs

    So, scripts/Makefile will look like this:

    always-$(CONFIG_BUILD_BIN2C) += ...
    always-$(CONFIG_KALLSYMS) += ...
    ...
    hostprogs := $(always-y) $(always-m)

    I think this makes more sense because a host program is always a host
    program, irrespective of the kernel configuration. We want to specify
    which ones to compile by CONFIG options, so always-y will be handier.

    The "always", "hostprogs-y", "hostprogs-m" will be kept for backward
    compatibility for a while.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

05 Nov, 2019

1 commit

  • Using Makefile's wildcard with absolute path to detect
    the presence of libyaml results in false-positive
    detection when cross-compiling e.g. in yocto environment.
    The latter results in build error:
    | scripts/dtc/yamltree.o: In function `yaml_propval_int':
    | yamltree.c: undefined reference to `yaml_sequence_start_event_initialize'
    | yamltree.c: undefined reference to `yaml_emitter_emit'
    | yamltree.c: undefined reference to `yaml_scalar_event_initialize'
    ...
    Use pkg-config to locate libyaml to address this scenario.

    Signed-off-by: Pavel Modilaynen
    [robh: silence stderr]
    Signed-off-by: Rob Herring

    Pavel Modilaynen
     

18 May, 2019

1 commit

  • Currently, the Kbuild core manipulates header search paths in a crazy
    way [1].

    To fix this mess, I want all Makefiles to add explicit $(srctree)/ to
    the search paths in the srctree. Some Makefiles are already written in
    that way, but not all. The goal of this work is to make the notation
    consistent, and finally get rid of the gross hacks.

    Having whitespaces after -I does not matter since commit 48f6e3cf5bc6
    ("kbuild: do not drop -I without parameter").

    [1]: https://patchwork.kernel.org/patch/9632347/

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

13 Dec, 2018

1 commit

  • This adds the build infrastructure for checking DT binding schema
    documents and validating dts files using the binding schema.

    Check DT binding schema documents:
    make dt_binding_check

    Build dts files and check using DT binding schema:
    make dtbs_check

    Optionally, DT_SCHEMA_FILES can be passed in with a schema file(s) to
    use for validation. This makes it easier to find and fix errors
    generated by a specific schema.

    Currently, the validation targets are separate from a normal build to
    avoid a hard dependency on the external DT schema project and because
    there are lots of warnings generated.

    Cc: Jonathan Corbet
    Cc: Mark Rutland
    Acked-by: Masahiro Yamada
    Cc: Michal Marek
    Cc: linux-doc@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Cc: linux-kbuild@vger.kernel.org
    Signed-off-by: Rob Herring

    Rob Herring
     

05 Oct, 2018

1 commit


02 Oct, 2018

1 commit

  • There is nothing arch specific about building dtb files other than their
    location under /arch/*/boot/dts/. Keeping each arch aligned is a pain.
    The dependencies and supported targets are all slightly different.
    Also, a cross-compiler for each arch is needed, but really the host
    compiler preprocessor is perfectly fine for building dtbs. Move the
    build rules to a common location and remove the arch specific ones. This
    is done in a single step to avoid warnings about overriding rules.

    The build dependencies had been a mixture of 'scripts' and/or 'prepare'.
    These pull in several dependencies some of which need a target compiler
    (specifically devicetable-offsets.h) and aren't needed to build dtbs.
    All that is really needed is dtc, so adjust the dependencies to only be
    dtc.

    This change enables support 'dtbs_install' on some arches which were
    missing the target.

    Acked-by: Will Deacon
    Acked-by: Paul Burton
    Acked-by: Ley Foon Tan
    Acked-by: Masahiro Yamada
    Cc: Michal Marek
    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: Ralf Baechle
    Cc: James Hogan
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: Chris Zankel
    Cc: Max Filippov
    Cc: linux-kbuild@vger.kernel.org
    Cc: linux-snps-arc@lists.infradead.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Cc: linux-mips@linux-mips.org
    Cc: nios2-dev@lists.rocketboards.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-xtensa@linux-xtensa.org
    Signed-off-by: Rob Herring

    Rob Herring
     

21 Sep, 2018

1 commit

  • Major changes are I2C and SPI bus checks, YAML output format (for
    future validation), some new libfdt functions, and more libfdt
    validation of dtbs.

    The YAML addition adds an optional dependency on libyaml. pkg-config is
    used to test for it and pkg-config became a kconfig dependency in 4.18.

    This adds the following commits from upstream:

    c86da84d30e4 Add support for YAML encoded output
    361b5e7d8067 Make type_marker_length helper public
    bfbfab047e45 pylibfdt: Add a means to add and delete notes
    9005f4108e7c pylibfdt: Allow delprop() to return errors
    b94c056b137e Make valgrind optional
    fd06c54d4711 tests: Better testing of dtc -I fs mode
    c3f50c9a86d9 tests: Allow dtbs_equal_unordered to ignore mem reserves
    0ac9fdee37c7 dtc: trivial '-I fs -O dts' test
    0fd1c8c783f3 pylibfdt: fdt_get_mem_rsv returns 2 uint64_t values
    04853cad18f4 pylibfdt: Don't incorrectly / unnecessarily override uint64_t typemap
    9619c8619c37 Kill bogus TYPE_BLOB marker type
    ac68ff92ae20 parser: add TYPE_STRING marker to path references
    90a190eb04d9 checks: add SPI bus checks
    53a1bd546905 checks: add I2C bus checks
    88f18909db73 dtc: Bump version to v1.4.7
    85bce8b2f06d tests: Correction to vg_prepare_blob()
    57f7f9e7bc7c tests: Don't call memcmp() with NULL arguments
    c12b2b0c20eb libfdt: fdt_address_cells() and fdt_size_cells()
    3fe0eeda0b7f livetree: Set phandle properties type to uint32
    853649acceba pylibfdt: Support the sequential-write interface
    9b0e4fe26093 tests: Improve fdt_resize() tests
    1087504bb3e8 libfdt: Add necessary header padding in fdt_create()
    c72fa777e613 libfdt: Copy the struct region in fdt_resize()
    32b9c6130762 Preserve datatype markers when emitting dts format
    6dcb8ba408ec libfdt: Add helpers for accessing unaligned words
    42607f21d43e tests: Fix incorrect check name 'prop_name_chars'
    9d78c33bf8a1 tests: fix grep for checks error messages
    b770f3d1c13f pylibfdt: Support setting the name of a node
    2f0d07e678e0 pylibfdt: Add functions to set and get properties as strings
    354d3dc55939 pylibfdt: Update the bytearray size with pack()
    3c374d46acce pylibfdt: Allow reading integer values from properties
    49d32ce40bb4 pylibfdt: Use an unsigned type for fdt32_t
    481246a0c13a pylibfdt: Avoid accessing the internal _fdt member in tests
    9aafa33d99ed pylibfdt: Add functions to update properties
    5a598671fdbf pylibfdt: Support device-tree creation/expansion
    483e170625e1 pylibfdt: Add support for reading the memory reserve map
    29bb05aa4200 pylibfdt: Add support for the rest of the header functions
    582a7159a5d0 pylibfdt: Add support for fdt_next_node()
    f0f8c9169819 pylibfdt: Reorder functions to match libfdt.h
    64a69d123935 pylibfdt: Return string instead of bytearray from getprop()
    4d09a83420df fdtput: Add documentation
    e617cbe1bd67 fdtget: Add documentation
    180a93924014 Use format specifiers in a bunch of places we should
    b9af3b396576 scripts/dtc: Fixed format mismatch in fprintf
    4b8fcc3d015c libfdt: Add fdt_check_full() function
    c14223fb2292 tests: Use valgrind client requests for better checking
    5b67d2b955a3 tests: Better handling of valgrind errors saving blobs
    e2556aaeb506 tests: Remove unused #define
    fb9c6abddaa8 Use size_t for blob lengths in utilfdt_read*
    0112fda03bf6 libfdt: Add fdt_header_size()
    6473a21d8bfe Consolidate utilfdt_read_len() variants
    d5db5382c5e5 libfdt: Safer access to memory reservations
    719d582e98ec libfdt: Propagate name errors in fdt_getprop_by_offset()
    70166d62a27f libfdt: Safer access to strings section
    eb890c0f77dc libfdt: Make fdt_check_header() more thorough
    899d6fad93f3 libfdt: Improve sequential write state checking
    04b5b4062ccd libfdt: Clean up header checking functions
    44d3efedc816 Preserve datatype information when parsing dts
    f0be81bd8de0 Make Property a subclass of bytearray
    24b1f3f064d4 pylibfdt: Add a method to access the device tree directly

    Signed-off-by: Rob Herring

    Rob Herring
     

22 Aug, 2018

1 commit

  • It is tedious to specify extra compiler options for every file.
    HOST_EXTRACFLAGS is useful to add options to all files in a
    directory.

    -I$(src)/libfdt is needed for all the files in this directory
    to include libfdt_env.h etc. from scripts/dtc/libfdt/.

    On the other hand, -I$(src) is used to include check-in headers
    from generated C files. Thus, I added it only to dtc-lexer.lex.o
    and dtc-parser.tab.o .

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Rob Herring

    Masahiro Yamada
     

07 Apr, 2018

2 commits

  • Files generated by if_changed* must be added to 'targets' to include
    *.cmd files. Otherwise, they would be regenerated every time.

    The build system automatically adds objects to 'targets' where
    appropriate, such as obj-y, extra-y, etc. but does nothing for
    intermediate files. So, each Makefile needs to add them by itself.

    There are some common cases where objects are generated by chained
    rules. Lexers and parsers are compiled like follows:

    %.lex.o
    Acked-by: Frank Rowand

    Masahiro Yamada
     
  • Files suffixed by .lex.c, .tab.[ch] are generated lexers, parsers,
    respectively. Clean them up globally from the top Makefile.

    Some of the final host programs those lexer/parser are linked into
    are necessary for building external modules, but the intermediates
    are unneeded. They can be cleaned away by 'make clean' instead of
    'make mrproper'.

    Signed-off-by: Masahiro Yamada
    Acked-by: Frank Rowand

    Masahiro Yamada
     

06 Mar, 2018

1 commit


02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

21 Nov, 2012

1 commit

  • Fix "make distclean" to clean up generated dtc files.

    Without this patch the following files are left around:
    - dtc-lexer.lex.c
    - dtc-parser.tab.c
    - dtc-parser.tab.h

    Signed-off-by: Magnus Damm
    Reviewed-by: Simon Horman
    Signed-off-by: Grant Likely

    Magnus Damm
     

10 Jun, 2011

1 commit


04 Jan, 2011

1 commit

  • Pull in recent changes from the main dtc repository. These changes
    primarily allow multiple device trees to be declared which are merged
    by dtc. This feature allows us to include a basic dts file and then
    provide more information for the specific system through the merging
    functionality.

    Changes pulled from git://git.jdl.com/software/dtc.git
    commit id: 37c0b6a0, "dtc: Add code to make diffing trees easier"

    Signed-off-by: John Bonesio
    Signed-off-by: Grant Likely

    John Bonesio
     

03 May, 2009

1 commit

  • The powerpc kernel always requires an Open Firmware like device tree
    to supply device information. On systems without OF, this comes from
    a flattened device tree blob. This blob is usually generated by dtc,
    a tool which compiles a text description of the device tree into the
    flattened format used by the kernel. Sometimes, the bootwrapper makes
    small changes to the pre-compiled device tree blob (e.g. filling in
    the size of RAM). To do this it uses the libfdt library.

    Because these are only used on powerpc, the code for both these tools
    is included under arch/powerpc/boot (these were imported and are
    periodically updated from the upstream dtc tree).

    However, the microblaze architecture, currently being prepared for
    merging to mainline also uses dtc to produce device tree blobs. A few
    other archs have also mentioned some interest in using dtc.
    Therefore, this patch moves dtc and libfdt from arch/powerpc into
    scripts, where it can be used by any architecture.

    The vast bulk of this patch is a literal move, the rest is adjusting
    the various Makefiles to use dtc and libfdt correctly from their new
    locations.

    Signed-off-by: David Gibson
    Signed-off-by: Linus Torvalds

    David Gibson