def ParseFlagsExtended(env, flags): if isinstance(flags, list): flags = " ".join(flags) result = env.ParseFlags(str(flags)) cppdefines = [] for item in result['CPPDEFINES']: if not Util.is_Sequence(item): cppdefines.append(item) continue name, value = item[:2] if '\"' in value: value = value.replace('\"', '\\\"') elif value.isdigit(): value = int(value) elif value.replace(".", "", 1).isdigit(): value = float(value) cppdefines.append((name, value)) result['CPPDEFINES'] = cppdefines # fix relative CPPPATH & LIBPATH for k in ("CPPPATH", "LIBPATH"): for i, p in enumerate(result.get(k, [])): if isdir(p): result[k][i] = realpath(p) # fix relative path for "-include" for i, f in enumerate(result.get("CCFLAGS", [])): if isinstance(f, tuple) and f[0] == "-include": result['CCFLAGS'][i] = (f[0], env.File(realpath(f[1].get_path()))) return result
def ProcessFlags(env, flags): # pylint: disable=too-many-branches if not flags: return if isinstance(flags, list): flags = " ".join(flags) parsed_flags = env.ParseFlags(str(flags)) for flag in parsed_flags.pop("CPPDEFINES"): if not Util.is_Sequence(flag): env.Append(CPPDEFINES=flag) continue _key, _value = flag[:2] if '\"' in _value: _value = _value.replace('\"', '\\\"') elif _value.isdigit(): _value = int(_value) elif _value.replace(".", "", 1).isdigit(): _value = float(_value) env.Append(CPPDEFINES=(_key, _value)) env.Append(**parsed_flags) # fix relative CPPPATH & LIBPATH for k in ("CPPPATH", "LIBPATH"): for i, p in enumerate(env.get(k, [])): if isdir(p): env[k][i] = realpath(p) # fix relative path for "-include" for i, f in enumerate(env.get("CCFLAGS", [])): if isinstance(f, tuple) and f[0] == "-include": env['CCFLAGS'][i] = (f[0], env.File(realpath(f[1].get_path()))) # Cancel any previous definition of name, either built in or # provided with a -D option // Issue #191 undefines = [ u for u in env.get("CCFLAGS", []) if isinstance(u, basestring) and u.startswith("-U") ] if undefines: for undef in undefines: env['CCFLAGS'].remove(undef) env.Append(_CPPDEFFLAGS=" %s" % " ".join(undefines))
def ProcessFlags(env, flags): # pylint: disable=too-many-branches if not flags: return if isinstance(flags, list): flags = " ".join(flags) parsed_flags = env.ParseFlags(str(flags)) for flag in parsed_flags.pop("CPPDEFINES"): if not Util.is_Sequence(flag): env.Append(CPPDEFINES=flag) continue _key, _value = flag[:2] if '\"' in _value: _value = _value.replace('\"', '\\\"') elif _value.isdigit(): _value = int(_value) elif _value.replace(".", "", 1).isdigit(): _value = float(_value) env.Append(CPPDEFINES=(_key, _value)) env.Append(**parsed_flags) # fix relative CPPPATH & LIBPATH for k in ("CPPPATH", "LIBPATH"): for i, p in enumerate(env.get(k, [])): if isdir(p): env[k][i] = realpath(p) # fix relative path for "-include" for i, f in enumerate(env.get("CCFLAGS", [])): if isinstance(f, tuple) and f[0] == "-include": env['CCFLAGS'][i] = (f[0], env.File(realpath(f[1].get_path()))) # Cancel any previous definition of name, either built in or # provided with a -D option // Issue #191 undefines = [ u for u in env.get("CCFLAGS", []) if isinstance(u, basestring) and u.startswith("-U") ] if undefines: for undef in undefines: env['CCFLAGS'].remove(undef) env.Append(_CPPDEFFLAGS=" %s" % " ".join(undefines))
def ParseFlagsExtended(env, flags): # pylint: disable=too-many-branches if not isinstance(flags, list): flags = [flags] result = {} for raw in flags: for key, value in env.ParseFlags(str(raw)).items(): if key not in result: result[key] = [] result[key].extend(value) cppdefines = [] for item in result["CPPDEFINES"]: if not Util.is_Sequence(item): cppdefines.append(item) continue name, value = item[:2] if '"' in value: value = value.replace('"', '\\"') elif value.isdigit(): value = int(value) elif value.replace(".", "", 1).isdigit(): value = float(value) cppdefines.append((name, value)) result["CPPDEFINES"] = cppdefines # fix relative CPPPATH & LIBPATH for k in ("CPPPATH", "LIBPATH"): for i, p in enumerate(result.get(k, [])): if os.path.isdir(p): result[k][i] = os.path.realpath(p) # fix relative path for "-include" for i, f in enumerate(result.get("CCFLAGS", [])): if isinstance(f, tuple) and f[0] == "-include": result["CCFLAGS"][i] = (f[0], env.File(os.path.realpath( f[1].get_path()))) return result
def ParseFlagsExtended(env, flags): # pylint: disable=too-many-branches if not isinstance(flags, list): flags = [flags] result = {} for raw in flags: for key, value in env.ParseFlags(str(raw)).items(): if key not in result: result[key] = [] result[key].extend(value) cppdefines = [] for item in result['CPPDEFINES']: if not Util.is_Sequence(item): cppdefines.append(item) continue name, value = item[:2] if '\"' in value: value = value.replace('\"', '\\\"') elif value.isdigit(): value = int(value) elif value.replace(".", "", 1).isdigit(): value = float(value) cppdefines.append((name, value)) result['CPPDEFINES'] = cppdefines # fix relative CPPPATH & LIBPATH for k in ("CPPPATH", "LIBPATH"): for i, p in enumerate(result.get(k, [])): if isdir(p): result[k][i] = realpath(p) # fix relative path for "-include" for i, f in enumerate(result.get("CCFLAGS", [])): if isinstance(f, tuple) and f[0] == "-include": result['CCFLAGS'][i] = (f[0], env.File(realpath(f[1].get_path()))) return result