mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-31 13:17:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			224 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Copyright (C) 2019 Intel Corporation.  All rights reserved.
 | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| 
 | |
| 
 | |
| usage ()
 | |
| {
 | |
|     echo "menuconfig.sh [options]"
 | |
|     echo " -x [config file path name]"
 | |
|     exit 1
 | |
| }
 | |
| 
 | |
| 
 | |
| while getopts "x:" opt
 | |
| do
 | |
|     case $opt in
 | |
|         x)
 | |
|         wamr_config_cmake_file=$OPTARG
 | |
|         ;;
 | |
|         ?)
 | |
|         echo "Unknown arg: $arg"
 | |
|         usage
 | |
|         exit 1
 | |
|         ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| 
 | |
| if [  -z $wamr_config_cmake_file ]; then
 | |
|     usage
 | |
|     exit
 | |
| fi
 | |
| 
 | |
| 
 | |
| function set_build_target () {
 | |
|     target=$1
 | |
| 
 | |
|     if [[ "${target}" = "X86_64" ]]; then
 | |
|         echo -e "set (WAMR_BUILD_TARGET \"X86_64\")" >> ${wamr_config_cmake_file}
 | |
|     elif [[ "${target}" = "X86_32" ]]; then
 | |
|         echo -e "set (WAMR_BUILD_TARGET \"X86_32\")" >> ${wamr_config_cmake_file}
 | |
|     else
 | |
|         echo "unknown build target."
 | |
|         exit 1
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function set_build_platform () {
 | |
|     platform=$1
 | |
| 
 | |
|     if [[ "${platform}" = "linux" ]]; then
 | |
|         echo -e "set (WAMR_BUILD_PLATFORM \"linux\")" >> ${wamr_config_cmake_file}
 | |
|     # TODO: add other platforms
 | |
|     else
 | |
|         echo "${platform} platform currently not supported"
 | |
|         exit 1
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # input: array of selected exec modes [aot jit interp]
 | |
| function set_exec_mode () {
 | |
|     modes=($1)
 | |
| 
 | |
|     for mode in ${modes[@]}
 | |
|     do
 | |
|         if [[ "$mode" = "aot" ]]; then
 | |
|             echo "set (WAMR_BUILD_AOT 1)" >> ${wamr_config_cmake_file}
 | |
|         elif [[ "$mode" = "jit" ]]; then
 | |
|             echo "set (WAMR_BUILD_JIT 1)" >> ${wamr_config_cmake_file}
 | |
|             BUILD_LLVM="TRUE"
 | |
|         elif [[ "$mode" = "interp" ]]; then
 | |
|             echo "set (WAMR_BUILD_INTERP 1)" >> ${wamr_config_cmake_file}
 | |
|         else
 | |
|             echo "unknown execute mode."
 | |
|             exit 1
 | |
|         fi
 | |
|     done
 | |
| }
 | |
| 
 | |
| function set_libc_support () {
 | |
|     libc=$1
 | |
| 
 | |
|     if [ "$libc" = "WASI" ]; then
 | |
|         echo "set (WAMR_BUILD_LIBC_WASI 1)" >> ${wamr_config_cmake_file}
 | |
|     else
 | |
|         echo "set (WAMR_BUILD_LIBC_BUILTIN 1)" >> ${wamr_config_cmake_file}
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function set_app_framework () {
 | |
|     app_support=$1
 | |
| 
 | |
|     if [ "$app_support" = "TRUE" ]; then
 | |
|         echo "set (WAMR_BUILD_APP_FRAMEWORK 1)" >> ${wamr_config_cmake_file}
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # input: array of selected app modules
 | |
| function set_app_module () {
 | |
|     modules=($1)
 | |
| 
 | |
|     for module in ${modules[*]}
 | |
|     do
 | |
|         if [ "${module}" = "all" ]; then
 | |
|             cmake_app_list="WAMR_APP_BUILD_ALL"
 | |
|             break
 | |
|         fi
 | |
| 
 | |
|         cmake_app_list="${cmake_app_list} WAMR_APP_BUILD_${module^^}"
 | |
|     done
 | |
| 
 | |
|     # APP module list
 | |
|     if [ -n "${cmake_app_list}" ]; then
 | |
|         echo "set (WAMR_BUILD_APP_LIST ${cmake_app_list# })" >> ${wamr_config_cmake_file}
 | |
|     fi
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| sdk_root=$(cd "$(dirname "$0")/" && pwd)
 | |
| wamr_root=${sdk_root}/..
 | |
| 
 | |
| if [ ! `command -v menuconfig` ]; then
 | |
|     echo "Can't find kconfiglib python lib on this computer"
 | |
|     echo "Downloading it through pip"
 | |
|     echo "If this fails, you can try `pip install kconfiglib` to install it manually"
 | |
|     echo "Or download the repo from https://github.com/ulfalizer/Kconfiglib"
 | |
| 
 | |
|     pip install kconfiglib
 | |
| fi
 | |
| 
 | |
| if [ -f ".wamr_modules" ]; then
 | |
|     rm -f .wamr_modules
 | |
| fi
 | |
| 
 | |
| # get all modules under core/app-framework
 | |
| for module in `ls ${wamr_root}/core/app-framework -F | grep "/$" | grep -v "base" | grep -v "app-native-shared" | grep -v "template"`
 | |
| do
 | |
|     module=${module%*/}
 | |
|     echo "config APP_BUILD_${module^^}"   >>  .wamr_modules
 | |
|     echo "    bool \"enable ${module}\""  >>  .wamr_modules
 | |
| done
 | |
| 
 | |
| menuconfig Kconfig
 | |
| [ $? -eq 0 ] || exit $?
 | |
| 
 | |
| if [ ! -e ".config" ]; then
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| # parse platform
 | |
| platform=`cat .config | grep "^CONFIG_PLATFORM"`
 | |
| platform=${platform%*=y}
 | |
| platform=${platform,,}
 | |
| platform=${platform#config_platform_}
 | |
| 
 | |
| # parse target
 | |
| target=`cat .config | grep "^CONFIG_TARGET"`
 | |
| target=${target%*=y}
 | |
| target=${target#CONFIG_TARGET_}
 | |
| 
 | |
| # parse execution mode
 | |
| modes=`cat .config | grep "^CONFIG_EXEC"`
 | |
| mode_list=""
 | |
| for mode in ${modes}
 | |
| do
 | |
|     mode=${mode%*=y}
 | |
|     mode=${mode#CONFIG_EXEC_}
 | |
|     mode_list="${mode_list} ${mode,,}"
 | |
| done
 | |
| if [ -z "${mode_list}" ]; then
 | |
|     echo "execution mode are not selected"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # parse libc support
 | |
| libc=`cat .config | grep "^CONFIG_LIBC"`
 | |
| libc=${libc%*=y}
 | |
| if [ "${libc}" = "CONFIG_LIBC_WASI" ]; then
 | |
|     libc_support="WASI"
 | |
| else
 | |
|     libc_support="BUILTIN"
 | |
| fi
 | |
| 
 | |
| # parse application framework options
 | |
| app_option=`cat .config | grep "^CONFIG_APP_FRAMEWORK"`
 | |
| app_option=${app_option%*=y}
 | |
| app_option=${app_option#CONFIG_APP_FRAMEWORK_}
 | |
| 
 | |
| if [ "${app_option}" != "DISABLE" ]; then
 | |
|     app_enable="TRUE"
 | |
| 
 | |
|     # Default components
 | |
|     if [ "${app_option}" = "DEFAULT" ]; then
 | |
|         app_list="base connection sensor"
 | |
|     # All components
 | |
|     elif [ "${app_option}" = "ALL" ]; then
 | |
|         app_list="all"
 | |
|     # Customize
 | |
|     elif [ "${app_option}" = "CUSTOM" ]; then
 | |
|         app_option=`cat .config | grep "^CONFIG_APP_BUILD"`
 | |
|         app_list="base"
 | |
|         for app in ${app_option}
 | |
|         do
 | |
|             app=${app%*=y}
 | |
|             app=${app#CONFIG_APP_BUILD_}
 | |
|             app_list="${app_list} ${app,,}"
 | |
|         done
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| if  [[ -f $wamr_config_cmake_file ]]; then
 | |
|     rm  $wamr_config_cmake_file
 | |
| fi
 | |
| 
 | |
| set_build_target        ${target}
 | |
| set_build_platform      ${platform}
 | |
| set_exec_mode           "${mode_list[*]}"
 | |
| set_libc_support        ${libc_support}
 | |
| set_app_module          "${app_list[*]}"
 | |
| set_app_framework       ${app_enable}
 | 
