78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
|
|
import os
|
||
|
|
import glob
|
||
|
|
import sys
|
||
|
|
# sys.argv[2] Target to generate for
|
||
|
|
target = sys.argv[2]
|
||
|
|
|
||
|
|
platforms = ['x86', 'i386', 'x86_64', 'arm',
|
||
|
|
'arm32', 'arm64', 'aarch32', 'aarch64',
|
||
|
|
'riscv', 'riscv64']
|
||
|
|
bits = ['bits32', 'bits64']
|
||
|
|
|
||
|
|
platform_to_bits = {
|
||
|
|
"x86": "bits32",
|
||
|
|
"x86_64": "bits64",
|
||
|
|
"arm32": "bits32",
|
||
|
|
"arm64": "bits64",
|
||
|
|
"riscv64": "bits64",
|
||
|
|
}
|
||
|
|
|
||
|
|
allowed_paths = {
|
||
|
|
"x86": ["x86", "i386"],
|
||
|
|
"x86_64": ["x86", "x86_64"],
|
||
|
|
"arm32": ["aarch32", "arm32", "arm"],
|
||
|
|
"arm64": ["aarch64", "arm64", "arm"],
|
||
|
|
"riscv64": ["riscv64", "riscv"]
|
||
|
|
}
|
||
|
|
|
||
|
|
ignore_platforms = []
|
||
|
|
ignore_bits = []
|
||
|
|
|
||
|
|
allowed_paths_for_target = allowed_paths.get(target, None)
|
||
|
|
if allowed_paths_for_target is None:
|
||
|
|
print("Unknown platform {0}".format(target))
|
||
|
|
exit(1)
|
||
|
|
|
||
|
|
for platform in platforms:
|
||
|
|
if not (platform in allowed_paths_for_target):
|
||
|
|
ignore_platforms.append(platform)
|
||
|
|
|
||
|
|
for bit in bits:
|
||
|
|
if platform_to_bits[target] != bit:
|
||
|
|
ignore_bits.append(bit)
|
||
|
|
|
||
|
|
|
||
|
|
def is_file_type(name, ending):
|
||
|
|
if len(name) <= len(ending):
|
||
|
|
return False
|
||
|
|
return (name[-len(ending)-1::] == '.'+ending)
|
||
|
|
|
||
|
|
|
||
|
|
def is_file_blocked(name):
|
||
|
|
global ignore_platforms
|
||
|
|
for platform in ignore_platforms:
|
||
|
|
if (name.find(platform) != -1):
|
||
|
|
return True
|
||
|
|
for bit in ignore_bits:
|
||
|
|
if (name.find(bit) != -1):
|
||
|
|
return True
|
||
|
|
return False
|
||
|
|
|
||
|
|
|
||
|
|
for path, subdirs, files in os.walk("../kernel/kernel"):
|
||
|
|
for name in files:
|
||
|
|
# It runs from out dir, at least it should
|
||
|
|
file = "//" + path[3:] + "/" + name
|
||
|
|
if not is_file_type(file, 'c') and not is_file_type(file, 's') and not is_file_type(file, 'S'):
|
||
|
|
continue
|
||
|
|
if is_file_blocked(file):
|
||
|
|
continue
|
||
|
|
print(file)
|
||
|
|
|
||
|
|
|
||
|
|
def special_paths(platform):
|
||
|
|
pass
|
||
|
|
|
||
|
|
|
||
|
|
special_paths(target)
|