105d550ed364d459233874a6dcc1af3c95f195548borenet@google.com# Set up the environment to build Skia for ChromeOS.
205d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
305d550ed364d459233874a6dcc1af3c95f195548borenet@google.comfunction exportVar {
405d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  NAME=$1
505d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  VALUE=$2
605d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  echo export $NAME=\"$VALUE\"
705d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  export $NAME="$VALUE"
805d550ed364d459233874a6dcc1af3c95f195548borenet@google.com}
905d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
1005d550ed364d459233874a6dcc1af3c95f195548borenet@google.comSCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
1105d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
1205d550ed364d459233874a6dcc1af3c95f195548borenet@google.com# Helper function to configure the GYP defines to the appropriate values
1305d550ed364d459233874a6dcc1af3c95f195548borenet@google.com# based on the target device.
1405d550ed364d459233874a6dcc1af3c95f195548borenet@google.comsetup_device() {
1505d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  # Setup the build variation depending on the target device
165ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com  TARGET_DEVICE="${SDK_BOARD}"
1705d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
1805d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  if [ -z "$TARGET_DEVICE" ]; then
195ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com    echo "ERROR: No target device specified!"
205ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com    return 1
2105d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  fi
2205d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
23bc4bed132fd6693e16f8305db211530588095755borenet@google.com  DEFINES="OS=linux host_os=linux skia_os=chromeos skia_gpu=0"
2405d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
2505d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  case $TARGET_DEVICE in
265ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com    x86-alex)
2705d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32"
285ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        GENERIC_BOARD_TYPE="x86-generic"
2905d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        ;;
305ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com    link)
3105d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=64"
325ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        GENERIC_BOARD_TYPE="amd64-generic"
3305d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        ;;
345ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com    daisy)
3505d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 armv7=1 arm_thumb=0 skia_arch_width=32"
365ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        # TODO(borenet): We have to define skia_warnings_as_errors=0 for the arm
375ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        # build, which throws lots of "mangling of va_list has changed" warnings.
385ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        DEFINES="${DEFINES} skia_warnings_as_errors=0"
395ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        GENERIC_BOARD_TYPE="arm-generic"
4005d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        ;;
4105d550ed364d459233874a6dcc1af3c95f195548borenet@google.com    *)
4205d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        echo -n "ERROR: unknown device specified ($TARGET_DEVICE), valid values: "
435ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com        echo "x86-alex link daisy"
4405d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        return 1;
4505d550ed364d459233874a6dcc1af3c95f195548borenet@google.com        ;;
4605d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  esac
4705d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
4805d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  echo "The build is targeting the device: $TARGET_DEVICE"
4905d550ed364d459233874a6dcc1af3c95f195548borenet@google.com
505ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com  exportVar GENERIC_BOARD_TYPE ${GENERIC_BOARD_TYPE}
5105d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  exportVar GYP_DEFINES "$DEFINES"
5258d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com  exportVar GYP_GENERATORS "ninja"
535ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com  exportVar GYP_GENERATOR_FLAGS ""
5405d550ed364d459233874a6dcc1af3c95f195548borenet@google.com  exportVar SKIA_OUT "out/config/chromeos-${TARGET_DEVICE}"
555ec130524e61fe1e2606baab53bc1c2e77287d06borenet@google.com  exportVar builddir_name "."
5605d550ed364d459233874a6dcc1af3c95f195548borenet@google.com}
57