diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py index 1a5471a83..e825ae092 100755 --- a/libc/kernel/tools/clean_header.py +++ b/libc/kernel/tools/clean_header.py @@ -43,15 +43,26 @@ def cleanupFile( path, original_path): # and the corresponding list of known static functions # arch = None - re_asm_arch = re.compile( r"asm-([\w\d_\+\.\-]+)(/.*)" ) - m = re_asm_arch.match(src_path) statics = kernel_known_generic_statics + m = re.match(r"asm-([\w\d_\+\.\-]+)(/.*)", src_path) if m and m.group(1) != 'generic': dst_path = "arch-%s/asm/%s" % m.groups() arch = m.group(1) statics = statics.union( kernel_known_statics.get( arch, set() ) ) else: - dst_path = "common/" + src_path + # process headers under the uapi directory + # note the "asm" level has been explicitly added in the original + # kernel header tree for architectural-dependent uapi headers + m_uapi = re.match(r"(uapi)/([\w\d_\+\.\-]+)(/.*)", src_path) + if m_uapi: + dst_path = src_path + m_uapi_arch = re.match(r"asm-([\w\d_\+\.\-]+)", m_uapi.group(2)) + if m_uapi_arch and m_uapi_arch.group(1) != 'generic': + arch = m_uapi_arch.group(1) + statics = statics.union( kernel_known_statics.get( arch, set() ) ) + # common headers (ie non-asm and non-uapi) + else: + dst_path = "common/" + src_path dst_path = os.path.normpath( kernel_cleaned_path + "/" + dst_path ) diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py index 77bfc47a7..396860583 100644 --- a/libc/kernel/tools/defaults.py +++ b/libc/kernel/tools/defaults.py @@ -7,7 +7,7 @@ from utils import * # the list of supported architectures # -kernel_archs = [ 'arm', 'mips', 'x86' ] +kernel_archs = [ 'aarch64', 'arm', 'mips', 'x86' ] # the list of include directories that belong to the kernel # tree. used when looking for sources... @@ -44,12 +44,14 @@ kernel_remove_config_macros = True # maps an architecture to a set of default macros that would be provided by # toolchain preprocessor kernel_default_arch_macros = { + "aarch64": {}, "arm": {}, "mips": {"CONFIG_32BIT":"1"}, "x86": {}, } kernel_arch_token_replacements = { + "aarch64": {}, "arm": {}, "mips": {"off_t":"__kernel_off_t"}, "x86": {}, @@ -63,6 +65,11 @@ kernel_token_replacements = { # this is the set of known static inline functions that we want to keep # in the final ARM headers. this is only used to keep optimized byteswapping # static functions and stuff like that. +kernel_known_aarch64_statics = set( + [ + ] + ) + kernel_known_arm_statics = set( [ "___arch__swab32", # asm-arm/byteorder.h ] @@ -92,6 +99,7 @@ kernel_known_generic_statics = set( # we want to keep in the final headers # kernel_known_statics = { + "aarch64" : kernel_known_aarch64_statics, "arm" : kernel_known_arm_statics, "mips" : kernel_known_mips_statics, "x86" : kernel_known_x86_statics,