Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / scripts / examples / build-all-clusters-app.py
1 #!/usr/bin/env python3
2
3 import argparse
4 import os
5 import subprocess
6 import logging
7 import coloredlogs
8
9 _LOG = logging.getLogger(__name__)
10
11 ROOT = 'examples/all-clusters-app/esp32'
12
13 class IDFExecutor:
14   """Runs specified commands via an executor that activates the CHIP build environment."""
15
16
17   def __init__(self):
18     script_path = os.path.dirname(os.path.realpath(__file__))
19     self.chip_root = os.path.realpath(os.path.join(script_path, '..', '..'))
20
21     logging.info("CHIP Root directory: %s" % self.chip_root)
22
23     self.run_cmd = os.path.join(self.chip_root, "scripts", "run_in_build_env.sh")
24     logging.info("Executing via: %s" % self.run_cmd)
25
26   
27   def execute(self, command):
28     os.chdir(self.chip_root)
29     subprocess.call([self.run_cmd, 'source "%s/%s/idf.sh"; idf %s' % (self.chip_root, ROOT, command)])
30
31
32 def main():
33   """Main task if executed standalone."""
34   parser = argparse.ArgumentParser(description='Build all-clusters-app example')
35   parser.add_argument(
36       '--log-level',
37       default=logging.INFO,
38       type=lambda x: getattr(logging, x),
39       help='Configure the logging level.')
40   parser.add_argument(
41       '--clear-config',
42       default=None,
43       choices=['m5stack', 'devkit'],
44   )
45   args = parser.parse_args()
46
47   # Ensures somewhat pretty logging of what is going on
48   logging.basicConfig(
49       level=args.log_level,
50       format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
51   coloredlogs.install()
52
53   e = IDFExecutor()
54
55   if args.clear_config:
56     logging.info('Building a clear configuration')
57     sdkconfig = 'sdkconfig_%s.defaults' % args.clear_config
58
59     curr_sdkconfig = os.path.join(ROOT, 'sdkconfig')
60     if os.path.exists(curr_sdkconfig):
61       os.remove(curr_sdkconfig)
62
63     e.execute('SDKCONFIG_DEFAULTS="{sdkname}" make -j{cpus} -C {example_root} defconfig'.format(
64       sdkname=sdkconfig, cpus=os.cpu_count(), example_root = ROOT
65     ))
66
67
68   logging.info('Compiling')
69   e.execute('make -j{cpus} -C {example_root}'.format(cpus=os.cpu_count(), example_root=ROOT))
70
71
72 if __name__ == '__main__':
73   # execute only if run as a script
74   main()