blob: 0c68a96495ea70ec219b3652574549ecd01069ff [file]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
# =============================================================================
# config/environment (Main configuration - loads active configs)
# =============================================================================
# Get config script directory
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")/config"
echo "Loading OP-TEE environment configuration..."
# Validate required environment variables from bootstrap_env
: "${TEACLAVE_TOOLCHAIN_BASE:?TEACLAVE_TOOLCHAIN_BASE must be set - directory where Teaclave toolchain is installed}"
: "${OPTEE_DIR:?OPTEE_DIR must be set - directory where OPTEE will be built}"
: "${OPTEE_OS_DIR:?OPTEE_OS_DIR must be set - directory where OPTEE OS will be built}"
: "${OPTEE_CLIENT_DIR:?OPTEE_CLIENT_DIR must be set - directory where OPTEE Client will be built}"
: "${IMG_DIRECTORY:?IMG_DIRECTORY must be set - directory where images will be stored}"
: "${IMG_NAME:?IMG_NAME must be set - name of the image to download}"
: "${RUSTUP_HOME:?RUSTUP_HOME must be set - directory where rustup is installed}"
: "${CARGO_HOME:?CARGO_HOME must be set - directory where cargo is installed}"
# Set up Rust environment (source cargo/env for PATH)
if [ -f "${CARGO_HOME}/env" ]; then
source ${CARGO_HOME}/env
else
echo "Error: Cargo environment not found at ${CARGO_HOME}/env" >&2
echo "This indicates rustup installation might not be properly done by the docker build routine" >&2
exit 1
fi
# Check if active configurations exist, set defaults if not
if [ ! -f "$SCRIPT_DIR/ta/active" ]; then
echo "No active TA configuration found, setting default to no-std/aarch64"
(cd "$SCRIPT_DIR/ta" && ln -sf "no-std/aarch64" active)
fi
if [ ! -f "$SCRIPT_DIR/host/active" ]; then
echo "No active Host configuration found, setting default to aarch64"
(cd "$SCRIPT_DIR/host" && ln -sf "aarch64" active)
fi
# Load active TA configuration
source "$SCRIPT_DIR/ta/active"
# Load active Host configuration
source "$SCRIPT_DIR/host/active"
# cargo-optee owns CROSS_COMPILE, crate features, and cargo flags.
unset FEATURES CARGO_FLAGS CROSS_COMPILE_TA CROSS_COMPILE_HOST \
CROSS_COMPILE32 CROSS_COMPILE64 RUST_TARGET_PATH
if [ -z "${STD:-}" ]; then
unset __CARGO_TESTS_ONLY_SRC_ROOT
fi
# Validate OP-TEE directories exist
if [ ! -d "$TA_DEV_KIT_DIR" ]; then
echo "Error: TA_DEV_KIT_DIR=$TA_DEV_KIT_DIR does not exist" >&2
exit 1
fi
if [ ! -d "$OPTEE_CLIENT_EXPORT" ]; then
echo "Error: OPTEE_CLIENT_EXPORT=$OPTEE_CLIENT_EXPORT does not exist" >&2
exit 1
fi
# Setup QEMU shared directory
export QEMU_HOST_SHARE_DIR="${TEACLAVE_TOOLCHAIN_BASE}/shared"
if [ -d "$QEMU_HOST_SHARE_DIR" ]; then
echo "QEMU shared directory already exists: $QEMU_HOST_SHARE_DIR"
else
echo "Creating QEMU shared directory: $QEMU_HOST_SHARE_DIR"
mkdir -p "$QEMU_HOST_SHARE_DIR/host"
mkdir -p "$QEMU_HOST_SHARE_DIR/ta"
mkdir -p "$QEMU_HOST_SHARE_DIR/plugin"
fi
# Show configuration summary
echo "=== OP-TEE Environment Configuration ==="
echo "TA: $(readlink "$SCRIPT_DIR/ta/active")"
echo "Host: $(readlink "$SCRIPT_DIR/host/active")"
echo ""
echo "TA Configuration:"
echo " STD: ${STD:-}"
echo " TARGET_TA: $TARGET_TA"
echo " TA_DEV_KIT_DIR: $TA_DEV_KIT_DIR"
echo ""
echo "Host Configuration:"
echo " TARGET_HOST: $TARGET_HOST"
echo " OPTEE_CLIENT_EXPORT: $OPTEE_CLIENT_EXPORT"
echo ""
echo "QEMU Shared Directory: $QEMU_HOST_SHARE_DIR"