fw/build: Allow applications to filter environments
We use an external python script to solve which env to build, to mix board and app env list Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
parent
3ee1beb8bf
commit
adfc622cc1
|
@ -86,6 +86,11 @@ BOARD_se_j100_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS)
|
||||||
# List of all applications (meant to be overridden on command line)
|
# List of all applications (meant to be overridden on command line)
|
||||||
APPLICATIONS?=hello_world compal_dsp_dump layer1 loader chainload rssi
|
APPLICATIONS?=hello_world compal_dsp_dump layer1 loader chainload rssi
|
||||||
|
|
||||||
|
# Applications specific env requirements
|
||||||
|
APP_chainload_ENVIRONMENTS=compalram
|
||||||
|
APP_loader_ENVIRONMENTS=compalram highram
|
||||||
|
APP_rssi_ENVIRONMENTS=* -compalram
|
||||||
|
|
||||||
# Various objects that are currently linked into all applications
|
# Various objects that are currently linked into all applications
|
||||||
FLASH_OBJS=flash/cfi_flash.o
|
FLASH_OBJS=flash/cfi_flash.o
|
||||||
ABB_OBJS=abb/twl3025.o
|
ABB_OBJS=abb/twl3025.o
|
||||||
|
|
|
@ -134,7 +134,7 @@ $(foreach app,$(APPLICATIONS), \
|
||||||
|
|
||||||
$(foreach app,$(APPLICATIONS), \
|
$(foreach app,$(APPLICATIONS), \
|
||||||
$(foreach brd,$(BOARDS), \
|
$(foreach brd,$(BOARDS), \
|
||||||
$(foreach env,$(BOARD_$(brd)_ENVIRONMENTS), \
|
$(foreach env,$(shell ./solve_envs.py "$(BOARD_$(brd)_ENVIRONMENTS)" "$(APP_$(app)_ENVIRONMENTS)"), \
|
||||||
$(eval $(call APPLICATION_BOARD_ENVIRONMENT_template,$(app),$(brd),$(env))))))
|
$(eval $(call APPLICATION_BOARD_ENVIRONMENT_template,$(app),$(brd),$(env))))))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def parse(s):
|
||||||
|
return set([x.strip() for x in s.split() if x.strip()])
|
||||||
|
|
||||||
|
|
||||||
|
def solve(board_envs, app_envs):
|
||||||
|
if not app_envs:
|
||||||
|
return board_envs
|
||||||
|
|
||||||
|
envs = set()
|
||||||
|
|
||||||
|
if '*' in app_envs:
|
||||||
|
envs.update(board_envs)
|
||||||
|
app_envs.discard('*')
|
||||||
|
|
||||||
|
for e in app_envs:
|
||||||
|
if e.startswith('-'):
|
||||||
|
envs.discard(e[1:])
|
||||||
|
elif e in board_envs:
|
||||||
|
envs.add(e)
|
||||||
|
|
||||||
|
return envs
|
||||||
|
|
||||||
|
|
||||||
|
def main(name, board_envs, app_envs):
|
||||||
|
# Parse args
|
||||||
|
board_envs = parse(board_envs)
|
||||||
|
app_envs = parse(app_envs)
|
||||||
|
|
||||||
|
# Solve
|
||||||
|
envs = solve(board_envs, app_envs)
|
||||||
|
|
||||||
|
# Result
|
||||||
|
print ' '.join(envs)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main(*sys.argv)
|
Loading…
Reference in New Issue