| #!/usr/bin/env python |
| |
| import os |
| import re |
| import sys |
| |
| def read_feature_defines_override(feature_defines): |
| feature_defines_overriding_file = 'WebKitFeatureOverrides.txt' |
| if not os.path.exists(feature_defines_overriding_file): |
| return |
| |
| print("The following feature defines were overriden:") |
| with open(feature_defines_overriding_file) as f: |
| match_iter = re.findall(r"((?:ENABLE_)\w+)=(0|1)", f.read()) |
| |
| for match in match_iter: |
| feature = match[0] |
| value = int(match[1]) |
| |
| if feature in feature_defines and value != feature_defines[feature]: |
| print("\t{0}: {1} => {2}".format(feature, feature_defines[feature], value)) |
| feature_defines[feature] = value |
| |
| def write_file_if_contents_changed(filename, contents): |
| if os.path.exists(filename): |
| with open(filename, 'r') as f: |
| old_contents = f.read() |
| if old_contents == contents: |
| return |
| with open(filename, 'w') as f: |
| f.write(contents) |
| |
| def write_feature_defines_header(feature_defines): |
| contents = '' |
| for (feature, value) in feature_defines.items(): |
| contents += '#define {0} {1}\n'.format(feature, value) |
| write_file_if_contents_changed("WebKitFeatures.h", contents) |
| |
| def write_flattened_feature_defines_file(feature_defines): |
| contents = '' |
| for (feature, value) in feature_defines.items(): |
| contents += '{0}={1}\n'.format(feature, value) |
| write_file_if_contents_changed("WebKitFeatures.txt", contents) |
| |
| def generate_feature_defines_files(default_features): |
| build_dir = os.getcwd() |
| feature_defines = {} |
| |
| for feature_define in default_features: |
| (feature, value) = feature_define.split("=") |
| feature_defines[feature] = int(value) |
| |
| read_feature_defines_override(feature_defines) |
| write_feature_defines_header(feature_defines) |
| write_flattened_feature_defines_file(feature_defines) |
| |
| if __name__=='__main__': |
| generate_feature_defines_files(sys.argv[1:]) |