mirror of
https://github.com/espressif/esp-matter.git
synced 2026-04-27 19:13:13 +00:00
6456f3fbe2
submodule: update connectedhomeip submodule to commit id 8f943388af See merge request app-frameworks/esp-matter!1404
119 lines
3.5 KiB
Bash
Executable File
119 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
# function to print help message
|
|
print_help() {
|
|
echo "Options:"
|
|
echo " --no-host-tool Disable installation of host tools"
|
|
echo " --no-bootstrap Disable sourcing connectedhomeip's scripts/bootstrap.sh,"
|
|
echo " This can be helpful if there's already present connectedhomeip setup"
|
|
echo " --build-python Build Python environment for running Python test scripts"
|
|
echo " --ninja-jobs Number of jobs to use for ninja (default: $(get_nproc))"
|
|
echo " This is used to build the host tools."
|
|
echo " This can be helpful in case of slow build machines/docker containers,"
|
|
echo " or to speed up the build process on faster machines."
|
|
echo " --help Display this help message"
|
|
}
|
|
|
|
echo_log() {
|
|
echo $@
|
|
echo ""
|
|
}
|
|
|
|
# Get the number of available processing units to optimize build performance
|
|
# It tries nproc -> getconf -> sysctl and defaults to 1 if all fail assuming
|
|
# a single processing unit is available.
|
|
get_nproc() {
|
|
nproc 2>/dev/null \
|
|
|| getconf _NPROCESSORS_ONLN 2>/dev/null \
|
|
|| sysctl -n hw.ncpu 2>/dev/null \
|
|
|| echo 1
|
|
}
|
|
|
|
# Parse command-line arguments
|
|
NO_HOST_TOOL=false
|
|
NO_BOOTSTRAP=false
|
|
BUILD_PYTHON=false
|
|
NINJA_JOBS=$(get_nproc)
|
|
|
|
while [[ "$#" -gt 0 ]]; do
|
|
case $1 in
|
|
--no-host-tool)
|
|
NO_HOST_TOOL=true
|
|
;;
|
|
--no-bootstrap)
|
|
NO_BOOTSTRAP=true
|
|
;;
|
|
--build-python)
|
|
BUILD_PYTHON=true
|
|
;;
|
|
--ninja-jobs)
|
|
NINJA_JOBS=${2:-$(get_nproc)}
|
|
shift
|
|
;;
|
|
--help)
|
|
print_help
|
|
exit 1
|
|
;;
|
|
*)
|
|
print_help
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
basedir=$(dirname "$0")
|
|
ESP_MATTER_PATH=$(cd "${basedir}"; pwd)
|
|
MATTER_PATH=${ESP_MATTER_PATH}/connectedhomeip/connectedhomeip
|
|
export ZAP_INSTALL_PATH=${MATTER_PATH}/.environment/cipd/packages/zap
|
|
|
|
|
|
if [ $NO_BOOTSTRAP = false ]; then
|
|
echo_log "Running Matter Setup"
|
|
cd ${MATTER_PATH}
|
|
source ${MATTER_PATH}/scripts/bootstrap.sh -p all,esp32
|
|
cd ${ESP_MATTER_PATH}
|
|
else
|
|
echo_log "Skipping Matter Setup"
|
|
fi
|
|
|
|
if [ $NO_HOST_TOOL = false ]; then
|
|
echo_log "Building host tools"
|
|
gn --root="${MATTER_PATH}" gen ${MATTER_PATH}/out/host --args='chip_inet_config_enable_ipv4=false'
|
|
ninja -j $NINJA_JOBS -C ${MATTER_PATH}/out/host chip-cert chip-tool
|
|
echo_log "Host tools built at: ${MATTER_PATH}/out/host"
|
|
else
|
|
echo_log "Skip building host tools"
|
|
fi
|
|
|
|
if [ $NO_BOOTSTRAP = false ]; then
|
|
echo_log "Exit Matter environment"
|
|
deactivate
|
|
fi
|
|
|
|
echo_log "Installing python dependencies for Matter"
|
|
|
|
# Install python dependencies based on idf version
|
|
if [[ $(git -C $IDF_PATH describe) == v4.4* ]]; then
|
|
echo_log "Installing requirements from requirements_idf_v4.4.txt"
|
|
python3 -m pip install -r ${ESP_MATTER_PATH}/requirements_idf_v4.4.txt >/dev/null
|
|
else
|
|
echo_log "Installing requirements from requirements.txt"
|
|
python3 -m pip install -r ${ESP_MATTER_PATH}/requirements.txt > /dev/null
|
|
fi
|
|
|
|
if [ $BUILD_PYTHON = true ]; then
|
|
echo_log "Building Python testing environment"
|
|
cd ${MATTER_PATH}
|
|
./scripts/build_python.sh --enable_ble true --chip_detail_logging true -i out/py_env
|
|
if [ $? -ne 0 ]; then
|
|
echo_log "Failed to build Python testing environment"
|
|
fi
|
|
cd ${ESP_MATTER_PATH}
|
|
fi
|
|
|
|
echo_log "All done! You can now run:"
|
|
echo_log " . ${basedir}/export.sh"
|