build.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/bin/bash
  2. CURR_DIR=$PWD
  3. WAMR_DIR=${PWD}/../..
  4. OUT_DIR=${PWD}/out
  5. BUILD_DIR=${PWD}/build
  6. IWASM_ROOT=${PWD}/../../core/iwasm
  7. APP_FRAMEWORK_DIR=${PWD}/../../core/app-framework
  8. NATIVE_LIBS=${APP_FRAMEWORK_DIR}/app-native-shared
  9. APP_LIB_SRC="${APP_FRAMEWORK_DIR}/base/app/*.c ${APP_FRAMEWORK_DIR}/sensor/app/*.c \
  10. ${APP_FRAMEWORK_DIR}/connection/app/*.c ${NATIVE_LIBS}/*.c"
  11. WASM_APPS=${PWD}/wasm-apps
  12. CLEAN=
  13. usage ()
  14. {
  15. echo "build.sh [options]"
  16. echo " -p [platform]"
  17. echo " -t [target]"
  18. echo " -c, rebuild SDK"
  19. exit 1
  20. }
  21. while getopts "p:t:ch" opt
  22. do
  23. case $opt in
  24. p)
  25. PLATFORM=$OPTARG
  26. ;;
  27. t)
  28. TARGET=$OPTARG
  29. ;;
  30. c)
  31. CLEAN="TRUE"
  32. ;;
  33. h)
  34. usage
  35. exit 1;
  36. ;;
  37. ?)
  38. echo "Unknown arg: $arg"
  39. usage
  40. exit 1
  41. ;;
  42. esac
  43. done
  44. rm -rf ${OUT_DIR}
  45. mkdir ${OUT_DIR}
  46. mkdir ${OUT_DIR}/wasm-apps
  47. cd ${WAMR_DIR}/core/shared/mem-alloc
  48. if [ ! -d "tlsf" ]; then
  49. git clone https://github.com/mattconte/tlsf
  50. fi
  51. echo "#####################build wamr sdk"
  52. cd ${WAMR_DIR}/wamr-sdk
  53. ./build_sdk.sh -n simple -x ${CURR_DIR}/wamr_config_simple.cmake $*
  54. echo "#####################build simple project"
  55. cd ${CURR_DIR}
  56. mkdir -p cmake_build
  57. cd cmake_build
  58. cmake .. -DWAMR_BUILD_SDK_PROFILE=simple
  59. make
  60. if [ $? != 0 ];then
  61. echo "BUILD_FAIL simple exit as $?\n"
  62. exit 2
  63. fi
  64. cp -a simple ${OUT_DIR}
  65. echo "#####################build simple project success"
  66. echo -e "\n\n"
  67. echo "#####################build host-tool"
  68. cd ${WAMR_DIR}/test-tools/host-tool
  69. mkdir -p bin
  70. cd bin
  71. cmake ..
  72. make
  73. if [ $? != 0 ];then
  74. echo "BUILD_FAIL host tool exit as $?\n"
  75. exit 2
  76. fi
  77. cp host_tool ${OUT_DIR}
  78. echo "#####################build host-tool success"
  79. echo -e "\n\n"
  80. echo "#####################build wasm apps"
  81. cd ${WASM_APPS}
  82. for i in `ls *.c`
  83. do
  84. APP_SRC="$i"
  85. OUT_FILE=${i%.*}.wasm
  86. /opt/wasi-sdk/bin/clang \
  87. -I${WAMR_DIR}/wamr-sdk/out/simple/app-sdk/wamr-app-framework/include \
  88. -L${WAMR_DIR}/wamr-sdk/out/simple/app-sdk/wamr-app-framework/lib \
  89. -lapp_framework \
  90. --target=wasm32 -O3 -z stack-size=4096 -Wl,--initial-memory=65536 \
  91. --sysroot=${WAMR_DIR}/wamr-sdk/out/simple/app-sdk/libc-builtin-sysroot \
  92. -Wl,--allow-undefined-file=${WAMR_DIR}/wamr-sdk/out/simple/app-sdk/libc-builtin-sysroot/share/defined-symbols.txt \
  93. -Wl,--no-threads,--strip-all,--no-entry -nostdlib \
  94. -Wl,--export=on_init -Wl,--export=on_destroy \
  95. -Wl,--export=on_request -Wl,--export=on_response \
  96. -Wl,--export=on_sensor_event -Wl,--export=on_timer_callback \
  97. -Wl,--export=on_connection_data \
  98. -o ${OUT_DIR}/wasm-apps/${OUT_FILE} ${APP_SRC}
  99. if [ -f ${OUT_DIR}/wasm-apps/${OUT_FILE} ]; then
  100. echo "build ${OUT_FILE} success"
  101. else
  102. echo "build ${OUT_FILE} fail"
  103. fi
  104. done
  105. echo "#####################build wasm apps done"