#!/bin/sh # # i.MX Yocto Project Build Environment Setup Script # # Copyright (C) 2011-2016 Freescale Semiconductor # Copyright 2017, 2019-2024 NXP # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA . sources/meta-imx/tools/setup-utils.sh CWD=`pwd` PROGNAME="setup-environment" exit_message () { echo "To return to this build environment later please run:" echo " source setup-environment " } usage() { echo -e "\nUsage: source imx-setup-release.sh Optional parameters: [-b build-dir] [-h]" echo " * [-b build-dir]: Build directory, if unspecified script uses 'build' as output directory * [-h]: help " } clean_up() { unset CWD BUILD_DIR FSLDISTRO unset fsl_setup_help fsl_setup_error fsl_setup_flag unset usage clean_up unset ARM_DIR META_FSL_BSP_RELEASE exit_message clean_up } # get command line options OLD_OPTIND=$OPTIND unset FSLDISTRO while getopts "k:r:t:b:e:gh" fsl_setup_flag do case $fsl_setup_flag in b) BUILD_DIR="$OPTARG"; echo -e "\n Build directory is " $BUILD_DIR ;; h) fsl_setup_help='true'; ;; \?) fsl_setup_error='true'; ;; esac done shift $((OPTIND-1)) if [ $# -ne 0 ]; then fsl_setup_error=true echo -e "Invalid command line ending: '$@'" fi OPTIND=$OLD_OPTIND if test $fsl_setup_help; then usage && clean_up && return 1 elif test $fsl_setup_error; then clean_up && return 1 fi if [ -z "$DISTRO" ]; then if [ -z "$FSLDISTRO" ]; then FSLDISTRO='fsl-imx-xwayland' fi else FSLDISTRO="$DISTRO" fi if [ -z "$BUILD_DIR" ]; then BUILD_DIR='build' fi if [ -z "$MACHINE" ]; then echo setting to default machine MACHINE='imx6qpsabresd' fi case $MACHINE in imx6*|imx7*) : ok ;; *) case $FSLDISTRO in *wayland) : ok ;; *) echo -e "\n ERROR - Only Wayland distros are supported for $MACHINE" echo -e "\n" return 1 ;; esac ;; esac # Override the click-through in meta-freescale FSL_EULA_FILE=$CWD/sources/meta-imx/LICENSE.txt # Set up the basic yocto environment DISTRO=$FSLDISTRO MACHINE=$MACHINE . ./$PROGNAME $BUILD_DIR # Point to the current directory since the last command changed the directory to $BUILD_DIR BUILD_DIR=. if [ ! -e $BUILD_DIR/conf/local.conf ]; then echo -e "\n ERROR - No build directory is set yet. Run the 'setup-environment' script before running this script to create " $BUILD_DIR echo -e "\n" return 1 fi # On the first script run, backup the local.conf file # Consecutive runs, it restores the backup and changes are appended on this one. if [ ! -e $BUILD_DIR/conf/local.conf.org ]; then cp $BUILD_DIR/conf/local.conf $BUILD_DIR/conf/local.conf.org else cp $BUILD_DIR/conf/local.conf.org $BUILD_DIR/conf/local.conf fi echo >> conf/local.conf echo "# Switch to Debian packaging and include package-management in the image" >> conf/local.conf echo "PACKAGE_CLASSES = \"package_deb\"" >> conf/local.conf echo "EXTRA_IMAGE_FEATURES += \"package-management\"" >> conf/local.conf if [ ! -e $BUILD_DIR/conf/bblayers.conf.org ]; then cp $BUILD_DIR/conf/bblayers.conf $BUILD_DIR/conf/bblayers.conf.org else cp $BUILD_DIR/conf/bblayers.conf.org $BUILD_DIR/conf/bblayers.conf fi META_FSL_BSP_RELEASE="${CWD}/sources/meta-imx/meta-imx-bsp" echo "" >> $BUILD_DIR/conf/bblayers.conf echo "# i.MX Yocto Project Release layers" >> $BUILD_DIR/conf/bblayers.conf hook_in_layer meta-imx/meta-imx-bsp hook_in_layer meta-imx/meta-imx-sdk hook_in_layer meta-imx/meta-imx-ml hook_in_layer meta-imx/meta-imx-v2x hook_in_layer meta-nxp-demo-experience hook_in_layer meta-nxp-connectivity/meta-nxp-matter-baseline hook_in_layer meta-nxp-connectivity/meta-nxp-openthread echo "" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-arm/meta-arm\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-arm/meta-arm-toolchain\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-clang\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-openembedded/meta-gnome\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-openembedded/meta-networking\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-openembedded/meta-filesystems\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-qt6\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-security/meta-parsec\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-security/meta-tpm\"" >> $BUILD_DIR/conf/bblayers.conf echo "BBLAYERS += \"\${BSPDIR}/sources/meta-virtualization\"" >> $BUILD_DIR/conf/bblayers.conf echo BSPDIR=$BSPDIR echo BUILD_DIR=$BUILD_DIR cd $BUILD_DIR clean_up unset FSLDISTRO