|  | #!/usr/bin/env python3 | 
|  |  | 
|  | from __future__ import print_function | 
|  | import os | 
|  |  | 
|  |  | 
|  | CPUINFO_SOURCES = { | 
|  | None: [ | 
|  | "init.c", | 
|  | "api.c", | 
|  | "cache.c", | 
|  | ], | 
|  | "defined(__linux__)": [ | 
|  | "linux/multiline.c", | 
|  | "linux/cpulist.c", | 
|  | "linux/mockfile.c", | 
|  | "linux/smallfile.c", | 
|  | "linux/processors.c", | 
|  | ], | 
|  | "defined(__MACH__) && defined(__APPLE__)": [ | 
|  | "mach/topology.c", | 
|  | ], | 
|  | "defined(__i386__) || defined(__i686__) || defined(__x86_64__) || defined(_WIN32)": [ | 
|  | "x86/cache/init.c", | 
|  | "x86/cache/deterministic.c", | 
|  | "x86/cache/descriptor.c", | 
|  | "x86/info.c", | 
|  | "x86/mockcpuid.c", | 
|  | "x86/isa.c", | 
|  | "x86/topology.c", | 
|  | "x86/name.c", | 
|  | "x86/init.c", | 
|  | "x86/uarch.c", | 
|  | "x86/vendor.c", | 
|  | ], | 
|  | "(defined(__i386__) || defined(__i686__) || defined(__x86_64__)) && defined(__linux__)": [ | 
|  | "x86/linux/init.c", | 
|  | "x86/linux/cpuinfo.c", | 
|  | ], | 
|  | "(defined(__i386__) || defined(__i686__) || defined(__x86_64__)) && defined(__MACH__) && defined(__APPLE__)": [ | 
|  | "x86/mach/init.c", | 
|  | ], | 
|  | "defined(_WIN32)": [ | 
|  | "x86/windows/init.c", | 
|  | ], | 
|  | "(defined(__arm__) || defined(__aarch64__)) && defined(__linux__)": [ | 
|  | "arm/linux/cpuinfo.c", | 
|  | "arm/linux/hwcap.c", | 
|  | "arm/linux/init.c", | 
|  | "arm/linux/clusters.c", | 
|  | "arm/linux/midr.c", | 
|  | "arm/linux/chipset.c", | 
|  | "arm/tlb.c", | 
|  | "arm/uarch.c", | 
|  | "arm/cache.c", | 
|  | ], | 
|  | "defined(__arm__) && defined(__linux__)": [ | 
|  | "arm/linux/aarch32-isa.c", | 
|  | ], | 
|  | "defined(__aarch64__) && defined(__linux__)": [ | 
|  | "arm/linux/aarch64-isa.c", | 
|  | ], | 
|  | "(defined(__arm__) || defined(__aarch64__)) && defined(__ANDROID__)": [ | 
|  | "arm/android/properties.c", | 
|  | ], | 
|  | "(defined(__arm__) || defined(__aarch64__)) && defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE": [ | 
|  | "arm/mach/init.c", | 
|  | ], | 
|  | } | 
|  |  | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | for condition, filenames in CPUINFO_SOURCES.items(): | 
|  | for filename in filenames: | 
|  | filepath = os.path.join("cpuinfo/wrappers", filename) | 
|  | if not os.path.exists(os.path.dirname(filepath)): | 
|  | print(filepath) | 
|  | os.makedirs(os.path.dirname(filepath)) | 
|  | with open(filepath, "w") as wrapper: | 
|  | print("/* Auto-generated by generate-wrappers.py script. Do not modify */", file=wrapper) | 
|  | print(file=wrapper) | 
|  | print("#ifdef __APPLE__", file=wrapper) | 
|  | print("\t#include <TargetConditionals.h>", file=wrapper) | 
|  | print("#endif /* __APPLE__ */", file=wrapper) | 
|  | print(file=wrapper) | 
|  |  | 
|  | if not condition: | 
|  | print("#include <%s>" % filename, file=wrapper) | 
|  | else: | 
|  | # Include source file only if condition is satisfied | 
|  | print("#if %s" % condition, file=wrapper) | 
|  | print("#include <%s>" % filename, file=wrapper) | 
|  | print("#endif /* %s */" % condition, file=wrapper) |