Activation of modules by make command line

Hi,

It is often necessary to enable or disable various functions at compilation time, for example, to test dependencies. In RIOT, features are activated using the module concept:

  USEMODULE + = feature

I'm wondering whether there is a possibility to enable modules without changing the makefile when the make command is called, for example:

  make BOARD=... USE_MODULES="sdcard_spi mrf24j40"

I was looking through the documentation and the makefile structure for something like

  USEMODULE += $(USE_MODULES)

Did I miss something? If it is not possible, would it be worth to realize it?

Regards Gunar

It should be possible in the current state if you give the modules as an environment variable instead of on the command line. So:

USEMODULE=‘module_a module_b’ make BOARD=asdf

/Joakim

Den tor 6 sep. 2018 10:33Gunar Schorcht <gunar@schorcht.net> skrev:

Hi Gunar,

Of course it is possible to do it from command-line. You were pretty close, but you don’t need an intermediate variable. Just set the variable USEMODULE in your environment:

USEMODULE=“sdcard_spi mrf24j40” BOARD=… make …

Regards, Martine

Hi Martine, hi Joakim,

thanks for the fast answer. I already thought that it should work using an environment variables, but I unfortunatly tried

make BOARD=... USEMODULE="sdcard_spi mrf24j40"

which didn't work, my fault.

USEMODULE="sdcard_spi mrf24j40" make BOARD=...

works as expected.

Thanks.

Regards Gunar

In case anyone stumbles across this thread in the future: The difference is that giving a variable on the command line to make will cause that variable to become immutable by the makefiles, which means that it will not be updated by the USEMODULE += module commands in the makefiles (unless the special command “override USEMODULE” is used in the makefile). So the easy solution is to only set it in the environment and not on the command line.

/Joakim

Den tor 6 sep. 2018 11:26Gunar Schorcht <gunar@schorcht.net> skrev: