modifyMK.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. # Modify mk file
  2. MK_FILE_PATH=$1
  3. TEMP_FILE_PATH=$(dirname ${MK_FILE_PATH})/temp.txt
  4. SELECTED_PLUGINS=(${NEED_PUBLISH//:/ })
  5. ###############################
  6. # functions used
  7. ###############################
  8. getStaticModuleName()
  9. {
  10. #get the library file name created by ndk build
  11. #find line with LOCAL_MODULE
  12. _FUN_DEFINED_LINE=`grep 'LOCAL_MODULE[ :]' ${TARGET_ROOT}/$1/android/Android.mk`
  13. if [ -n "${_FUN_DEFINED_LINE}" ]; then
  14. _FUN_LIB_FILENAME=${_FUN_DEFINED_LINE#*\=}
  15. fi
  16. _FUN_LIB_FILENAME=`echo ${_FUN_LIB_FILENAME} | sed 's/ //g'`
  17. echo ${_FUN_LIB_FILENAME}
  18. }
  19. # check if mk file existed or not
  20. if [ -f ${MK_FILE_PATH} ]; then
  21. ADD_MODULE_STR=""
  22. ADD_IMPORT_STR=""
  23. for plugin_name in ${SELECTED_PLUGINS[@]}
  24. do
  25. PLUGIN_MK_FILE=${TARGET_ROOT}/${plugin_name}/android/Android.mk
  26. if [ ! -f "${PLUGIN_MK_FILE}" ]; then
  27. continue
  28. fi
  29. PLUGIN_MODULE_NAME="$(getStaticModuleName ${plugin_name})"
  30. HAVE_PLUGIN=`grep "^\([\s]*[^#]*\)${PLUGIN_MODULE_NAME}" ${MK_FILE_PATH}`
  31. if [ "${HAVE_PLUGIN}" ]; then
  32. # already have this plugin
  33. echo "Plugin ${plugin_name} have added in Android.mk"
  34. continue
  35. else
  36. if [ -z "${ADD_MODULE_STR}" ]; then
  37. ADD_MODULE_STR=${PLUGIN_MODULE_NAME}
  38. else
  39. ADD_MODULE_STR="${ADD_MODULE_STR} ${PLUGIN_MODULE_NAME}"
  40. fi
  41. NEW_LINE="\$(call import-module,${plugin_name}/android)"
  42. if [ -z "${ADD_IMPORT_STR}" ]; then
  43. ADD_IMPORT_STR=${NEW_LINE}
  44. else
  45. ADD_IMPORT_STR="${ADD_IMPORT_STR}:${NEW_LINE}"
  46. fi
  47. fi
  48. done
  49. # Modify the mk file if necessary
  50. if [ "${ADD_MODULE_STR}" ]; then
  51. gawk '
  52. {
  53. ModuleStr="'"$ADD_MODULE_STR"'";
  54. ImportStr="'"$ADD_IMPORT_STR"'";
  55. if (match($0, /^([\s]*[^#]*)LOCAL_WHOLE_STATIC_LIBRARIES/) && ! PROC1)
  56. {
  57. PROC1 = 1;
  58. if (match($0, /\\$/))
  59. {
  60. printf "%s\n",$0;
  61. printf "%s \\\n",ModuleStr;
  62. } else
  63. {
  64. printf "%s \\\n",$0;
  65. printf "%s\n",ModuleStr;
  66. }
  67. } else
  68. if (match($0, /^([\s]*[^#]*)call[\s]*import-module/) && ! PROC2)
  69. {
  70. printf $0;
  71. split(ImportStr,arr,":")
  72. for (j=0; j<length(arr); j++)
  73. {
  74. oneStr=arr[j];
  75. printf "%s\n",oneStr;
  76. }
  77. PROC2 = 1;
  78. } else
  79. if (match($0, /^([\s]*[^#]*)include[ \t]+\$\(BUILD_(SHARED|STATIC)_LIBRARY\)/) && ! PROC1)
  80. {
  81. PROC1 = 1;
  82. printf "\nLOCAL_WHOLE_STATIC_LIBRARIES := %s\n\n",ModuleStr;
  83. printf "%s\n",$0;
  84. } else {
  85. printf "%s\n",$0;
  86. }
  87. }
  88. END {
  89. if (! PROC1)
  90. {
  91. printf "\nLOCAL_WHOLE_STATIC_LIBRARIES := %s\n",ModuleStr;
  92. }
  93. if (! PROC2)
  94. {
  95. split(ImportStr,arr,":")
  96. for (j=0; j<length(arr); j++)
  97. {
  98. oneStr=arr[j];
  99. printf "%s\n",oneStr;
  100. }
  101. }
  102. }' ${MK_FILE_PATH} > ${TEMP_FILE_PATH}
  103. cp -rf ${TEMP_FILE_PATH} ${MK_FILE_PATH}
  104. rm -rf ${TEMP_FILE_PATH}
  105. fi
  106. else
  107. echo "Can't find Android.mk file"
  108. fi
  109. exit 0