code: def setup_environment(chip, args_file=None):
      config = ConfigManager()
      if platform.system() == 'Windows':
          env = Environment(tools=['mingw'], ENV=os.environ)
      else:
          env = Environment(tools=['default'], ENV=os.environ)
      env['INCPREFIX'] = '-I"'
      env['INCSUFFIX'] = '"'
      env['CPPDEFPREFIX'] = ''
      env['CPPDEFSUFFIX'] = ''
      env['CPPPATH'] = chip.includes()
      env['ARCH'] = chip
      env['CC'] = 'arm-none-eabi-gcc'
      env['AS'] = 'arm-none-eabi-gcc'
      env['LINK'] = 'arm-none-eabi-gcc'
      env['AR'] = 'arm-none-eabi-ar'
      env['RANLIB'] = 'arm-none-eabi-ranlib'
      env['ASCOM'] = "$AS $ASFLAGS -o $TARGET -c $SOURCES"
      if not config.get('build:show-commands'):
          env['CCCOMSTR'] = "Compiling $TARGET"
          env['ARCOMSTR'] = "Building static library $TARGET"
          env['RANLIBCOMSTR'] = "Indexing static library $TARGET"
          env['LINKCOMSTR'] = "Linking $TARGET"
      env['CCFLAGS'] = chip.combined_properties('cflags')
      env['LINKFLAGS'] = chip.combined_properties('ldflags')
      env['ARFLAGS'].append(chip.combined_properties('arflags'))
      env['ASFLAGS'].append(chip.combined_properties('asflags'))
      defines = utilities.build_defines(chip.property('defines', {}))
      env['CPPDEFINES'] = defines
      if args_file is not None:
          env['CCCOM'] = "$CC $CCFLAGS $CPPFLAGS @{} -c -o $TARGET $SOURCES".format(args_file)
      env['CCFLAGS'].append('-mcpu=%s' % chip.property('cpu'))
      env['ASFLAGS'].append('-mcpu=%s' % chip.property('cpu'))
      env['LINKFLAGS'].append('-mcpu=%s' % chip.property('cpu'))
      env['LIBPATH'] = []
      env['LIBS'] = []
      return env