xref: /aosp_15_r20/tools/netsim/scripts/cargo_env.sh (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker#!/bin/bash
2*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2024 The Android Open Source Project
3*cf78ab8cSAndroid Build Coastguard Worker#
4*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*cf78ab8cSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*cf78ab8cSAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*cf78ab8cSAndroid Build Coastguard Worker#
8*cf78ab8cSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*cf78ab8cSAndroid Build Coastguard Worker#
10*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*cf78ab8cSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*cf78ab8cSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*cf78ab8cSAndroid Build Coastguard Worker# limitations under the License.
15*cf78ab8cSAndroid Build Coastguard Worker
16*cf78ab8cSAndroid Build Coastguard Worker# This script sets up the necessary environment variables for Cargo builds.
17*cf78ab8cSAndroid Build Coastguard Worker# It determines the OUT_PATH, sets up CARGO_HOME and library paths,
18*cf78ab8cSAndroid Build Coastguard Worker# and defines paths to prebuilt packet files.
19*cf78ab8cSAndroid Build Coastguard Worker
20*cf78ab8cSAndroid Build Coastguard Worker# Usage: scripts/cargo_env.sh [OUT_PATH]
21*cf78ab8cSAndroid Build Coastguard Worker#   OUT_PATH: Optional. The output directory for build artifacts.
22*cf78ab8cSAndroid Build Coastguard Worker#             Defaults to "tools/netsim/objs" if not specified.
23*cf78ab8cSAndroid Build Coastguard Worker
24*cf78ab8cSAndroid Build Coastguard Worker# Set up necessary env vars for Cargo
25*cf78ab8cSAndroid Build Coastguard Workerfunction setup_cargo_env {
26*cf78ab8cSAndroid Build Coastguard Worker  # Get the directory of the script
27*cf78ab8cSAndroid Build Coastguard Worker  local REPO=$(realpath "$(dirname "${BASH_SOURCE[0]}")/../../..")
28*cf78ab8cSAndroid Build Coastguard Worker
29*cf78ab8cSAndroid Build Coastguard Worker  # Determine the OUT_PATH
30*cf78ab8cSAndroid Build Coastguard Worker  local OUT_PATH="${1:-$REPO/tools/netsim/objs}"
31*cf78ab8cSAndroid Build Coastguard Worker
32*cf78ab8cSAndroid Build Coastguard Worker  # Get OS name (lowercase)
33*cf78ab8cSAndroid Build Coastguard Worker  local OS=$(uname | tr '[:upper:]' '[:lower:]')
34*cf78ab8cSAndroid Build Coastguard Worker
35*cf78ab8cSAndroid Build Coastguard Worker  # Set environment variables
36*cf78ab8cSAndroid Build Coastguard Worker  export CARGO_HOME=$OUT_PATH/rust/.cargo
37*cf78ab8cSAndroid Build Coastguard Worker  export OBJS_PATH=$OUT_PATH
38*cf78ab8cSAndroid Build Coastguard Worker  export GRPCIO_SYS_GRPC_INCLUDE_PATH=$REPO/external/grpc/include
39*cf78ab8cSAndroid Build Coastguard Worker
40*cf78ab8cSAndroid Build Coastguard Worker  # Paths to pdl generated packets files
41*cf78ab8cSAndroid Build Coastguard Worker  local ROOTCANAL_PDL_PATH=$OUT_PATH/rootcanal/pdl_gen
42*cf78ab8cSAndroid Build Coastguard Worker  export LINK_LAYER_PACKETS_PREBUILT=$ROOTCANAL_PDL_PATH/link_layer_packets.rs
43*cf78ab8cSAndroid Build Coastguard Worker  local PDL_PATH=$OUT_PATH/pdl/pdl_gen
44*cf78ab8cSAndroid Build Coastguard Worker  export MAC80211_HWSIM_PACKETS_PREBUILT=$PDL_PATH/mac80211_hwsim_packets.rs
45*cf78ab8cSAndroid Build Coastguard Worker  export IEEE80211_PACKETS_PREBUILT=$PDL_PATH/ieee80211_packets.rs
46*cf78ab8cSAndroid Build Coastguard Worker  export LLC_PACKETS_PREBUILT=$PDL_PATH/llc_packets.rs
47*cf78ab8cSAndroid Build Coastguard Worker  export NETLINK_PACKETS_PREBUILT=$PDL_PATH/netlink_packets.rs
48*cf78ab8cSAndroid Build Coastguard Worker
49*cf78ab8cSAndroid Build Coastguard Worker  # Set library path based on OS
50*cf78ab8cSAndroid Build Coastguard Worker  if [[ "$OS" == "darwin" ]]; then
51*cf78ab8cSAndroid Build Coastguard Worker    export DYLD_FALLBACK_LIBRARY_PATH=$OUT_PATH/lib64
52*cf78ab8cSAndroid Build Coastguard Worker  else
53*cf78ab8cSAndroid Build Coastguard Worker    export LD_LIBRARY_PATH=$OUT_PATH/lib64
54*cf78ab8cSAndroid Build Coastguard Worker  fi
55*cf78ab8cSAndroid Build Coastguard Worker}
56*cf78ab8cSAndroid Build Coastguard Worker
57*cf78ab8cSAndroid Build Coastguard Workersetup_cargo_env "$1"
58