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)
|
||||
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
|
||||
FLASH_OBJS=flash/cfi_flash.o
|
||||
ABB_OBJS=abb/twl3025.o
|
||||
|
|
|
@ -134,7 +134,7 @@ $(foreach app,$(APPLICATIONS), \
|
|||
|
||||
$(foreach app,$(APPLICATIONS), \
|
||||
$(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))))))
|
||||
|
||||
|
||||
|
|
|
@ -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