gen_rom_stats.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #! /bin/bash
  2. #echo "COMP_LIB = ${COMP_LIB}"
  3. #echo "STRIP = ${STRIP}"
  4. bash ${TOP_DIR}/extract.sh test
  5. cd ${DIST_DIR}/eng
  6. cp -rf wrappers/wrappers_defs.h infra/*.h ${FINAL_DIR}/include
  7. echo "Selected functions:"
  8. echo ""
  9. for iter in $(ls|grep -v 'wrappers\|infra'); do
  10. echo " . [${iter}]"
  11. cp -f ${iter}/*_api.h ${FINAL_DIR}/include 2>/dev/null
  12. cp -f ${iter}/*_wrapper.h ${FINAL_DIR}/include 2>/dev/null
  13. done
  14. cd ${OLDPWD}
  15. echo ""
  16. printf " | %-5s | %-35s | %14s | %26s |\n" "RATE" "OBJ NAME" "BYTES/TOTAL" "MODULE NAME"
  17. for iter in ${ALL_SUB_DIRS}; do
  18. [ ! -d ${LIBOBJ_TMPDIR}/${iter} ] && continue
  19. cd ${LIBOBJ_TMPDIR}/${iter}
  20. ITER_OBJS=$(find . -name "*.o")
  21. [ "${ITER_OBJS}" != "" ] || continue
  22. ${STRIP} ${ITER_OBJS} 2>/dev/null
  23. ITER_SIZE=$(size ${ITER_OBJS} | ${SED} '1d' | awk '{ sum += $1 } END { print sum }')
  24. [ "${ITER_SIZE}" != "0" ] && \
  25. printf " |-%-.5s-|-%-.35s-|-%.14s-|-%.26s-|\n" \
  26. "-----------------------------------------" \
  27. "-----------------------------------------" \
  28. "-----------------------------------------" \
  29. "-----------------------------------------"
  30. for j in ${ITER_OBJS}; do
  31. size $j | ${SED} '1d' \
  32. | awk -v sum="${ITER_SIZE}" \
  33. -v mod="${iter}" \
  34. -v obj="$(basename ${j})" \
  35. '{ if ($1 != 0) printf("%d %.4s%% %s %-d/%d %s\n", $1, ($1/sum)*100, obj, $1, sum, mod); }'
  36. done \
  37. | sort -nr \
  38. | cut -d' ' -f2- \
  39. | awk '{ printf(" | %-5s | %-35s | %14s | %26s |\n", $1, $2, $3, $4); }'
  40. cd ${OLDPWD}
  41. done
  42. echo ""
  43. echo ""
  44. echo ""
  45. printf " | %-5s | %-35s | %-9s | %-9s | %-10s | %-6s |\n" \
  46. "RATE" "MODULE NAME" "ROM" "RAM" "BSS" "DATA"
  47. printf " |-%-.5s-|-%-.35s-|-%-.9s-|-%-.9s-|-%-.10s-|-%-.6s-|\n" \
  48. "-------------" \
  49. "--------------------------------------------" \
  50. "-------------" \
  51. "-------------" \
  52. "-------------" \
  53. "-------------"
  54. cd ${LIBOBJ_TMPDIR}
  55. TOTAL_ROM=$(find $(for i in ${COMP_LIB_COMPONENTS}; do echo "${OUTPUT_DIR}/${i}"; done) -name "*.o" 2>/dev/null \
  56. | xargs size \
  57. | awk '{ sum += $1 } END { print sum }')
  58. cd ${OLDPWD}
  59. for iter in ${COMP_LIB_COMPONENTS}; do
  60. [ ! -d ${LIBOBJ_TMPDIR}/${iter} ] && continue
  61. cd ${LIBOBJ_TMPDIR}/${iter}
  62. ITER_OBJS=$(find . -name "*.o")
  63. [ "${ITER_OBJS}" != "" ] || continue
  64. ${STRIP} ${ITER_OBJS} 2>/dev/null
  65. size ${ITER_OBJS} | ${SED} '1d' \
  66. | awk -v name=${iter} -v total_rom=${TOTAL_ROM} '
  67. BEGIN { sum_rom = sum_ram = sum_bss = sum_data = 0 }
  68. {
  69. sum_rom += $1 + $2;
  70. sum_ram += $2 + $3;
  71. sum_bss += $3;
  72. sum_data += $2;
  73. }
  74. END {
  75. rate = sum_rom / total_rom * 100;
  76. printf("%d | %.4s%% | %-35s | %-9s | %-9s | %-10s | %-6s |\n",
  77. sum_rom,
  78. rate,
  79. name,
  80. sum_rom,
  81. sum_ram,
  82. sum_bss,
  83. sum_data);
  84. }
  85. '
  86. cd ${OLDPWD}
  87. done \
  88. | sort -nr \
  89. | cut -d' ' -f2- \
  90. | ${SED} 's!.*! &!g' \
  91. | awk -v total_rom=${TOTAL_ROM} '
  92. BEGIN { sum_rom = sum_ram = sum_bss = sum_data = 0 }
  93. {
  94. sum_rom += $6;
  95. sum_ram += $8;
  96. sum_bss += $10;
  97. sum_data += $12;
  98. print;
  99. }
  100. END {
  101. rate = sum_rom / total_rom * 100;
  102. printf(" |-------|-------------------------------------|-----------|-----------|------------|--------|\n");
  103. if (rate < 100)
  104. printf(" | %.4s%% | %-35s | %-9s | %-9s | %-10s | %-6s |\n", rate, "- IN TOTAL -", sum_rom, sum_ram, sum_bss, sum_data);
  105. else
  106. printf(" | %.3s%% | %-35s | %-9s | %-9s | %-10s | %-6s |\n", rate, "- IN TOTAL -", sum_rom, sum_ram, sum_bss, sum_data);
  107. }
  108. '
  109. echo ""