[riot-devel] Updates to the build system - modules definition

Gaëtan Harter gaetan.harter at fu-berlin.de
Fri Nov 24 17:56:30 CET 2017

On 11/24/2017 04:55 PM, Martine Lenders wrote:
> Hi Daniel,
> 2017-11-24 16:47 GMT+01:00 Daniel Petry <daniel.petry at fu-berlin.de 
> <mailto:daniel.petry at fu-berlin.de>>:
>     […]
>     1) Move build information concerning a particular module into that
>     module's Makefile
>     2) Make the module makefiles able to be written with purely
>     declarative
>     language
>     3) Retain backwards compatibility with the current build system
>  I don't think it is possible this way and I don't think that's what 
> Gaëtan meant. Makefiles demand to be in make's language, so you can't 
> just make up your own declarative language in them. You could however 
> use some declaritive language files like json or yaml and generate 
> Makefiles from them (or let make parse them).

I may have mixed 'Makefile' and file written in a 'GNUMake' language in 
my description.

They address different steps of the build:
* Makefile is when you actually compile the source files to an archive 
with a given configuration (CC, CFLAGS, INCLUDES)
* All the Makefile.dep/Makefile.include/Makefile.features files that 
prepare this configuration and say which Makefile to execute

And its the part of configuration I would like to address.
Regarding `Makefile` I just want to remove the `DIRS +=` part of it.

What I want is add another file `module.desc` grouping the existing 
information and metadata on the module:
* Submodule
* is it a pseudomodule
* includes path
* dependencies
* global CFLAGS
* … and add more.

Regarding the "purely declarative", I would like to express it in 
GNUMake syntax and restrict to setting specially named variables.
My rational about this, is that if its written in XML, and let make 
parse them, it is still required to translate the information to 
variables that the make build system can understand.
So still needs to have a syntax to describe, for example, that a module 
has an optional dependency on another, and so be definable in a gnu make 


> Cheers,
> Martine
> _______________________________________________
> devel mailing list
> devel at riot-os.org
> https://lists.riot-os.org/mailman/listinfo/devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20171124/fc63ee7c/attachment-0001.html>

More information about the devel mailing list