[Buildroot] [PATCH 00/30] Splitting the toolchain-external package

Arnout Vandecappelle arnout at mind.be
Tue Oct 25 14:26:19 UTC 2016



On 23-10-16 22:48, Romain Naour wrote:
> Hi All,
> 
> Here is the first version of the toolchain-external package infra which
> was started by Thomas Petazzoni last year. This new infra will clearly
> separate the common external toolchain logic from the
> toolchain-specific details and generally make the external toolchain
> code hopefully easier to maintain.
> 
> The four first patches change all the functions used in
> INSTALL_STAGING_CMDS and INSTALL_TARGET_CMDS to take more arguments
> rather than using global variables.

 These look good.


> Then all toolchain packages are introduced but are not yet used since
> the new toolchain-external infra will be added latter.

 Meh, I don't like that. You should introduce the infra and then convert the
toolchains one by one. Or is there some reason why that is difficult?


> Before introduce the new toolchain-external infra, some specific
> functions and logic are moved into a separate file (toolchain utility,
> toolchain wrapper, variables definition, uClibc, musl and bfin).

 This part I don't like either. For me, splitting into separate files
*decreases* readability and ease of use, because you have to consult these
different files to understand what's going on. Splitting is useful when:
 - there is a really clear separation of concerns (e.g. pkg-cmake and
pkg-autotools are clearly unreleated);
 - or the same "code" is "called" from several places (e.g. the pkg-generic
infra is used both by pkg-cmake and pkg-autotools);
 - or the file becomes really large (top-level Makefile is more than 1000 lines).

 For me, pkg-toolchain-external*.mk is all really closely related so it can go
in one file.

 In addition, I don't like that all these pkg-toolchain-external*.mk files are
included in no particular order from the top-level Makefile with 'include
toolchain/*/*.mk'. In fact pkg-toolchain-external.mk defines
toolchain-external-package and it gets used by toolchain-external.mk (that
includes toolchain/toolchain-external/*/*.mk). So if toolchain-external.mk
happens to get read before pkg-toolchain-external.mk, things will fail
miserably. I believe we've had problems with that before, haven't we?

 So, my proposal would be to either keep everything together in
