build.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #
  2. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. #
  5. #!/bin/bash
  6. CURR_DIR=$PWD
  7. WAMR_DIR=${PWD}/../..
  8. OUT_DIR=${PWD}/out
  9. BUILD_DIR=${PWD}/build
  10. IWASM_ROOT=${PWD}/../../core/iwasm
  11. APP_FRAMEWORK_DIR=${PWD}/../../core/app-framework
  12. NATIVE_LIBS=${APP_FRAMEWORK_DIR}/app-native-shared
  13. APP_LIB_SRC="${APP_FRAMEWORK_DIR}/base/app/*.c ${APP_FRAMEWORK_DIR}/sensor/app/*.c \
  14. ${APP_FRAMEWORK_DIR}/connection/app/*.c ${NATIVE_LIBS}/*.c"
  15. WASM_APPS=${PWD}/wasm-apps
  16. CLEAN=
  17. CM_BUILD_TYPE="-DCMAKE_BUILD_TYPE=Release"
  18. CM_TOOLCHAIN=""
  19. usage ()
  20. {
  21. echo "build.sh [options]"
  22. echo " -p [profile]"
  23. echo " -d [target]"
  24. echo " -c, rebuild SDK"
  25. exit 1
  26. }
  27. while getopts "p:dch" opt
  28. do
  29. case $opt in
  30. p)
  31. PROFILE=$OPTARG
  32. ;;
  33. d)
  34. CM_BUILD_TYPE="-DCMAKE_BUILD_TYPE=Debug"
  35. ;;
  36. c)
  37. CLEAN="TRUE"
  38. ;;
  39. h)
  40. usage
  41. exit 1;
  42. ;;
  43. ?)
  44. echo "Unknown arg: $arg"
  45. usage
  46. exit 1
  47. ;;
  48. esac
  49. done
  50. if [ "$CLEAN" = "TRUE" ]; then
  51. rm -rf $CURR_DIR/cmake-build
  52. fi
  53. while [ ! -n "$PROFILE" ]
  54. do
  55. support_profiles=`ls -l "profiles/" |grep '^d' | awk '{print $9}'`
  56. read -p "Enter build target profile (default=host-interp) -->
  57. $support_profiles
  58. \>:" read_platform
  59. if [ ! -n "$read_platform" ]; then
  60. PROFILE="host-interp"
  61. else
  62. PROFILE=$read_platform
  63. fi
  64. done
  65. ARG_TOOLCHAIN=""
  66. TOOL_CHAIN_FILE=$CURR_DIR/profiles/$PROFILE/toolchain.cmake
  67. if [ -f $TOOL_CHAIN_FILE ]; then
  68. CM_TOOLCHAIN="-DCMAKE_TOOLCHAIN_FILE=$TOOL_CHAIN_FILE"
  69. ARG_TOOLCHAIN="-t $TOOL_CHAIN_FILE"
  70. echo "toolchain file: $TOOL_CHAIN_FILE"
  71. fi
  72. SDK_CONFIG_FILE=$CURR_DIR/profiles/$PROFILE/wamr_config_simple.cmake
  73. if [ ! -f $SDK_CONFIG_FILE ]; then
  74. echo "SDK config file [$SDK_CONFIG_FILE] doesn't exit. quit.."
  75. exit 1
  76. fi
  77. rm -rf ${OUT_DIR}
  78. mkdir ${OUT_DIR}
  79. mkdir ${OUT_DIR}/wasm-apps
  80. cd ${WAMR_DIR}/core/shared/mem-alloc
  81. PROFILE="simple-$PROFILE"
  82. echo "#####################build wamr sdk"
  83. cd ${WAMR_DIR}/wamr-sdk
  84. ./build_sdk.sh -n $PROFILE -x $SDK_CONFIG_FILE $ARG_TOOLCHAIN
  85. [ $? -eq 0 ] || exit $?
  86. echo "#####################build simple project"
  87. cd ${CURR_DIR}
  88. mkdir -p cmake-build/$PROFILE
  89. cd cmake-build/$PROFILE
  90. cmake ../.. -DWAMR_BUILD_SDK_PROFILE=$PROFILE $CM_TOOLCHAIN $CM_BUILD_TYPE
  91. make
  92. if [ $? != 0 ];then
  93. echo "BUILD_FAIL simple exit as $?\n"
  94. exit 2
  95. fi
  96. cp -a simple ${OUT_DIR}
  97. echo "#####################build simple project success"
  98. echo -e "\n\n"
  99. echo "#####################build host-tool"
  100. cd ${WAMR_DIR}/test-tools/host-tool
  101. mkdir -p bin
  102. cd bin
  103. cmake .. $CM_TOOLCHAIN $CM_BUILD_TYPE
  104. make
  105. if [ $? != 0 ];then
  106. echo "BUILD_FAIL host tool exit as $?\n"
  107. exit 2
  108. fi
  109. cp host_tool ${OUT_DIR}
  110. echo "#####################build host-tool success"
  111. echo -e "\n\n"
  112. echo "#####################build wasm apps"
  113. cd ${WASM_APPS}
  114. for i in `ls *.c`
  115. do
  116. APP_SRC="$i"
  117. OUT_FILE=${i%.*}.wasm
  118. /opt/wasi-sdk/bin/clang \
  119. -I${WAMR_DIR}/wamr-sdk/out/$PROFILE/app-sdk/wamr-app-framework/include \
  120. -L${WAMR_DIR}/wamr-sdk/out/$PROFILE/app-sdk/wamr-app-framework/lib \
  121. -lapp_framework \
  122. --target=wasm32 -O3 -z stack-size=4096 -Wl,--initial-memory=65536 \
  123. --sysroot=${WAMR_DIR}/wamr-sdk/out/$PROFILE/app-sdk/libc-builtin-sysroot \
  124. -Wl,--allow-undefined-file=${WAMR_DIR}/wamr-sdk/out/$PROFILE/app-sdk/libc-builtin-sysroot/share/defined-symbols.txt \
  125. -Wl,--strip-all,--no-entry -nostdlib \
  126. -Wl,--export=on_init -Wl,--export=on_destroy \
  127. -Wl,--export=on_request -Wl,--export=on_response \
  128. -Wl,--export=on_sensor_event -Wl,--export=on_timer_callback \
  129. -Wl,--export=on_connection_data \
  130. -Wl,--export=__heap_base -Wl,--export=__data_end \
  131. -o ${OUT_DIR}/wasm-apps/${OUT_FILE} ${APP_SRC}
  132. if [ -f ${OUT_DIR}/wasm-apps/${OUT_FILE} ]; then
  133. echo "build ${OUT_FILE} success"
  134. else
  135. echo "build ${OUT_FILE} fail"
  136. fi
  137. done
  138. echo "#####################build wasm apps done"