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