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', 'sh' ]
     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() + '/../original' )
     20 
     21 # a special value that is used to indicate that a given macro is known to be
     22 # undefined during optimization
     23 kCppUndefinedMacro = "<<<undefined>>>"
     24 
     25 # this is the set of known macros we want to totally optimize out from the
     26 # final headers
     27 kernel_known_macros = {
     28     "__KERNEL__": kCppUndefinedMacro,
     29     "__KERNEL_STRICT_NAMES":"1",
     30     "__CHECKER__": kCppUndefinedMacro,
     31     "__CHECK_ENDIAN__": kCppUndefinedMacro,
     32     }
     33 
     34 # define to true if you want to remove all defined(CONFIG_FOO) tests
     35 # from the clean headers. testing shows that this is not strictly necessary
     36 # but just generates cleaner results
     37 kernel_remove_config_macros = True
     38 
     39 # maps an architecture to a set of default macros that would be provided by
     40 # toolchain preprocessor
     41 kernel_default_arch_macros = {
     42     "arm": {},
     43     "x86": {"__i386__": "1"},
     44     }
     45 
     46 # this is the set of known static inline functions that we want to keep
     47 # in the final ARM headers. this is only used to keep optimized byteswapping
     48 # static functions and stuff like that.
     49 kernel_known_arm_statics = set(
     50        [ "___arch__swab32",    # asm-arm/byteorder.h
     51        ]
     52     )
     53 
     54 kernel_known_x86_statics = set(
     55         [ "___arch__swab32",  # asm-x86/byteorder.h
     56           "___arch__swab64",  # asm-x86/byteorder.h
     57         ]
     58     )
     59 
     60 kernel_known_sh_statics = set(
     61        [ "___arch__swab16",    # asm-sh/byteorder.h
     62          "___arch__swab32",    # asm-sh/byteorder.h
     63          "___arch__swab64",    # asm-sh/byteorder.h
     64          "__FD_ZERO",          # asm-sh/posix_types_32/64.h
     65          "__FD_SET",           # asm-sh/posix_types_32/64.h
     66        ]
     67     )
     68 
     69 kernel_known_generic_statics = set(
     70         [ "__invalid_size_argument_for_IOC",  # asm-generic/ioctl.h
     71           "__cmsg_nxthdr",                    # linux/socket.h
     72           "cmsg_nxthdr",                      # linux/socket.h
     73           "ipt_get_target",
     74         ]
     75     )
     76 
     77 # this maps an architecture to the set of static inline functions that
     78 # we want to keep in the final headers
     79 #
     80 kernel_known_statics = {
     81         "arm" : kernel_known_arm_statics,
     82         "x86" : kernel_known_x86_statics,
     83         "sh" : kernel_known_sh_statics
     84     }
     85 
     86 # this is a list of macros which we want to specifically exclude from
     87 # the generated files.
     88 #
     89 kernel_ignored_macros = set(
     90         [ "MAXHOSTNAMELEN",  # for some reason, Linux defines it to 64
     91                              # while most of the BSD code expects this to be 256
     92                              # so ignore the kernel-provided definition and
     93                              # define it in the Bionic headers instead
     94         ]
     95     )
     96 
     97 # this is the standard disclaimer
     98 #
     99 kernel_disclaimer = """\
    100 /****************************************************************************
    101  ****************************************************************************
    102  ***
    103  ***   This header was automatically generated from a Linux kernel header
    104  ***   of the same name, to make information necessary for userspace to
    105  ***   call into the kernel available to libc.  It contains only constants,
    106  ***   structures, and macros generated from the original header, and thus,
    107  ***   contains no copyrightable information.
    108  ***
    109  ****************************************************************************
    110  ****************************************************************************/
    111 """
    112