Allow MAKE environment override for 'qmk clean' (#12473)
parent
60a39f4f5d
commit
7725d813c9
|
@ -1,16 +1,12 @@
|
||||||
"""Clean the QMK firmware folder of build artifacts.
|
"""Clean the QMK firmware folder of build artifacts.
|
||||||
"""
|
"""
|
||||||
from qmk.commands import run
|
from qmk.commands import run, create_make_target
|
||||||
from milc import cli
|
from milc import cli
|
||||||
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
|
|
||||||
@cli.argument('-a', '--all', arg_only=True, action='store_true', help='Remove *.hex and *.bin files in the QMK root as well.')
|
@cli.argument('-a', '--all', arg_only=True, action='store_true', help='Remove *.hex and *.bin files in the QMK root as well.')
|
||||||
@cli.subcommand('Clean the QMK firmware folder of build artifacts.')
|
@cli.subcommand('Clean the QMK firmware folder of build artifacts.')
|
||||||
def clean(cli):
|
def clean(cli):
|
||||||
"""Runs `make clean` (or `make distclean` if --all is passed)
|
"""Runs `make clean` (or `make distclean` if --all is passed)
|
||||||
"""
|
"""
|
||||||
make_cmd = 'gmake' if shutil.which('gmake') else 'make'
|
run(create_make_target('distclean' if cli.args.all else 'clean'))
|
||||||
|
|
||||||
run([make_cmd, 'distclean' if cli.args.all else 'clean'])
|
|
||||||
|
|
|
@ -29,6 +29,33 @@ def _find_make():
|
||||||
return make_cmd
|
return make_cmd
|
||||||
|
|
||||||
|
|
||||||
|
def create_make_target(target, parallel=1, **env_vars):
|
||||||
|
"""Create a make command
|
||||||
|
|
||||||
|
Args:
|
||||||
|
|
||||||
|
target
|
||||||
|
Usually a make rule, such as 'clean' or 'all'.
|
||||||
|
|
||||||
|
parallel
|
||||||
|
The number of make jobs to run in parallel
|
||||||
|
|
||||||
|
**env_vars
|
||||||
|
Environment variables to be passed to make.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
A command that can be run to make the specified keyboard and keymap
|
||||||
|
"""
|
||||||
|
env = []
|
||||||
|
make_cmd = _find_make()
|
||||||
|
|
||||||
|
for key, value in env_vars.items():
|
||||||
|
env.append(f'{key}={value}')
|
||||||
|
|
||||||
|
return [make_cmd, '-j', str(parallel), *env, target]
|
||||||
|
|
||||||
|
|
||||||
def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars):
|
def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars):
|
||||||
"""Create a make compile command
|
"""Create a make compile command
|
||||||
|
|
||||||
|
@ -53,17 +80,12 @@ def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars):
|
||||||
|
|
||||||
A command that can be run to make the specified keyboard and keymap
|
A command that can be run to make the specified keyboard and keymap
|
||||||
"""
|
"""
|
||||||
env = []
|
|
||||||
make_args = [keyboard, keymap]
|
make_args = [keyboard, keymap]
|
||||||
make_cmd = _find_make()
|
|
||||||
|
|
||||||
if target:
|
if target:
|
||||||
make_args.append(target)
|
make_args.append(target)
|
||||||
|
|
||||||
for key, value in env_vars.items():
|
return create_make_target(':'.join(make_args), parallel, **env_vars)
|
||||||
env.append(f'{key}={value}')
|
|
||||||
|
|
||||||
return [make_cmd, '-j', str(parallel), *env, ':'.join(make_args)]
|
|
||||||
|
|
||||||
|
|
||||||
def get_git_version(repo_dir='.', check_dir='.'):
|
def get_git_version(repo_dir='.', check_dir='.'):
|
||||||
|
|
Loading…
Reference in New Issue