Home | History | Annotate | Download | only in tools
      1 # this module contains all the defaults used by the generation of cleaned-up headers
      2 # for the Bionic C library
      3 #
      4 
      5 import time, os, sys
      6 from utils import *
      7 
      8 # the list of supported architectures
      9 #
     10 kernel_archs = [ 'arm', 'x86', 'mips' ]
     11 
     12 # the list of include directories that belong to the kernel
     13 # tree. used when looking for sources...
     14 #
     15 kernel_dirs = [ "linux", "asm", "asm-generic", "mtd" ]
     16 
     17 # path to the directory containing the original kernel headers
     18 #
     19 kernel_original_path = os.path.normpath( find_program_dir() + '/../../../../external/kernel-headers/original' )
     20 
     21 # path to the default location of the cleaned-up headers
     22 #
     23 kernel_cleaned_path = os.path.normpath( find_program_dir() + '/..' )
     24 
     25 # a special value that is used to indicate that a given macro is known to be
     26 # undefined during optimization
     27 kCppUndefinedMacro = "<<<undefined>>>"
     28 
     29 # this is the set of known macros we want to totally optimize out from the
     30 # final headers
     31 kernel_known_macros = {
     32     "__KERNEL__": kCppUndefinedMacro,
     33     "__KERNEL_STRICT_NAMES":"1",
     34     "__CHECKER__": kCppUndefinedMacro,
     35     "__CHECK_ENDIAN__": kCppUndefinedMacro,
     36     }
     37 
     38 # define to true if you want to remove all defined(CONFIG_FOO) tests
     39 # from the clean headers. testing shows that this is not strictly necessary
     40 # but just generates cleaner results
     41 kernel_remove_config_macros = True
     42 
     43 # maps an architecture to a set of default macros that would be provided by
     44 # toolchain preprocessor
     45 kernel_default_arch_macros = {
     46     "arm": {},
     47     "x86": {"__i386__": "1", "CONFIG_X86_32": "1"},
     48     "mips": {"CONFIG_32BIT":"1"},
     49     }
     50 
     51 kernel_arch_token_replacements = {
     52     "arm": {},
     53     "x86": {},
     54     "mips": {"off_t":"__kernel_off_t"},
     55     }
     56 # Replace tokens in the output according to this mapping
     57 kernel_token_replacements = {
     58     "asm": "__asm__",
     59     "__unused": "__linux_unused", # The kernel usage of __unused conflicts with the macro defined in sys/cdefs.h
     60     }
     61 
     62 # this is the set of known static inline functions that we want to keep
     63 # in the final ARM headers. this is only used to keep optimized byteswapping
     64 # static functions and stuff like that.
     65 kernel_known_arm_statics = set(
     66        [ "___arch__swab32",    # asm-arm/byteorder.h
     67        ]
     68     )
     69 
     70 kernel_known_x86_statics = set(
     71         [ "___arch__swab32",  # asm-x86/byteorder.h
     72           "___arch__swab64",  # asm-x86/byteorder.h
     73         ]
     74     )
     75 
     76 kernel_known_mips_statics = set(
     77         [
     78         ]
     79     )
     80 
     81 kernel_known_generic_statics = set(
     82         [ "__invalid_size_argument_for_IOC",  # asm-generic/ioctl.h
     83           "__cmsg_nxthdr",                    # linux/socket.h
     84           "cmsg_nxthdr",                      # linux/socket.h
     85           "ipt_get_target",
     86           "ip6t_get_target",
     87         ]
     88     )
     89 
     90 # this maps an architecture to the set of static inline functions that
     91 # we want to keep in the final headers
     92 #
     93 kernel_known_statics = {
     94         "arm" : kernel_known_arm_statics,
     95         "x86" : kernel_known_x86_statics,
     96         "mips" : kernel_known_mips_statics
     97     }
     98 
     99 # this is a list of macros which we want to specifically exclude from
    100 # the generated files.
    101 #
    102 kernel_ignored_macros = set(
    103         [ "MAXHOSTNAMELEN",  # for some reason, Linux defines it to 64
    104                              # while most of the BSD code expects this to be 256
    105                              # so ignore the kernel-provided definition and
    106                              # define it in the Bionic headers instead
    107         ]
    108     )
    109 
    110 # this is the standard disclaimer
    111 #
    112 kernel_disclaimer = """\
    113 /****************************************************************************
    114  ****************************************************************************
    115  ***
    116  ***   This header was automatically generated from a Linux kernel header
    117  ***   of the same name, to make information necessary for userspace to
    118  ***   call into the kernel available to libc.  It contains only constants,
    119  ***   structures, and macros generated from the original header, and thus,
    120  ***   contains no copyrightable information.
    121  ***
    122  ***   To edit the content of this header, modify the corresponding
    123  ***   source file (e.g. under external/kernel-headers/original/) then
    124  ***   run bionic/libc/kernel/tools/update_all.py
    125  ***
    126  ***   Any manual change here will be lost the next time this script will
    127  ***   be run. You've been warned!
    128  ***
    129  ****************************************************************************
    130  ****************************************************************************/
    131 """
    132 
    133 # This is the warning line that will be inserted every N-th line in the output
    134 kernel_warning = """\
    135 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    136 """
    137