toolchain-external.mk, or move pkg-toolchain-external.mk one level up (then it
gets included before toolchain/*/*.mk).

 Regards,
 Arnout


> The final patch introduce the new toolchain external package infra
> (see it's commit log for more information).
> 
> Best regards,
> Romain
> 
> Romain Naour (17):
>   toolchain-external: pass CC and CFLAGS as arguments
>   toolchain-external: pass CC and CFLAGS as arguments
>   toolchain-external: pass arguments CROSS to install wrapper
>   toolchain-external: pass arguments CC, CFLAGS, INSTALL_DIR while
>     installing gdbserver
>   toolchain-external-arago-armv5te: new package
>   toolchain-external-linaro-armeb: new package
>   toolchain-external-codesourcery-amd64: new package
>   toolchain-external-codescape-img-mips: new package
>   toolchain-external-codescape-mti-mips: new package
>   toolchain/toolchain-external: move functions and utility logic into a
>     separate file
>   toolchain/toolchain-external: move wrapper logic into a separate file
>   toolchain/toolchain-external: move the definition of various variables
>     into a separate file
>   toolchain/toolchain-external: move uClibc specific logic into a
>     separate file
>   toolchain/toolchain-external: move musl specific logic into a separate
>     file
>   toolchain/toolchain-external: move bfin specific logic into a separate
>     file
>   toolchain/toolchain-external: move external toolchain definition into
>     a separate file
>   toolchain-external: introduce and use external toolchain infra
> 
> Thomas Petazzoni (13):
>   toolchain-external-blackfin-uclinux: new package
>   toolchain-external-arago-armv7a: new package
>   toolchain-external-custom: new package
>   toolchain-external-linaro-aarch64: new package
>   toolchain-external-linaro-arm: new package
>   toolchain-external-musl-cross: new package
>   toolchain-external-codesourcery-aarch64: new package
>   toolchain-external-codesourcery-arm: new package
>   toolchain-external-codesourcery-mips: new package
>   toolchain-external-codesourcery-niosII: new package
>   toolchain-external-codesourcery-sh: new package
>   toolchain-external-codesourcery-x86: new package
>   toolchain-external-synopsys-arc: new package
> 
>  package/Makefile.in                                |   2 +-
>  package/wine/wine.mk                               |   2 +-
>  toolchain/toolchain-external/Config.in             | 982 +--------------------
>  .../pkg-toolchain-external-bfin.mk                 |  56 ++
>  .../pkg-toolchain-external-musl.mk                 |  34 +
>  .../pkg-toolchain-external-uclibc.mk               |  13 +
>  .../pkg-toolchain-external-utils.mk                | 212 +++++
>  .../pkg-toolchain-external-vars.mk                 | 120 +++
>  .../pkg-toolchain-external-wrapper.mk              |  40 +
>  .../toolchain-external/pkg-toolchain-external.mk   | 206 +++++
>  .../toolchain-external-arago-armv5te/Config.in     |  19 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-arago-armv5te.hash          |   3 +
>  .../toolchain-external-arago-armv5te.mk            |  23 +
>  .../toolchain-external-arago-armv7a/Config.in      |  24 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-arago-armv7a.hash           |   3 +
>  .../toolchain-external-arago-armv7a.mk             |  23 +
>  .../toolchain-external-blackfin-uclinux/Config.in  |  17 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-blackfin-uclinux.hash       |   3 +
>  .../toolchain-external-blackfin-uclinux.mk         |  36 +
>  .../Config.in                                      |  62 ++
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codescape-img-mips.hash     |   3 +
>  .../toolchain-external-codescape-img-mips.mk       |  48 +
>  .../Config.in                                      |  73 ++
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codescape-mti-mips.hash     |   3 +
>  .../toolchain-external-codescape-mti-mips.mk       |  48 +
>  .../Config.in                                      |  17 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-aarch64.hash   |   3 +
>  .../toolchain-external-codesourcery-aarch64.mk     |  23 +
>  .../Config.in                                      |  24 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-amd64.hash     |   3 +
>  .../toolchain-external-codesourcery-amd64.mk       |  13 +
>  .../toolchain-external-codesourcery-arm/Config.in  |  33 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-arm.hash       |   3 +
>  .../toolchain-external-codesourcery-arm.mk         |  14 +
>  .../toolchain-external-codesourcery-mips/Config.in |  93 ++
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-mips.hash      |   3 +
>  .../toolchain-external-codesourcery-mips.mk        |  14 +
>  .../Config.in                                      |  17 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-niosII.hash    |   3 +
>  .../toolchain-external-codesourcery-niosII.mk      |  14 +
>  .../toolchain-external-codesourcery-sh/Config.in   |  25 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-sh.hash        |   3 +
>  .../toolchain-external-codesourcery-sh.mk          |  14 +
>  .../toolchain-external-codesourcery-x86/Config.in  |  29 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-codesourcery-x86.hash       |   3 +
>  .../toolchain-external-codesourcery-x86.mk         |  13 +
>  .../toolchain-external-custom/Config.in            |   5 +
>  .../toolchain-external-custom/Config.in.options    | 331 +++++++
>  .../toolchain-external-custom.mk                   |  16 +
>  .../toolchain-external-linaro-aarch64/Config.in    |  15 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-linaro-aarch64.hash         |   3 +
>  .../toolchain-external-linaro-aarch64.mk           |  17 +
>  .../toolchain-external-linaro-arm/Config.in        |  27 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-linaro-arm.hash             |   3 +
>  .../toolchain-external-linaro-arm.mk               |  17 +
>  .../toolchain-external-linaro-armeb/Config.in      |  26 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-linaro-armeb.hash           |   3 +
>  .../toolchain-external-linaro-armeb.mk             |  17 +
>  .../toolchain-external-musl-cross/Config.in        |  30 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-musl-cross.hash             |  12 +
>  .../toolchain-external-musl-cross.mk               |  36 +
>  .../toolchain-external-synopsys-arc/Config.in      |  20 +
>  .../Config.in.options                              |   6 +
>  .../toolchain-external-synopsys-arc.hash           |   5 +
>  .../toolchain-external-synopsys-arc.mk             |  26 +
>  .../toolchain-external/toolchain-external.hash     |  67 --
>  toolchain/toolchain-external/toolchain-external.mk | 789 +----------------
>  83 files changed, 2192 insertions(+), 1794 deletions(-)
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external-bfin.mk
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external-musl.mk
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external-uclibc.mk
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external-utils.mk
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external-vars.mk
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external-wrapper.mk
>  create mode 100644 toolchain/toolchain-external/pkg-toolchain-external.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv5te/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv5te/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv5te/toolchain-external-arago-armv5te.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv5te/toolchain-external-arago-armv5te.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv7a/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv7a/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv7a/toolchain-external-arago-armv7a.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-arago-armv7a/toolchain-external-arago-armv7a.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-custom/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-custom/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-musl-cross/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.mk
>  create mode 100644 toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in
>  create mode 100644 toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options
>  create mode 100644 toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash
>  create mode 100644 toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk
>  delete mode 100644 toolchain/toolchain-external/toolchain-external.hash
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF



More information about the buildroot mailing list