|  | #!/usr/bin/env python3 | 
|  |  | 
|  | # Copyright 2018 the V8 project authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  | # vim:fenc=utf-8:shiftwidth=2:tabstop=2:softtabstop=2:extandtab | 
|  |  | 
|  | """ | 
|  | Generate object-macros-undef.h from object-macros.h. | 
|  | """ | 
|  |  | 
|  | import os.path | 
|  | import re | 
|  | import sys | 
|  |  | 
|  | INPUT = 'src/objects/object-macros.h' | 
|  | OUTPUT = 'src/objects/object-macros-undef.h' | 
|  | HEADER = """// Copyright 2016 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Generate this file using the {} script. | 
|  |  | 
|  | // PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD | 
|  |  | 
|  | """.format(os.path.basename(__file__)) | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | if not os.path.isfile(INPUT): | 
|  | sys.exit("Input file {} does not exist; run this script in a v8 checkout." | 
|  | .format(INPUT)) | 
|  | if not os.path.isfile(OUTPUT): | 
|  | sys.exit("Output file {} does not exist; run this script in a v8 checkout." | 
|  | .format(OUTPUT)) | 
|  | regexp = re.compile('^#define (\w+)') | 
|  | seen = set() | 
|  | with open(INPUT, 'r') as infile, open(OUTPUT, 'w') as outfile: | 
|  | outfile.write(HEADER) | 
|  | for line in infile: | 
|  | match = regexp.match(line) | 
|  | if match and match.group(1) not in seen: | 
|  | seen.add(match.group(1)) | 
|  | outfile.write('#undef {}\n'.format(match.group(1))) | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | main() |