[OpenWrt-Devel] SDK vs. Toolchain+

Felix Fietkau nbd at openwrt.org
Mon Jan 4 05:40:15 EST 2016

On 2016-01-04 00:32, Daniel Dickinson wrote:
> On 03/01/16 01:01 PM, Felix Fietkau wrote:
>> On 2016-01-03 18:53, Daniel Dickinson wrote:
>>> Hi Felix,
>>> I think part of the confusion stems from the fact that the current SDK
>>> is not really an SDK but a 'Toolchain+'.  Perhaps the current SDK should
>>> be renamed to clarify that point, and a 'real' SDK created.
>> What's a 'real' SDK as opposed to a 'Toolchain+'?
> Perhaps it's just the way I think of it, but a Toolchain/Toolchain(+) 
> provides everything need to do build on a particular platform, with only 
> minor exceptions of things included with OS in a standard install.  It's 
> binary or equivalent (i.e. no special tools required) pretty much by 
> definition because it's supposed to take care of providing what you need 
> to do a build.  You can talk about the source of a toolchain, but I 
> don't think it's coherent to talk about the source as the toolchain.   A 
> toolchain of some sort is typically required to build an SDK, or to 
> develop new versions of the toolchain (assuming you have the source of 
> the toolchain).
> A 'real' SDK on the other hand allows you to build toolchains and 
> systems from scratch, but has more dependencies (unless it's combination 
> SDK + Toolchain) because the operating system has to provide enough 
> build machinery to build from source (or in the proprietary version, 
> source + binary bits that theoretically can be legitimately packaged 
> that way and/or 'protect' 'special' IP).
> It's kind of a greyish area for definitions because I'm not sure there 
> is a consistent usage of the SDK term in industry.  I think in some 
> cases SDK is used to mean what I think of as Toolchain+ that is used 
> build add-ons for a system, but is platform-specific (and not 
> necessarily with source to port either), whereas in the the open source 
> world I think SDK tends to imply something that lets you build from 
> scratch (with source).
> In any event, regardless of what you call it, the current OpenWrt SDK is 
> of the variety of (mostly) standalone binaries that you use to build 
> packages for openwrt, rather than of a set of sources that can be used 
> to build what you need to build packages and/or the packages themselves 
> (which is what I would consider a 'real' SDK vs the current Toolchain+).
> The two types of things have different goals. the 'real' SDK is meant to 
> provide the ability to develop the system; the toolchain/toolchain+ is 
> meant to bootstrap the process or at least make building stand on it's 
> own for a given platform.
That definition of the term SDK explains your source of confusion.

I'd like to suggest a simpler one, which is in line with the current
naming in OpenWrt:
The SDK is what builds software for an already running system.

It doesn't have to build images, it doesn't have to be used to build
full systems, it's just what you use to compile packages for a
particular existing build of OpenWrt.

This is consistent with many examples listed here:
It also matches existing examples using embedded devices, e.g. Android

>>> The current SDK is useless without ImageBuilder and/or package repositories.
>> Not really. It allows you to build packages that you can put on a
>> running system built from the same release (including out-of-tree kernel
>> modules).
> Ok, I mean useless for building firmware; it certainly isn't useless by 
> any means (I fin it rather useful as a Toolchain+; for SDK there is 
> buildroot + feeds + downloaded packages).
> Does that clarify my thinking a little for you, and do you see, perhaps, 
> the value of the current toolchain+ type of SDK in addition to the kind 
> of SDK I think you're thinking of (That I call a 'real' SDK)?
It clarifies your thinking for me, however I don't see much value in
adopting your terminology, as it still seems to be somewhat convoluted
and non-standard to me.

- Felix
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list