Home | History | Annotate | only in /development/vndk/tools/vndk-compliance
Up to higher level directory
NameDateSize
parse-and-fix-errors.sh06-Dec-20173.1K
README.md06-Dec-20171.9K

README.md

      1 # How to make your build VNDK compliant
      2 
      3 ## Enable VNDK flag
      4 In your device's BoardConfig.mk, set BOARD_VNDK_VERSION := current.
      5 
      6 Set that device's lunch combo and compile
      7 
      8     make -j32 >log 2>&1
      9 
     10 
     11 ## Fixing Build errors
     12 The resulting errors will be mainly of 2 types:
     13 
     14 ### Copy headers not allowed
     15 Vendor modules are not allowed to use LOCAL_COPY_HEADERS. They need to export
     16 their headers via BUILD_HEADER_LIBRARY. Modules will import this library via
     17 LOCAL_HEADER_LIBRARIES. 
     18 
     19 Here is an example on how to do that:
     20 * Lets call the offending module libabc. Open libabc's Android.mk
     21 * Note all the headers that are being copied by libabc
     22 * Create a local dir called include (or inc). Add symlinks to every file that is
     23    being copied. If all the files are in the same folder, the include dir itself
     24    will be a symlink to that folder
     25 * In Android.mk, remove all lines with copy headers
     26 
     27 
     28     - LOCAL_COPY_HEADERS_TO := dir
     29     - LOCAL_COPY_HEADERS := file1
     30     - LOCAL_COPY_HEADERS := file2
     31     - ....
     32 
     33 * Replace above lines with
     34 
     35 
     36     + LOCAL_EXPORT_HEADER_LIBRARY_HEADERS := libabc_headers
     37 
     38 
     39 * Create the module_headers lib outside the definition of current module
     40 
     41 
     42     + include $(CLEAR_VARS)
     43     + LOCAL_MODULE := libabc_headers
     44     + LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
     45     + include $(BUILD_HEADER_LIBRARY)
     46 
     47 Note: - and + are code lines in patch format
     48 
     49 ### Headers not found
     50 * Once all copy header violations are cleaned up, make will start throwing lots of
     51    "file not found" errors. These are due to 2 reasons:
     52 
     53    * Modules relying on copy headers are not finding those headers anymore due
     54    to above changes
     55 
     56    * VNDK build rules remove global includes from the path. So dirs like
     57    system/core/include, frameworks/av/include or hardware/libhardware/include
     58    will no longer be offered in include path
     59 * Fix them using the **parse_and_fix_errors.sh** script. Customize it according to
     60    your needs.
     61  
     62 
     63