| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/usr/bin/env bash
- #
- # Copyright (c) 2022 Project CHIP Authors
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- set -e
- set -x
- if [ "$#" != 2 && "$#" != 3 ]; then
- exit -1
- fi
- source "$(dirname "$0")/../../scripts/activate.sh"
- if [ "$IMX_SDK_ROOT" = "" -o ! -d "$IMX_SDK_ROOT" ]; then
- echo "the Yocto SDK path is not specified with the shell env IMX_SDK_ROOT or an invalid path is specified"
- exit -1
- fi
- env
- entries="$(echo "$(ls "$IMX_SDK_ROOT")" | tr -s '\n' ',')"
- IFS=',' read -ra entry_array <<<"$entries"
- for entry in "${entry_array[@]}"; do
- if [ "$(echo "$entry" | grep -E "^environment-setup-")" != "" ]; then
- env_setup_script=$entry
- break
- fi
- done
- if [ -z "$env_setup_script" ]; then
- echo "The SDK environment setup script is not found, make sure the env IMX_SDK_ROOT is correctly set."
- exit 1
- fi
- while read line; do
- # trim the potential whitespaces
- line=$(echo "$line" | xargs)
- if [ "$(echo "$line" | grep -E "^export SDKTARGETSYSROOT=")" != "" ]; then
- sdk_target_sysroot=${line#"export SDKTARGETSYSROOT="}
- fi
- if [ "$(echo "$line" | grep -E "^export CC=")" != "" ]; then
- cc=${line#"export CC="}
- cc=${cc#"\""}
- cc=${cc%"\""}
- cc=${cc/"\$SDKTARGETSYSROOT"/$sdk_target_sysroot}
- fi
- if [ "$(echo "$line" | grep -E "^export CXX=")" != "" ]; then
- cxx=${line#"export CXX="}
- cxx=${cxx#"\""}
- cxx=${cxx%"\""}
- cxx=${cxx/"\$SDKTARGETSYSROOT"/$sdk_target_sysroot}
- fi
- if [ "$(echo "$line" | grep -E "^export ARCH=")" != "" ]; then
- target_cpu=${line#"export ARCH="}
- if [ "$target_cpu" = "arm64" ]; then
- arm_arch="armv8-a"
- elif [ "$target_cpu" = "arm" ]; then
- arm_arch="armv7ve"
- else
- echo "ARCH should be arm64 or arm in the SDK environment setup script."
- exit 1
- fi
- fi
- if [ "$(echo "$line" | grep -E "^export CROSS_COMPILE=")" != "" ]; then
- cross_compile=${line#"export CROSS_COMPILE="}
- cross_compile=${cross_compile%"-"}
- fi
- done <"$IMX_SDK_ROOT/$env_setup_script"
- if [ -z "$sdk_target_sysroot" ]; then
- echo "SDKTARGETSYSROOT is not found in the SDK environment setup script."
- exit 1
- fi
- if [ -z "$cc" -o -z "$cxx" ]; then
- echo "CC and/or CXX are not found in the SDK environment setup script."
- exit 1
- fi
- if [ -z "$target_cpu" -o -z "$cross_compile" ]; then
- echo "ARCH and/or CROSS_COMPILE are not found in the SDK environment setup script."
- exit 1
- fi
- release_build=true
- if [ "$3" = "debug" ]; then
- release_build=false
- fi
- PLATFORM_CFLAGS='-DCHIP_DEVICE_CONFIG_WIFI_STATION_IF_NAME=\"mlan0\"", "-DCHIP_DEVICE_CONFIG_LINUX_DHCPC_CMD=\"udhcpc -b -i %s \"'
- gn gen --check --fail-on-unused-args --root="$1" "$2" --args="target_os=\"linux\" target_cpu=\"$target_cpu\" arm_arch=\"$arm_arch\"
- treat_warnings_as_errors=false
- import(\"//build_overrides/build.gni\")
- sysroot=\"$sdk_target_sysroot\"
- target_cflags=[ \"$PLATFORM_CFLAGS\" ]
- custom_toolchain=\"\${build_root}/toolchain/custom\"
- target_cc=\"$IMX_SDK_ROOT/sysroots/x86_64-pokysdk-linux/usr/bin/$cross_compile/$cc\"
- target_cxx=\"$IMX_SDK_ROOT/sysroots/x86_64-pokysdk-linux/usr/bin/$cross_compile/$cxx\"
- target_ar=\"$IMX_SDK_ROOT/sysroots/x86_64-pokysdk-linux/usr/bin/$cross_compile/$cross_compile-ar\"
- $(if [ "$release_build" = "true" ]; then echo "is_debug=false"; else echo "optimize_debug=true"; fi)"
- ninja -C "$2"
|